<p>使用AT89C51,红灯20秒,黄灯3秒,绿灯17秒,时间可更改交通灯程序。程序是最简单的一种,可以直接给P1口诵断码,也可以让绿灯闪烁几下在亮黄灯</p> <p>#include<reg51.h></p> <p>#define uchar unsigned char</p> <p>#define uint unsigned int</p> <p>//======1组灯定义======</p> <p>sbit red_1=P1^0;</p> <p>sbit yellow_1=P1^1;</p> <p>sbit green_1=P1^2;</p> <p>//======2组灯定义======</p> <p>sbit red_2=P1^3;</p> <p>sbit yellow_2=P1^4;</p> <p>sbit green_2=P1^5;</p> <p>delay1ms(uint x)</p> <p>{</p> <p> uchar a;</p> <p> while(x--)</p> <p> {</p> <p> for(a=0;a<125;a++);</p> <p> }</p> <p>}</p> <p>main()</p> <p>{P1=0xff;</p> <p> while(1)</p> <p> {//1组亮红灯,2组亮绿灯。延时17秒</p> <p> yellow_1=1; </p> <p> red_2=1;</p> <p> green_1=1;</p> <p> red_1=0;</p> <p> green_2=0;</p> <p> delay1ms(17000);</p> <p> //2组亮黄灯。延时3秒</p> <p> green_2=1;</p> <p> yellow_2=0; </p> <p> delay1ms(3000);</p> <p> //1组亮绿灯,2组亮红灯。延时17秒</p> <p> yellow_2=1; </p> <p> red_1=1;</p> <p> green_2=1;</p> <p> red_2=0;</p> <p> green_1=0;</p> <p> delay1ms(17000);</p> <p> //1组亮黄灯。延时3秒</p> <p> green_1=1;</p> <p> yellow_1=0; </p> <p> delay1ms(3000);</p> <p> }</p> <p>}</p> <p></p>