楼主用心良苦。让我们练习打代码出来。,不让自己复制
。代码我打好了:
#include <reg52.h>
unsigned char timerl;
sbit ENA=P2^2; //位定义ENA为P1.1, 控制步进电机的使能
sbit DIR=P2^1; //位定义DIR为P1.0口,控制步进电机转向
sbit PWM=P2^0; //位定义PwM为P1.2,用来输出PMw波
void system_Ini()
{
TMOD|= 0x11;
TH1 = 0xfe; //11.0592MHz 0. 5ms定时
TL1 = 0x33;
TR1 = 1; //启动T1定时器
IE =0x8A; //开r0,I1中断,开总中断
}
main()
{
system_Ini(); //调用子函数初始化定时器T1
while (1)
{
if (timerl>10)//原始是10
//此处10很关键,决定这一个脉冲的周期时间,此处o. 5ms*10=5ms
{
timerl=0; //输出占空比为o.7的PwM波
}
if (timerl<3)
{
PWM=0;
}
else
{
PWM=1;
}
}
}
//[ t1 (0.5ms)中断] 中断中做PWM输出1000/ (0. 02ms*250)
//--- 1000/ (0.02ms*250)=200Hz, 也就是1秒中输出200个脉冲
void T1zd (void) interrupt 3 //开定时器1中断
{
TH1 = 0xfe; //11.0592Hz,0. 5ms初始化定时器,让定时器复位继续定时
TL1 = 0x33;
timerl ++;
//计数+1
}
|