先设定8个按键标志位,
再进行按键扫描,开机,关机,暂停,继续四个功能通过短按和长按区分,当检测到按键按下后,将相应的标志位置1,向串行输入口rxd发送命令后再将标志位清零.
按键扫描可以采用定时器中断定时扫描.
按键时间长短控制,当检测到有键按下时暂停定时器,延时判断长短按键,再打开定时器,继续...
按键按下,给一标志位,子函数 通过识别 标志位,判断是否 执行流水。
猜测:又一个受 郭大侠荼毒的孩子!
#includereg51.h
#define uchar unsigned char
sbit key1=P1^0;
sbit key2=P1^1;
sbit key3=P1^2;
uchar led1[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};
uchar led2[]={0xe7,0xdb,0xbd,0x7e};
bit flag;
void delay(uchar a)
{
uchar i;
while(a--)for(i=0;i120;i++);
}
void prog1(void)
{
uchar i;
while(flag)
{
P0=led1[i];
i++;
i%=8;
delay(200);
}
}
void prog2(void)
{
uchar i;
while(flag)
{
P0=led2[i];
i++;
i%=4;
delay(200);
}
}
viud prog3{void)
{
uchar i=7;
while(flag)
{
P0=led1[i];
i--;
if(i7)i=7;
delay(200);
}
}
main()
{
flag=0;
while(1)
{
if(key1==0)
{
flag=0;
while(key1==0);
flag=1;
}
if(key2==0)
{
flag=0;
while(key2==0);
flag=1;
}
if(key3==0)
{
flag=0;
while(key3==0);
flag=1;
}
}
}
单片机多个按键控制多个程序的介绍就聊到这里吧,感谢您花时间阅读,谢谢。
本文标签:单片机多个按键控制多个程序