简单的独立按键控制继电器
更新:HHH   时间:2023-1-7


/***************************
	独立按键控制继电器
***************************/
#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++;							//计秒数
}


返回开发技术教程...