/*************************** 獨立按鍵控制繼電器 ***************************/ #include <reg52.h> #define uchar unsigned char sbit KEY = P1 ^ 0; sbit RelayEN = P0 ^ 0; //定義繼電器開啓信號 void Timer0Init(); //聲明定時器0初始化函數 void RelayProcess(); //聲明斷電器處理函數 uchar count = 0; //計秒數 void main() //主函數 { RelayEN = 1; //開機時關閉繼電器,否則一上電繼電器有動作; Timer0Init(); RelayProcess(); } void Timer0Init() //定時器初始化函數 { TMOD |= 0x01; //“|”使用多個定時器時不受影響 TH0 = 0xFC; //定時1MS TL0 = 0x67; TR0 = 1; //開啓定時器0 EA = 1; //開啓總中斷 ET0 = 1; //開啓定時器0中斷 } void RelayProcess() //繼電器處理函數 { KEY = 0x01; //讀外部狀態時,先使端口輸出高電平; while (1) { if(!KEY) //判定有無按鍵按下 { if(count >= 20) //判定秒數是否達到20MS,即去抖 { count = 0; if(!KEY) { RelayEN = ~RelayEN;//當按鍵按下時,改變繼電器的狀態 while(!KEY); //等待按鍵釋放; } } } } } void Timer0() interrupt 1 //定時器0中斷函數 { TH0 = 0xFC; //重新賦值給定時器0 TL0 = 0x67; count++; //計秒數 }
簡單的獨立按鍵控制繼電器
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.