简单的独立按键控制继电器

来源:互联网 发布:知福茶叶怎么样 编辑:程序博客网 时间:2024/05/17 06:43
/***************************    独立按键控制继电器***************************/#include <reg52.h>#define uchar unsigned charsbit 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++;                            //计秒数}
0 0