1.在擁堵情況下,主干道綠燈亮1分鐘(此時(shí)次干道紅燈亮)后,主干道綠燈閃爍5次,綠燈滅,黃燈亮5秒鐘后,紅燈亮,同時(shí)次干道紅燈滅,綠燈亮。次干道綠燈40秒后,綠燈閃爍5次,綠燈滅,黃燈亮5秒鐘后,紅燈亮,同時(shí)次干道紅燈滅,綠燈亮 2.非擁堵時(shí)段,根據(jù)兩個(gè)干道最前車(chē)輛的速度以及距離紅綠燈路口的距離,判斷紅綠燈時(shí)間,盡量?jī)蓚(gè)方向車(chē)道的車(chē)輛均能夠不停車(chē)通過(guò)
根據(jù) p0.0 來(lái)判斷 是否擁堵,根據(jù)p0.1判斷當(dāng)前是東西綠燈還是南北綠燈,第一個(gè)要求能實(shí)現(xiàn),第二個(gè)要求實(shí)現(xiàn)不了 不知道哪里寫(xiě)錯(cuò)了,希望大家能幫忙指出錯(cuò)誤, LED_G1 BIT P1.0 ;東西綠燈 LED_R1 BIT P1.1 ;東西紅燈 LED_Y1 BIT P1.2 ;東西黃燈 LED_G2 BIT P1.3 ;南北綠燈 LED_R2 BIT P1.4 ;南北紅燈 LED_Y2 BIT P1.5 ;南北黃燈 ORG 0000H LJMP START ORG 0100H START: MOV TMOD,#01H ;置T0工作方式1 MOV TH0,#03CH ;置TO定時(shí)初始值50ms MOV TL0,#0B0H SETB TR0 ;啟動(dòng)定時(shí) CLR EA MOV P0,#0FFH MOV P1,#00H JB P0.0,SHUNCHANG LJMP YONGDU SHUNCHANG: MOV R4,#80 ;東西距離 MOV R5,#8 ;速度 MOV R6,#90 ;南北距離 MOV R7,#8 ;速度 JB P0.1,NBLV SJMP DXLV DXLV: SETB LED_G1 SETB LED_R2 SJMP DX NBLV: LCALL STATE4 SJMP DX DX: MOV A,R4 MOV B,R5 DIV AB JNB PSW.2,JW1 SJMP CUN1 CUN1: MOV 20H,A SJMP NB JW1: INC A SJMP CUN1 NB: CLR PSW.2 MOV A,R6 MOV B,R7 DIV AB JNB PSW.2,JW2 SJMP CUN2 CUN2: MOV 21H,A SJMP BJ JW2: INC A SJMP CUN2 BJ: MOV A,20H CJNE A,21H,BUDENG MOV R2,#20 MOV R3,20H BAOCHI: JNB TF0,BAOCHI ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,BAOCHI ;判斷1s到否?未到繼續(xù)狀態(tài)4 MOV R2,#20 DJNZ R3,BAOCHI ;狀態(tài)4維持40s CPL LED_G1 CPL LED_R1 CPL LED_G2 CPL LED_R2 LJMP SHUNCHANG BUDENG: JC DXXL NBXL: MOV R2,#20 MOV R3,21H NBXL1: LCALL STATE4 JNB TF0,NBXL1 ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,NBXL1 ;判斷1s到否?未到繼續(xù)狀態(tài)4 MOV R2,#20 DJNZ R3,NBXL1 LCALL STATE1 LJMP SHUNCHANG DXXL: MOV R2,#20 MOV R3,20H DXXL1: LCALL STATE1 JNB TF0,DXXL1 ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,DXXL1 ;判斷1s到否?未到繼續(xù)狀態(tài)4 MOV R2,#20 DJNZ R3,DXXL1 LCALL STATE4 LJMP SHUNCHANG YONGDU: MOV R2,#20 MOV R3,#60 ;東西綠燈60s WAIT1: LCALL STATE1 ;調(diào)用狀態(tài)1 JNB TF0,WAIT1 ;查詢50ms到否 CLR TF0 MOV TH0,#03CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,WAIT1 ;判斷1s到否?未到繼續(xù)狀態(tài)1 MOV R2,#20 DJNZ R3,WAIT1 ;狀態(tài)1維持60s MOV R2,#5 MOV R3,#5 ;東西綠燈閃5s MOV R4,#4 ;閃爍間隔200ms WAIT2: LCALL STATE2 ;調(diào)用狀態(tài)2 JNB TF0,WAIT2 ;查詢50ms到否 CLR TF0 MOV TH0,#03CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R4,WAIT2 ;判斷200ms到否?未到繼續(xù)狀態(tài)2 CPL LED_G1 MOV R4,#4 ;閃爍間隔200ms DJNZ R2,WAIT2 MOV R2,#5 DJNZ R3,WAIT2 ;狀態(tài)2維持5s MOV R2,#20 MOV R3,#5 ;東西黃燈5s WAIT3: LCALL STATE3 ;調(diào)用狀態(tài)3 JNB TF0,WAIT3 ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,WAIT3 ;判斷1s到否?未到繼續(xù)狀態(tài)3 MOV R2,#20 DJNZ R3,WAIT3 ;狀態(tài)3維持5s MOV R2,#20 MOV R3,#40 ;東西紅燈40s WAIT4: LCALL STATE4 ;調(diào)用狀態(tài)4 JNB TF0,WAIT4 ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,WAIT4 ;判斷1s到否?未到繼續(xù)狀態(tài)4 MOV R2,#20 DJNZ R3,WAIT4 ;狀態(tài)4維持40s MOV R2,#5 MOV R3,#5 ;南北綠燈閃5s MOV R4,#4 ;閃爍間隔200ms WAIT5: LCALL STATE5 ;調(diào)用狀態(tài)5 JNB TF0,WAIT5 ;查詢50ms到否 CLR TF0 MOV TH0,#3CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R4,WAIT5 ;判斷200ms到否?未到繼續(xù)狀態(tài)5 CPL LED_G2 ;南北綠燈閃 MOV R4,#4 DJNZ R2,WAIT5 ;判斷1s到否?未到繼續(xù)狀態(tài)5 MOV R2,#5 DJNZ R3,WAIT5 ;狀態(tài)5維持5s MOV R2,#20 MOV R3,#5 ;黃燈5s WAIT6: LCALL STATE6 ;調(diào)用狀態(tài)6 JNB TF0,WAIT6 ;查詢50ms到否 CLR TF0 MOV TH0,#03CH ;恢復(fù)T0定時(shí)初始值50ms MOV TL0,#0B0H DJNZ R2,WAIT6 ;判斷1s到否?未到繼續(xù)狀態(tài)6 MOV R2,#20 DJNZ R3,WAIT6 ;狀態(tài)6維持5s LJMP YONGDU STATE1: ;狀態(tài)1 SETB LED_G1 ;東西綠燈亮 CLR LED_R1 CLR LED_Y1 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 CLR LED_Y2 RET STATE2: ;狀態(tài)2 CLR LED_R1 CLR LED_Y1 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 CLR LED_Y2 RET STATE3: ;狀態(tài)3 CLR LED_G1 CLR LED_R1 SETB LED_Y1 ;東西黃燈亮 CLR LED_G2 SETB LED_R2 ;南北紅燈亮 CLR LED_Y2 RET STATE4: ;狀態(tài)4 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 CLR LED_Y1 SETB LED_G2 ;南北綠燈亮 CLR LED_R2 CLR LED_Y2 RET STATE5: ;狀態(tài)5 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 CLR LED_Y1
CLR LED_R2 CLR LED_Y2 RET STATE6: ;狀態(tài)6 CLR LED_G1 SETB LED_R1 ;東西紅燈亮 CLR LED_Y1 CLR LED_G2 CLR LED_R2 SETB LED_Y2 ;南北黃燈亮 RET END
|