向的红灯均亮,则PB7~4为高电平;状态1时,东西绿灯通车,南北红灯,则PB7~4为0011,PC7~0为1100 0000;状态2时,东西绿灯灭,黄灯闪几次,南北红灯亮,则PB7~4为0011,PC7~0为0000 1100(此状态中,黄灯并非一直点亮,所以要设计循环程序来完成黄灯闪烁效果);状态3时,东西红灯亮,南北绿灯亮,则PB7~4为1100,PC7~0为0011 0000;Р状态4时,东西红灯亮,南北绿灯灭,黄灯闪几次,则PB7~4为1100,PC7~0为0000 0011(此状态同状态2相似,黄灯并非一直点亮,也要设计循环程序来完成黄灯闪烁效果)。Р硬件设计:Р硬件电路图Р注释:? PB7~4分别为东西南北红灯? PC7~4分别为东西南北绿灯? PC3~0分别为东西南北黄灯Р软件设计:Р1/4秒钟的设定? 延时方法可以有两种一种是利用MCS-51内部定时器才产生溢出中断来确定1/4秒的时间,另一种是采用软延时的方法。? 假设cpu晶振周期为12MHZ。? 1.查询中断:? 1/4s=250ms=250 000us=4×62 500个机器周期。? 62 500=F424H=1111 0100 0010 0100B? 对(1111 0100 0010 0100B)求补? =0000 1011 1101 1100B=0BDCHР则:TH1=#0BH? TL1=#0DCH? 中断服务子程序如下:? MOV?TH1,#0BH? MOV?TL1,#0DCH? SETB?TR1?LOOP: JBC TF1,LOOP1? SJMP?LOOP?LOOP1: RETР2.软延时? 程序如下:? DELAY:MOV?R0,#0FAH? LOOP MOV?R1,#0FAH? NOP? NOP? DJNZ?R1,LOOP? DJNZ?R0,DELAY? RETР程序设计? 1.程序流程图