簡單的獨立按鍵控制繼電器
阿新 • • 發佈:2018-12-31
/***************************
獨立按鍵控制繼電器
***************************/
#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++; //計秒數
}