标题: 51交通灯和 仿真 [打印本页]
作者: 青色 时间: 2020-6-16 22:22
标题: 51交通灯和 仿真
void main()
{
P1=0x21; //刚开始南北的红灯亮,东西的绿灯亮
TMOD=0x01;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256; //初值
EA=1; //打开总中断
ET0=1; //定时器0允许中断
TR0=1; //定时器0开始计时
EX0=1; //外部中断0允许位
IT0=1; //外部中断0触发方式(下降沿)
while(1)
{
if(flag)
{
if(!p)
{
shi1=time1/10; //南北十位
ge1=time1%10; //南北个位
shi2=time2/10; //东西十位
ge2=time2%10; //东西个位
display(ge1,shi1,ge2,shi2); //显示函数
}
if(p)
dis(); //不显示函数
if(key==3) //夜间模式
{
P0=0xff;
q=!q;
if(q!=0)
P1=0x12;
else
P1=0;
delay(200);
}
}
}
void ext0() interrupt 0
{
flag=1;
status=P2;
}
void timer() interrupt1 //定时中断程序
{
TH0=(65535-50000)/256;
TL0=(65535-50000)%256; //重新赋初值
temp++;
if(temp==20) //说明过去了1秒
{
temp=0; //清零,重新加到20
//东西方向南北方向时间自减
time1--;
time2--;
if(time1>time2) //南北大于东西
{
time1=time2+3;
P1=0x21; //南北红灯亮起,东西绿灯亮起
if(time2==0&&time1==3)
{
time2=3; //重新赋南北和东西的差值,与南北方向一起倒计时
P1=0x11; //东西黄灯亮起,东西绿灯关闭
tab=0; //标志位
}
}
if(time1<time2) //南北小于东西
{
time2=time1+3;
P1=0x0c; //南北绿灯亮起,东西红灯亮起
if(time1==0&&time2==3)
{
time1=3; //重新赋南北和东西的差值,与东西方向一起倒计时
P1=0x0a; //南北黄灯亮起,南北绿灯关闭
tab=1; //标志位
}
}
if(!tab) //黄灯闪烁三秒
{
if(time1==2&&time2==2)
P1=0x01;
if(time1==1&&time2==1)
P1=0x11;
}
if(tab)
{
if(time1==2&&time2==2)
P1=0x08;
if(time1==1&&time2==1)
P1=0x0a;
}
if(time1==0&&time2==0&&tab==0) //东西倒计时结束
{
time1=t1;
time2=t1+3;
P1=0x0c; //东西红灯,南北绿灯
}
if(time1==0&&time2==0&&tab==1) //南北倒计时结束
{
time1=t2+3;
time2=t2;
P1=0x21; //南北红灯,东西绿灯
}
}
}
-
-
交通灯-1.zip
11.04 MB, 下载次数: 40, 下载积分: 黑币 -5
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |