| 恩,书上说抖动时间大约6ms,消抖10ms应该可以了。怎么才算复杂系统呢? 如果我每隔10ms扫描一次键盘,也可以用这个间隔做消抖,感觉上好像“没消抖”
 
 bit   fg_shake;               =0
 bit   fg_scan;                 =0
 
 //中断中,每10ms就fg_scan=1;
 void    main(void)
 {
 -----;
 if(fg_scan==1)
 {
 fg_scan = 0;
 keyscan();
 }
 }
 
 void   keyscan(void)
 {
 if(key_on ==1) //有键按下
 {
 if(fg_shake==1)  //说明过了10ms
 {
 //按键处理
 }
 else   fg_shake=1;
 }
 else   fg_shake =0;
 }
 |