51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。
发布网友
发布时间:2022-04-26 15:09
我来回答
共2个回答
热心网友
时间:2023-10-11 02:13
#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
sbit a=P1^4;//a继电器控制端
sbit b=P2^3;//b继电器控制端
sbit c=P2^5;//c继电器控制端
sbit d=P2^7;//d继电器控制端
uint t;
void Init_t0(void) //定时器初始化
{
TMOD=0x01;//定时器0工作于方式1,16位定时器
TH0=0x4C;TL0=0x00; //定时时间50ms
ET0=1;//允许定时器0中断
TR0=1;//定时器0启动
}
void time0_server_(void)interrupt 1 //定时器0中断函数
{
TH0=0x4C;TL0=0x00;//定时时间50ms
t++;//t每50ms加1
}
void main()//主函数
{
Init_t0();
a=0;//初始化,所有继电器释放
b=0;//
c=0;//
d=0;//
t = 0;//计时器从0开始计时
EA = 1;//开启总中断
while(1) //循环
{
switch(t)//以t为参数的分支程序,t每50ms加1
{
case 0://如果t=0(最初2秒),继电器a吸合,其他释放
a = 1;
b = c = d = 0;
break;
case 40://如果t=40(第二个2秒),继电器b吸合,其他释放
b = 1;
a = c = d = 0;
break;
case 80://如果t=80(第三个2秒),继电器c吸合,其他释放
c = 1;
a = b = d = 0;
break;
case 120://如果t=120(第四个2秒),继电器d吸合,其他释放
d = 1;
a = b = c = 0;
break;
case 160://如果t=160(第四个2秒结束),t=0,重复最初2秒情况
t=0;
break;
default://如果t与上述数字都不想等,啥也不做,免得干扰继电器状态
break;
}
}
}
热心网友
时间:2023-10-11 02:13
需要给你写吗追问急需
追答代做的
我id