该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
#include
#define uint unsigned int
sbit k1=P3^4; //启动开关
sbit k2=P3^5; //换向开关
sbit s2=P3^2; //加速按钮
sbit s3=P3^3; //减速按钮
void isr_int0(void);//外部中断0中断服务函数声明
void isr_int1(void);
void zd_t0ist(void);
uint speed,count,r1,i,t,k;
main()
{k=0;
t=0;
r1=0x11 ;
speed=0;
count=1;
TMOD=0x01;
ET0=1;
EA=1;
EX0=1;
EX1=1;
TH0=0xcf;
TL0=0x2c;
for(;;)
{if(k1==0)
{P0=0xff;
P2=0xff;
speed=0;
TR0=0;
}
else
{
if(k2==0)
P0=0xbf;
else P0=0xf9;
if(speed==0)
{P2=0xc0;
TR0=0;
}
else TR0=1;
}
}
}
void isr_int0(void) interrupt 0
{
if(speed<7)
speed=speed+1;
while(s2==0)
{for(i=0;i<10;i++);}
}
void isr_int1(void) interrupt 2
{
if(speed>0)
speed=speed-1;
while(s3==0)
{for(i=0;i<10;i++);}
}
void zd_t0ist(void) interrupt 1
{
TH0=0xd8;
TL0=0xf0;
switch(speed)
{
case 0:P2=0xc0;count=0;break;
case 1:P2=0xf9;count=60;break;
case 2:P2=0xa4;count=40;break;
case 3:P2=0xb0;count=35;break;
case 4:P2=0x99;count=30;break;
case 5:P2=0x92;count=28;break;
case 6:P2=0x82;count=25;break;
case 7:P2=0xf8;count=21;break;
default :break;
}
if(t==0)
t=count;
if(t>0)
t=t-1;
if(k2==0)
{
if(t==0)
{
switch(k)
{
case 0:P1=0x01;break;
case 1:P1=0x02;break;
case 2:P1=0x04;break;
case 3:P1=0x08;break;
default :break;
}
k=k+1;
if(k==4)
k=0;
}
}
else
{
if(t==0)
{
switch(k)
{
case 0:P1=0x08;break;
case 1:P1=0x04;break;
case 2:P1=0x02;break;
case 3:P1=0x01;break;
default :break;
}
k=k+1;
if(k==4)
k=0;
}
}
}