当键盘上有任一按键按下,D11-D18四个一组,间隔1.5秒交替闪烁,闪烁两次后全灭

发布网友 发布时间: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();
}
}

来自:求助得到的回答

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com