/*************************** 獨立按鍵控制繼電器 ***************************/ #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++; //計秒數 }
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。