温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

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

发布时间:2020-09-24 11:58:23 来源:网络 阅读:635 作者:阳子8527 栏目:开发技术
/***************************
	独立按键控制继电器
***************************/
#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++;							//计秒数
}


向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI