无锡矽杰微电子----XC8P9520C MCU之项目开发之问题总结补充

1.按键控制小灯,一共五个档位,发现会有跳档的情况出现。

        重复看了一下写的代码,发现唯有一种可能,那就是误触了。我的按键使用的是锅仔片,使用的应该都知道,这种按键。

        按键检测部分初始是这么执行的:首先按下,这里有个滤波处理,相信大家都是这样做的,然后确认按下了;松手之后就执行调档。我的猜测就是这里有问题,所以我多做了一些处理。

        按下的滤波时间加长,松手之后,再次滤波,此时才被认为是一次有效的按下。

        那么这么写会造成一种什么现象呢?快速按键会感觉到有时候按下无效,但是应该能够解决上述所说的跳档,实际也说了它并不是跳档,而是因为误触。

2.长按按键关机,松手之后有概率重新唤醒。

        长按按键关机,即执行SLEEP命令进入睡眠模式,同时开启引脚电平变化中断用于唤醒睡眠。进入睡眠模式之后,经过多次实验发现有概率会被唤醒。我不知道这是由于按键的硬件原因还是因为9520的处理中断的特殊机制所造成的。

        按键一般是低电平有效,即按下是低电平。猜测是因为按下按键之后关机,松手之后这个从低电平变化为高电平被认为是一次电平变化,然后引起中断,唤醒系统。

        有了上述的猜测,所以我就在中断里边做了一些处理,首先判断标志位是否触发中断,然后再判断是低电平才会去唤醒。

        为什么是低电平呢?是因为上面所说的是上升沿所造成的中断唤醒,低电平的话,只有再次按下才会有低电平出现,即把睡眠之后的松手认为是没用的,给滤掉。

        改写之后并未进行实际验证。

你可能感兴趣的:(学习,单片机)