为讲述方便,1位独立按键控制程序运行,本文指的是本身带消抖的按键,且按键按下为低电平。
有时用1位独立按键控制程序运行2种(及以上)不同方式可用以下两种方案:
第一种:加标志位法,比如通过按键选择程序运行两种不同的程序,则声明2个标志变量,具体见如下:
unsigned char key1Flag,key2Flag;
unsigned char keyCnt=0;
void main()
{
//初始化
//开中断
while(1)
{
if(key1Flag)
{
//添加程序1
}
if(key2Flag)
{
//添加程序2
}
}
}
//按键2选一程序
void exint0() interrupt 0 //INT0中断入口
{
if(keyCnt==0)
{
key1Flag=1;
key2Flag=0;
keyCnt=1;
return;
}
else
{
key1Flag=0;
key2Flag=1;
keyCnt=0;
return;
}
}
此方案的中断函数2个if条件判断语句中必须加return语句。
第二种:不加标志位变量,直接加一个unsignde char 变量,对按键输入计数。
#define SECECTION 3
unsigned char keyCnt=0;
void main()
{
//初始化
//开中断
while(1)
{
if(keyCnt==1)
{
//添加程序1
}
if(keyCnt==2)
{
//添加程序2
}
...
if(keyCnt==SECECTION)
{
//添加程序N
}
}
}
void exint0() interrupt 0 //INT0中断入口
{
keyCnt++;
if(keyCnt>SECECTION) keyCnt=1;
}