连续将key4值通过T0中断一位一位用“或运算“写入char 型变量keybuf中。这与其他地方对不同变量的运算描述不符,请大神们赐教。小弟拜谢。
void Interrupt
timer0() interrupt 1
{ static unsigned char keybuf = 0xFF; //按键扫描缓冲区,保存一段时间内的扫描值
TH0 = 0xF8; TL0 = 0xCD;
keybuf = (keybuf << 1) | KEY4; //只取KEY4为例,缓冲区左移一位,并将当前扫描值移入最低位
if (keybuf == 0x00)
{ //当连续8次扫描值都为0,即16ms内都只检测到按下状态时,可认为按键已按下
KeySta = 0; //按键状态值为按下
}
else if (keybuf == 0xFF)
{ //当连续8次扫描值都为1,即16ms内都只检测到弹起状态时,可认为按键已弹起
KeySta = 1; //按键状态值为弹起
}