用P2口的P2.0到P2.5六个LED模拟交通灯, 主干道红黄绿灯分别为P2.3,P2.4,P2.5. 次干道红黄绿灯分别为P2.0,P2.1,P2.2. 开始时主干道绿灯,次干道红灯,延时60S 后主干道黄灯,次干道红灯,延时5S后主干道红灯,次干道绿灯, 再延时60S后,主干道红灯,次干道黄灯,5S后返回最初状态,
#include<at89x51.h> unsigned int count; void main(void) { TMOD=0x01; TH0=(65536-50000)/256; TL0=(65536-50000)%256; TR0=1; ET0=1; while(1) { if(TF0==1) { P2_5=0; P2_0=0; count++; if(count==1200) { count=0; P2_5=1; P2_4=0; count++; if(count==100) { count=0; P2_4=1; P2_0=1; P2_3=0; P2_2=0; count++; if(count==1200) { count=0; P2_3=0; P2_1=1; P2_2=1; count++; if(count==100) { TF0=0; TH0=(65536-50000)/256; TL0=(65536-50000)%256; } } } } } } }
大家帮忙看看啊,C 语言学得不好,一直搞不懂, 程序执行到第三个if语句时,就不会往下执行了,直接跳回到了开始,并这个时候有三个灯是亮的,次干道红灯,主干道黄灯和绿灯, 怎么才能让它向下执行而不跳回去呀?? |