基于轮询的方法效率会比较低,在大型的系统中,或者实时性要求比较高的系统中应该慎重使用。而使用中断的编程就更好的实现了按键和cpu的异步工作,可以很好的解决效率问题。不过后面我们可以看到,这也不是最好啊。
不过,基于中断也有总体有两种思路。
1.把按键接到单片机的外部中断口,比如mega48的INT0或者INT0(下面的程序就是这样的接的)。值得高兴的是,mega48提供了PCINT0-23口,可以很方便的检测很多的外部中断。在一个项目中,我就是利用48的这么多中断口来实现对多个电机的状态检测(通,断)。
2.利用单片机的定时器,每隔一定时间(10ms)去检测一下按键的状态,这样的话,可以减少外部中断口的应用。(但是对于像48这样,有这么多外部中断口的芯片。第一种方法也挺好的。)
ok,完毕了。gcc下,proteus检验通过