#include
unsigned char timer1;
sbit DIR = P1^2;//位定义DIR为P1.0口,控制步进电机转向
sbit ENA=P1^1;//位定义ENA为P1.1,控制步进电机的使能
sbit PWM=P1^0;//控制输出脉冲
sbit SS_Step = P3^1;
void Key_scan();
void system_Ini() //调用子函数初始化定时器T1
{
TMOD|=0X11;
TH1= 0Xfe;
TL1 = 0x33;
TR1 = 1;//启动T1定时器
IE = 0X8A;//开T0,T1中断,开总中断
}
main()
{
system_Ini(); //调用子函数初始化定时器 T1
while(1)
{
Key_scan();
}
}
void T1zd(void) interrupt 3 //开定时器1中断
{
TH1 = 0xfe;
TL1 = 0x33;
timer1++;//计数+1
}
void Key_scan()
{
if(SS_Step==0)
{ //按一定步进角度步进,每按下一次转动一定步进角后停止
//delay();
if(SS_Step==0)
{
while(!SS_Step)
{
if (timer1>10) //决定这一个脉冲的周期时间,此处为0.15ms*10=5ms
{
timer1=0;
}
if (timer1<3)
{
PWM=0;
}
else
{
PWM = 1;
}
}
}
}
}