#include
#include
#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(Z初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,重复Z初2秒情况
t=0;
break;
default: //如果t与上述数字都不想等,啥也不做,免得干扰继电器状态
break;
}
}
}