扫描法实现按键检测
1. P35 .P36. P37三个引脚上各自并联了1个电容,所以设备在上电的时候,会短暂的导通。也就会出现低电平。 扫描法要判断引脚电平,就会出现误判。时延可以去除掉这个干扰。
2.注意按下按键,循环会不停执行。那样就会不断发生位倒换计算,结果不一定是预期结果。所以要确保按键抬起前,循环没有结束。这个就需要while();来帮忙。
void main(void)
{
P0M0 = 0x00;
P0M1 = 0x00;
P3M0 = 0x00;
P3M1 = 0x00;
LED_RED = 1;
LED_GREEN = 1;
LED_YELLOW = 1;
while(1)
{
if(K1 == 0)
{
delay_ms(10); //时延不能太长,不然要按很久灯才会亮。
if(K1 ==0){ //也不能太短,太短没法拦截抖动
LED_RED = !LED_RED;
}
while(! K1); //按下后K1为0,抬起前while(1); 会不断循环直到抬起,
// 抬起后!K1