DC Motor Control直流电机控制正反转代码

#include
typedef unsigned char uchar;
sbit P1_0=P1^0;
sbit P1_1=P1^1;
sbit KEY1 = P1^2;
sbit KEY2 = P1^3;
uchar time=0;
uchar period=15;
uchar high=2;
void KEY_CHECK(void);
void delay(void);
/*void timer0() interrupt 1 using 1
{
TH0=0xFF; //定时器初值重装载
TL0=0xF7;
time++;
if(time==high) //高电平持续时间结束,变低
{ P1_0=0;}
else if(time==period) //周期时间到,变高
{ time=0;
P1_0=1;
}
}
*/
void timer0() interrupt 1 using 1
{
TH0=0xFF; /*定时器初值重装载*/
TL0=0xF7;
time++;

}
void KEY_CHECK(void)
{
// if(KEY1==0)
//delay();
if(KEY1==0)
{
P1_1=0;
time=0;
if(time==high) //高电平持续时间结束,变低
{
P1_0=0;

}
else if(time==period) //周期时间到,变高
{ time=0;
P1_0=1;
}
}
else P1_1=1;
//if(KEY2==0)
//delay();
if(KEY2==0)
{
P1_0=0;
time=0;
if(time==high) //高电平持续时间结束,变低
{
P1_1=0;

}
else if(time==period) //周期时间到,变高
{ time=0;
P1_1=1;
}
}
else P1_0=1;
}

void delay(void)//延时程序
{
uchar m,n;
for(m=20;m>0;m--);
for(n=20;n>0;n--);
}
void main()
{
TMOD=0x01; /*定时器0方式1*/
TH0=0xFF; /*定时器装载初值*/
TL0=0xF7;
EA=1; /*开CPU中断*/
ET0=1; /*开定时器0中断*/
TR0=1;/*启动定时器0*/
while(1) /*等待中断*/
{
KEY_CHECK();
}
}

相关文档
最新文档