您的位置 首页 被动

STC89C52单片机直流电机调试

实现功能:配置定时器1,让其每隔1毫秒产生一次中断,通过

/////////////////////////////////////////////////////////////////////////

完结功用: 装备定时器1,让其每隔1毫秒发生一次中止,经过对中止的次数的计算,
让界说的P2口的第0个引脚发生占空比为70%的PWM,经过它来驱动直流
电机
试验板类型:BS-XYD-C52
试验称号:直流电机测验试验
编写人: 谢应东
编写日期: 2012-4-30
/////////////////////////////////////////////////////////////////////////
#include

#define uchar unsigned char
#define uint unsigned int

#define FOSC 12000000L
#define TIMS (65535-FOSC/12/1000) //在12T形式下定时器中止1秒的计算方法

uchar cCount; //界说定时器中止的次数,依次为依据发生PWM

sbit PWM=P2^0; //界说直流电机相连的引脚为PWM
/////////////////////////////////////////////////////////////////////////
函数称号:毫秒延时函数
函数功用:完结毫秒级的延时
参数介绍:Delay_MS: 界说需求延时的毫秒的数值
iNumber: 记载Delay_MS的数值,以for句子完结所要求的延时
iValue: 要延时毫秒所要进行的循环数值,本数值为实践测得
返回值:
注意事项:本试验是在所用晶振为12M的前提下完结的毫秒延时,本函数是经过循环的形
式完结,所以假如改动了晶振的频率,请做相应的改动
/////////////////////////////////////////////////////////////////////////
void DelayMs(uint Delay_MS)
{
uint iNumber,iValue;
for(iNumber=0;iNumber{
iValue=107;
while(iValue–);
}
}
/////////////////////////////////////////////////////////////////////////
函数称号:Init_System
函数功用:装备定时器,让其发生每1毫秒发生一次中止,以此为依据生成相应的PWM
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////

void Init_System()
{
DelayMs(50); //安稳体系
TMOD|= 0x10; //设置定时器1为形式1(16bit)
//PWM
TL1 = TIMS; //给定时器1低字节寄存器赋初值
TH1 = TIMS>>8; //给定时器1高字节寄存器赋初值
TR1 = 1; //让定时器1开端作业
ET1=1; //翻开定时器1的中止答应位
EA=1; //答应大局中止

cCount=0; //给大局变量赋初值
}
/////////////////////////////////////////////////////////////////////////
函数称号:main
函数功用:让界说的P2口的第0个引脚发生PWM,发生占空比为70%的PWM
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////
void main()
{
Init_System(); //体系初始化函数
while(1)
{
if(cCount>100) //界说cCount的上限
cCount=0;
if(cCount<30) //界说占空比
PWM=0;
else PWM=1;
}
}
/////////////////////////////////////////////////////////////////////////
函数称号:Timer1_Routine
函数功用:定时器1中止服务函数,完结从头给定时器赋值,改动计数变量的值
参数介绍:无
返回值:
注意事项:无
/////////////////////////////////////////////////////////////////////////

void Timer1_Routine(void) interrupt 3
{
TL1 = TIMS; //从头给定时器1的低字节寄存器赋值
TH1 = TIMS>>8; //从头给定时器1的高字节寄存器赋值
cCount++; //
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/ziliao/beidong/262855.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部