其实你开启了单片机16位定时器,
来判断按键的中断的话,
就不需要在调用什么延时程序(函数)了。
方法很简单,
只要判断中断的次数就行了。
因为只要开启了定时器中断,
它每隔固定的时间就会响应中断,
在每次中断中先判断按键是否按下
然后判断 是否是按键按下的首次中断
如果是第一次中断的话,就跳出中断,继续等待第二次中断,判断按键是否依然按下;
如果是第二次中断的话,按键还是按下的话就确定是按键按下了;
反之则按键没有按下,这样就实现了延时去抖动,也就不需要调用什么延时程序了。
系统执行起来比较高效率。
如果按照一楼的老兄所言,这样的延时程序有何意义?
在中断中调用延时程序,
还不如不启用定时器!
希望引起大家的思考
希望大家能仔细的看书本
有关按键识别的问题如何做才是最高效率的。
(大家可以做实验来验证一下,或者是问你们的老师)
a,延时去抖动;
b,开启定时器中断,周期性扫描按键;
c,采用外部中断,多个按键使用多输入的与(非)门共用这一资源,在外部中断中去判断究竟是哪个按键按下。
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
只要你把这些都设置了 单片机就自动运行定时器了 差一个都不行
去抖动就是检测到有按键的时候调延时程序:
TMOD=0x11;//设置定时器0为工作方式1
TH0=(65536-10000)/256;
TL0=(65536-10000)%256;
EA=1;//开总中断
ET0=1;//开定时器0中断
TR0=1;//启动定时器0
只要你把这些都设置了 单片机就自动运行定时器了 差一个都不行
参考资料: ★★★甲壳虫论坛★★★