#include<reg51.h>
unsigned char index=0
int n=0,n0=211;
unsigned char flag=0,step=0;
/*******************主程序*******************/
main()
{
P3=0xff;
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x01;
TR0=1;
TH0=-1000/256;
TL0=-1000%256;
while(1)
{
if(P0=0xfe)
{
n0=70;
P2=1;
}
if(P0=0xfd)
{
n0=90;
P2=2;
}
if(P0=0xfe)
{
n0=110;
P2=3;
}
if(P0=0xfe)
{
n0=150;
P2=4;
}
}
}
/***************外部中断0子程序**************/
void int0() interrupt 0
{
step++;
if(step>=2)
step=0;
}
/*************外部中断1子程序*************/
void int1() interrupt 2
{
flag++;
if(flag==2)
flag=0;
}
/*****************定时中断0子程序*****************/
void time() interrupt 1
{
TH0=-1000/256;
TL0=-1000%256;
if(step==1)
{
if(n>=n0)
{
if(flag==0)
{
switch(index)
{
case 0:P1=0x03;
break;
case 1:P1=0x06;
break;
case 2:P1=0x0c;
break;
case 3:P1=0x09;
break;
}
index++;
if(index==4)
index=0;
n=0;
}
if(flag==1)
{
switch(index)
{
case 0:P1=0x09;
break;
case 1:P1=0x0c;
break;
case 2:P1=0x06;
break;
case 3:P1=0x03;
break;
}
index++;
if(index==4)
n=0;
}
else
n=0;
}
n++;
}
else n=0;
}
unsigned char index=0
int n=0,n0=211;
unsigned char flag=0,step=0;
/*******************主程序*******************/
main()
{
P3=0xff;
EA=1;
EX0=1;
EX1=1;
IT0=1;
IT1=1;
TMOD=0x01;
TR0=1;
TH0=-1000/256;
TL0=-1000%256;
while(1)
{
if(P0=0xfe)
{
n0=70;
P2=1;
}
if(P0=0xfd)
{
n0=90;
P2=2;
}
if(P0=0xfe)
{
n0=110;
P2=3;
}
if(P0=0xfe)
{
n0=150;
P2=4;
}
}
}
/***************外部中断0子程序**************/
void int0() interrupt 0
{
step++;
if(step>=2)
step=0;
}
/*************外部中断1子程序*************/
void int1() interrupt 2
{
flag++;
if(flag==2)
flag=0;
}
/*****************定时中断0子程序*****************/
void time() interrupt 1
{
TH0=-1000/256;
TL0=-1000%256;
if(step==1)
{
if(n>=n0)
{
if(flag==0)
{
switch(index)
{
case 0:P1=0x03;
break;
case 1:P1=0x06;
break;
case 2:P1=0x0c;
break;
case 3:P1=0x09;
break;
}
index++;
if(index==4)
index=0;
n=0;
}
if(flag==1)
{
switch(index)
{
case 0:P1=0x09;
break;
case 1:P1=0x0c;
break;
case 2:P1=0x06;
break;
case 3:P1=0x03;
break;
}
index++;
if(index==4)
n=0;
}
else
n=0;
}
n++;
}
else n=0;
}