这个中断响应里面有个while(!key);
这样不按键就会吊死。
我的那个新型时钟的帖子,里面有单按键长短识别的内容。原理是每10ms左右采样一次key,然后存在一个unsigned long 变量里面,采样一次左移一位。全为0就有320ms,短按键可得到key_up的信号。
然后,根据按键的情况,变换你的主程序的状态。比如,主程序有10个状态,短按键一次就步进一次,到末尾再循环。主程序在while(1)循环里面根据不同的状态值,进入不同的显示处理等进程。最后,显示部分也不能与主程序或者按键处理挂钩,要用独立的中断始终循环进行。