1. 程式人生 > >簡單的獨立按鍵控制繼電器

簡單的獨立按鍵控制繼電器

/***************************
    獨立按鍵控制繼電器
***************************/
#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++; //計秒數 }