第1个回答 2019-11-24
交通信号灯模拟控制系统设计程序流程图nbsp;开始nbsp;↓nbsp;8051初使化nbsp;↓nbsp;四个路口红灯亮nbsp;↓nbsp;东西红灯亮,南北绿灯亮,延时nbsp;↓nbsp;东西红灯亮,南北黄灯闪烁,延时nbsp;↓nbsp;东西绿灯亮,南北红灯亮,延时nbsp;↓nbsp;东西黄灯闪烁,南北红灯亮,延时nbsp;交通信号灯模拟控制系统主程序nbsp;ORGnbsp;0000Hnbsp;SJMPnbsp;A3nbsp;ORGnbsp;0030Hnbsp;A3:nbsp;MOVnbsp;SP,#60Hnbsp;;设栈指针初值nbsp;MOVnbsp;A,nbsp;#24Hnbsp;MOVnbsp;P1,nbsp;Anbsp;SETBnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;SETBnbsp;P3.5nbsp;;全部红灯亮nbsp;MOVnbsp;R4,#00Hnbsp;;显示0秒nbsp;MOVnbsp;R7,#00Hnbsp;;显示0秒nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;;调用子程序nbsp;A2nbsp;:nbsp;MOVnbsp;A,#0CHnbsp;MOVnbsp;P1,Anbsp;SETBnbsp;P3.2nbsp;SETBnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北绿灯nbsp;MOVnbsp;R4,#14Hnbsp;;nbsp;显示20秒nbsp;LOOP2nbsp;:nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;DJNZnbsp;R4,LOOP2nbsp;;判断20秒显示时间到否nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;LOOP8:nbsp;MOVnbsp;R2,#03Hnbsp;;南北黄灯闪3次nbsp;LCALLnbsp;XInbsp;MOVnbsp;R4,#05Hnbsp;;设南北黄灯亮长显示5秒nbsp;SETBnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;A1:nbsp;MOVnbsp;A,#14Hnbsp;MOVnbsp;P1nbsp;,Anbsp;SETBnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北黄灯nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;;调用延时子程序nbsp;MOVnbsp;Anbsp;,#04Hnbsp;MOVnbsp;P1nbsp;,Anbsp;CLRnbsp;P3.4nbsp;CLRnbsp;P3.5nbsp;;东西红灯,南北不亮即意思要南北黄灯闪烁nbsp;MOVnbsp;R2nbsp;,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;DJNZnbsp;R4,LOOP8nbsp;;判断南北黄灯闪烁,显示5秒到否?nbsp;MOVnbsp;A,nbsp;#61Hnbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;SETBnbsp;P3.5nbsp;;东西绿灯,南北红灯nbsp;MOVnbsp;R4,#14Hnbsp;;显示20秒nbsp;LOOP3:nbsp;MOVnbsp;R2,#03Hnbsp;LCALLnbsp;XInbsp;DJNZnbsp;R4,LOOP3nbsp;;判断20秒显示时间到否nbsp;MOVnbsp;R7,#05Hnbsp;;设东西黄灯亮长显示5秒nbsp;SETBnbsp;P3.5nbsp;A0:nbsp;MOVnbsp;A,#0A2Hnbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;;东西黄灯,南北红灯nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;MOVnbsp;A,#20Hnbsp;;nbsp;MOVnbsp;P1,Anbsp;CLRnbsp;P3.2nbsp;CLRnbsp;P3.3nbsp;CLRnbsp;P3.4nbsp;;南北红灯,东西不亮即意思要东西黄灯闪烁nbsp;MOVnbsp;R2,#01Hnbsp;;定时nbsp;LCALLnbsp;DELAYnbsp;DJNZnbsp;R7,A0nbsp;;判断东西黄灯闪烁,显示5秒到否?nbsp;LJMPnbsp;A2nbsp;;循环回状态1,即东西红灯,南北黄灯nbsp;DELAY:nbsp;PUSHnbsp;2nbsp;PUSHnbsp;1nbsp;PUSHnbsp;0nbsp;;进栈nbsp;DELAY1:nbsp;MOVnbsp;1,#00Hnbsp;DELAY2:MOVnbsp;0,#0B2Hnbsp;DJNZnbsp;0,$nbsp;;判断是否运行完0B2Hnbsp;DJNZnbsp;1,DELAY2nbsp;DJNZnbsp;2,DELAY1nbsp;POPnbsp;0nbsp;POPnbsp;1nbsp;POPnbsp;2nbsp;;出栈nbsp;DJNZnbsp;R2nbsp;,DELAYnbsp;;nbsp;判断R2是否运行完nbsp;RETnbsp;;返回主程序nbsp;XI:nbsp;MOVnbsp;A,R4nbsp;MOVnbsp;B,#10nbsp;DIVnbsp;ABnbsp;MOVnbsp;R6,Anbsp;MOVnbsp;DPTR,#TABnbsp;MOVnbsp;A,Bnbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;SBUF,Anbsp;MOVnbsp;R7,#0FHnbsp;H55S:nbsp;DJNZnbsp;R7,H55Snbsp;MOVnbsp;A,R6nbsp;MOVCnbsp;A,@A+DPTRnbsp;MOVnbsp;SBUF,Anbsp;MOVnbsp;R7,#0FHnbsp;H55S1:nbsp;DJNZnbsp;R7,H55S1nbsp;LCALLnbsp;DELAYnbsp;RETnbsp;TAB:DBnbsp;0fch,60h,0dah,0f2h,66h,0b6h,0beh,0e0hnbsp;DBnbsp;0feh,0f6h,0eeh,3eh,9ch,7ah,9eh,8ehnbsp;END