51单片机控制继电器的程序看不太懂,希望大神在每句后面注解一下。

#include<reg52.h>
#include <intrins.h>
#define uint unsigned int
sbit a=P1^4;//
sbit b=P2^3;//
sbit c=P2^5;//
sbit d=P2^7;//
uint t;
void Init_t0(void) //定时器初始化
{
TMOD=0x01;
TH0=0x4C;TL0=0x00; //50ms
ET0=1;
TR0=1;
}
void time0_server_(void)interrupt 1
{
TH0=0x4C;TL0=0x00;
t++;
}
void main()
{
Init_t0();
a=0;//
b=0;//
c=0;//
d=0;//
t = 0;
EA = 1;
while(1) //循环
{
switch(t)
{
case 0:
a = 1;
b = c = d = 0;
break;
case 40:
b = 1;
a = c = d = 0;
break;
case 80:
c = 1;
a = b = d = 0;
break;
case 120:
d = 1;
a = b = c = 0;
break;
case 160:
t=0;
break;
default:
break;

}
}
}

#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;

}
}
}
温馨提示:答案为网友推荐,仅供参考
第1个回答  2015-05-17
需要给你写吗追问

急需

追答

代做的
我id

相似回答