我想用学习版上一个按键控制数码管显示,第一次按,数码管开始计数,第二次按,数码管停在那,第三次按接着往下计数,以此类推。我设想是奇数次按下,数码管计数,偶数次按下让它到外部中断中。该怎么写程序呢?急求!
谢谢你高手,我现在用你的思路写了下,但现在是我按着不放的时候,数码管一直走,一松手就停了,再按接着走,一松手就停,我该怎样在修改呢?
追答因为你没有对按键做松手检测
sbit P32=P3^2;
void WW() interrupt 0
{
sign=~sign;
while(!P32); // INIT0松手检测 现在做普通IO口使用
//(我是这么写的,不知道还有没有其它对 INIT0的松手检测)
Delay(100); // 延时 (我用100ms)
}
按键扫描怎么用啊?举个小例子,写几句程序,高手。
追答按键扫描程序太多了,方式也很多,像你这种最简单的方式是直接在主程序里循环扫描,连续读到几次连接IO口状态都是相同时,认为按键有效就行了。然后你再根据按键次数进行处理
追问键盘扫描貌似不行,还得用外部中断。要不按键信号不能及时被采集,有些按下都是无效的。
追答呵呵,按键扫描都是放在定时中断里的,一般的系统都会设置一个定时器吧,1ms或5ms的定时中断,那样去读按键是没有问题的,不过去抖时间你自己可以多试试