发布网友 发布时间:2022-04-24 09:27
共1个回答
热心网友 时间:2023-10-09 10:10
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
sbit k1=P2^0;
sbit k2=P2^1;
sbit k3=P2^2;
uchar cnt;
uchar num;
uchar mode;
uchar led1=0x0f;
uchar led2=0xfe;
void t0isr() interrupt 1
{
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
switch(mode)
{
case 1:
if(num>4)break;
cnt++;
if(cnt>=30)
{
cnt=0;
P1=led1;
led1=~led1;
num++;
if(num>4)num=5;
}
break;
case 2:
cnt++;
if(cnt>4)
{
cnt=0;
P1=led2;
led2=_crol_(led2,1);
}
break;
case 3:
cnt++;
if(cnt>=40)
{
P1=led1;
led1=~led1;
}
default:break;
}
}
uchar keychk(void)
{
if((k1&k2)||(k1&k3)||(k2&k3)){cnt=0;num=0;return(1);}
else if(k1==0 && k2==0){cnt=0;return(2);}
else if(k1==0 && k3==0){cnt=0;return(3);}
else return(0);
}
main()
{
TMOD=0x01;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
ET0=1;
EA=1;
while(1)
{
mode=keychk();
}
}
来自:求助得到的回答