- #include "STC15.h"
- unsigned char key_ms = 0; //按鍵按住時(shí)間毫秒 最大255 按住+1,松開(kāi)清0
- sbit skey = P3^ 2; //按鍵,低電平按下 (未消抖)
- bit key; //按鍵,低電平按下 (已消抖)
- sbit led = P3^3; //LED,低電平點(diǎn)亮
- void InitTimer0() {
- TMOD = 0x01;
- TH0 = 0x0FC;
- TL0 = 0x18;
- EA = 1;
- ET0 = 1;
- TR0 = 1;
- }
- void main(){
- InitTimer0();
- while(1){
- if(!key){
- led = !led;
- while(!key);
- }
- }
- }
- void Timer0Interrupt() interrupt 1 { //12Mhz@1ms 定時(shí)器中斷
- TH0 = 0xFC;
- TL0 = 0x18;
- if(skey){ //按鍵松開(kāi)
- key_ms = 0; //松開(kāi)清0
- } else { //按鍵按下
- if(key_ms != 0xFF){ //沒(méi)加滿
- key_ms++; //按住+1
- }
- }
- key = !(key_ms >= 25); //25毫秒消抖,脈沖干擾需小于25毫秒
- }
復(fù)制代碼 |