我有一块单片机实验板和附加的演示程序。最近我想根据演示程序中的一个电子计时程序设计一个产品,我仔细研究了这个程序,觉得程序中的键盘扫描模块可能有点问题,想向大家请教:
main:
.
.
.
clr tr0
.
.
.
clock:
.
.
.
jb p3.5 scankeys-next4
lcall stopclock
scankeys-next4:
ajmp clock
.
.
.
stopclock:
cpl tr0
mov p1,#0ffh(清屏幕)
lcall delay(0.15秒左右的延时程序)
ret
end
程序原来的设计意图应该是:程序启动后,首先关闭tr0,然后在主程序之间来回扫描,一旦发现p3.5键被按下了,就去执行cpl tr0,启动定时器计数,如果在计数过程中又发现p3.5键被按下了,再执行cpl tr0, 暂停定时器计数。
现在的问题是:如果p3.5键被按下的时间稍微长一点,那么就有可能被多次扫描到,p3.5键释放后,tr0就处于不确定状态。请问是不是存在这个问题?有没有什么好的解决方法?