通过控制两个继电器循环工作状态,模拟洗衣机间歇正反转。设定正转3s,停止2s,然后反转3s,停止2s,循环上述动作。求代码和proteus仿真图。
#include "reg52.h"
sbit LED1 = P1^0;
sbit LED2 = P1^1;
unsigned char Js=0;//中断计时
unsigned char Mo=0;//秒
void ZhongDuanSheZhi()
{
TH0+=0X4c;/*定时器赋初值,定时50ms触发中断,自动补偿方式*/
TL0+=0X00;
TMOD=0X01;
TR0=1;
ET0=1; //开启定时器
EA=1; //全局中断开关
}
void JiShi(/*时间计算*/)
{
if(Js>=20)
{
if(++Mo>=60) Mo=0;
Js=0;
}
}
void ZhongDuan() interrupt 1
{
++Js;
TH0+=0X4c;
TL0+=0X00;
}
void main()
{
ZhongDuanSheZhi();
LED1=1;LED2=0;
while(1)
{
JiShi();
if(Mo==3){LED1=LED2=0;}
else if(Mo==5){LED1=0;LED2=1;}
else if(Mo==8){LED1=LED2=0;}
else if(Mo==10){LED1=1;LED2=0;Mo=0;}
}
}