多个按键输入(2个以上,即使用普通IO口实现中断),程式如何采用中断方式实现,...
--------
51单片机,有两个外部中断输入端,它们也算是普通IO口。
外部中断,应该用于处理一些突发事件,需要单片机紧急处理的事件。
按键,不能算是需要紧急处理的事件。
对普通按键进行处理,还需要延时消抖,等待按键释放等环节,时间上,没有紧迫的要求。
用外部中断,来处理按键,就是自寻烦恼。
可以到我的 百度空间 看看,里面有很多用普通IO口连接按键的处理方法。
当按键按第一次时间,进入第一层循环查询语句内部,执行恢复。不跳出该层循环,继续查询按键。当第二次按下时间,进入第二层循环查询语句内部,执行暂停。循环结束。若想反复暂停和恢复,就在外面再加一层while(1)类似的死循环,反复执行其内部的两层循环查询语句。 2.用一个标志变量,记住按键的状态。初始化为个值,如“暂停”,按键之后检查标志变量,是“暂停”就执行“恢复”,再让它变为“恢复”说明当前已经执行了恢复。反之亦然。 3.掉电暂停。这样需要按键能触发cpu工作。所以,需要按键接到外部中断上面。中断后可以恢复CPU工作。在中断中再判断是否要让cpu掉电与否。 不知道这种方法你能接受不?还是用外部中断。此按键触发中断后,关掉所有其他的中断,也即EA=0(最好先用个变量记住EA,方便恢复),然后就一直在中断中等待该按键第二次按下再恢复EA,最后退出中断。