標題: 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
2020-6-16 22:22 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
11.04 MB, 下載次數: 40, 下載積分: 黑幣 -5
| 歡迎光臨 (http://www.raoushi.com/bbs/) |
Powered by Discuz! X3.1 |