//需要声明的变量
bit Switch=1; //开关机标志位
unsigned char num=0; //需要+-控制的变量
//此按键程序适合放在主程序中运行
void key_scan()
{
static bit key1_sign=0,key2_sign=0,key3_sign=0; //按键自锁标志
static unsigned char count1=0,count2=0,count3=0;//消抖计数变量
if(key1==0) //检测按键1如果按下为0
{
count1++; //消抖计数
if(count1>=200) //消抖延时
{
count1=200; //防止溢出
if(key1_sign==0) //按键自锁志为0
{
key1_sign=1; //按键自锁志置1
Switch=~Switch; //开关机标志位取反
if(Switch==0) //如果开关机标志位为0
{
//需要控制的内容
}
else
{
//需要控制的内容
}
}
}
}
else
{
key1_sign=0; //按键自锁标志清0
count1=0; //消抖计数清0
}
if(!key2&(!key2^Switch)) //检测按键2如果按下为0,开关机标志位为0
{
count2++; //消抖计数
if(count2>=200) //消抖延时
{
count2=200; //防止溢出
if(key2_sign==0) //按键自锁标志为0
{
key2_sign=1; //按键自锁标志置1
if(num<8) //设置上限
num++;
//其他需要控制的内容
}
}
}
else
{
key2_sign=0; //按键自锁标志清0
count2=0; //消抖计数清0
}
if(!key3&(!key3^Switch)) //检测按键3如果按下为0,开关机标志位为0
{
count3++; //消抖计数
if(count3>=200) //消抖延时
{
count3=200; //防止溢出
if(key3_sign==0) //按键自锁标志为0
{
key3_sign=1; //按键自锁标志置1
if(num>0) //设置下限
num--;
//其他需要控制的内容
}
}
}
else
{
key3_sign=0; //按键自锁标志清0
count3=0; //消抖计数清0
}
}
//需要声明的变量
bit Switch=1; //开关机标志位
unsigned char num=0; //需要+-控制的变量
//此按键程序适合放在主程序中运行
void key_scan()
{
static bit key1_sign=0,key2_sign=0,key3_sign=0; //按键自锁标志
static unsigned char count1=0,count2=0,count3=0;//消抖计数变量
if(key1==0) //检测按键1如果按下为0
{
count1++; //消抖计数
if(count1>=200) //消抖延时
{
count1=200; //防止溢出
if(key1_sign==0) //按键自锁志为0
{
key1_sign=1; //按键自锁志置1
Switch=~Switch; //开关机标志位取反
if(Switch==0) //如果开关机标志位为0
{
//需要控制的内容
}
else
{
//需要控制的内容
}
}
}
}
else
{
key1_sign=0; //按键自锁标志清0
count1=0; //消抖计数清0
}
if(!key2&(!key2^Switch)) //检测按键2如果按下为0,开关机标志位为0
{
count2++; //消抖计数
if(count2>=200) //消抖延时
{
count2=200; //防止溢出
if(key2_sign==0) //按键自锁标志为0
{
key2_sign=1; //按键自锁标志置1
if(num<8) //设置上限
num++;
//其他需要控制的内容
}
}
}
else
{
key2_sign=0; //按键自锁标志清0
count2=0; //消抖计数清0
}
if(!key3&(!key3^Switch)) //检测按键3如果按下为0,开关机标志位为0
{
count3++; //消抖计数
if(count3>=200) //消抖延时
{
count3=200; //防止溢出
if(key3_sign==0) //按键自锁标志为0
{
key3_sign=1; //按键自锁标志置1
if(num>0) //设置下限
num--;
//其他需要控制的内容
}
}
}
else
{
key3_sign=0; //按键自锁标志清0
count3=0; //消抖计数清0
}
}
举报