简单记录一下(#/。\#)。
单片机: STC89C52
开发板: HC6800-MS


程序
#include<reg51.h>
sbit K5=P3^5; sbit D8=P2^7;
void Delay10ms() { unsigned char i,j; i=20; j=113; do { while(--j); } while(--i); }
void main() { int Key=0; while(1) { if(K5==0&&Key==0) { Delay10ms(); Key=1; if(K5==0) { D8=~D8; } } else if(K5==1) { Key=0; } } }
|
运行结果
按下独立按键K5
,LEDD8
亮;再次按下K5
,D8
灭。
说明
开发板上的按键由于机械触点的弹性作用,当按下按键时机械触点并不会立刻稳定闭合,松开按键时机械触点也不会立刻稳定断开,因此在按下或松开按键的瞬间(在大约10ms内)电位会有一定的波动(或者叫做抖动);软件消抖就是当检测到按键状态发生变化后,先延时大约10ms待电位稳定后,再进行一次检测,如果仍然保持闭合状态的电位,则确认为按键真正被按下。