ORG 0000HLJMP STARSTAR:MOV P1,#00HMOV P0,#0FFHMOV P3,#00Hsetb p1.6L1:CLR P1.7JB P1.0 , WAN ;;判断方式转换;;MOV P3,#00H ;;P3口清零SETB P3.2 ;;主干绿灯SETB P3.3 ;;次道红灯MOV 31H,#03CH ;;付初值60秒MOV R4,#03CHL2 :CALL DIS1 ;;调用显示CALL YSclr p1.6DEC R4 ;;减一DJNZ 31H,L2 ;;判断是否计数完成CLR P3.2 ;;主黄灯亮CLR P3.3SETB P3.1mov 32H,#05HMOV R4 ,#05HL3:setb p3.3CALL DIS1 ;;调用显示CALL YSDEC R4CLR p3.3DJNZ 32H,L3CLR P3.1CLR P3.4SETB P3.0SETB P3.5mov 33H ,#020H ;;主干红灯 次道绿灯20秒MOV R4,#02DHsetb p1.6L4 :CALL DIS1CALL YSclr p1.6DEC R4DJNZ 33H,L4CLR P3.2 ;;次道黄灯亮5秒钟CLR P3.5setb p3.4mov 34h,#05hMOV R4 ,#05HL8:setb p3.0CALL DIS1CALL YSclr p3.0CALL DIS1CALL YSsetb p3.0clr p3.0DEC R4DJNZ 34H,L8LJMP L1RET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;wan:SETB P1.7JB P1.0 , L1 ;;判断方式转换MOV P3,#00H ;;P3口清零SETB P3.2 ;;主干绿灯SETB P3.3 ;;次道红灯MOV 31H,#040D ;;付初值60秒MOV R4,#040DL12 :CALL DIS1 ;;调用显示CALL YSDEC R4 ;;减一DJNZ 31H,L12 ;;判断是否计数完成CLR P3.2 ;;主黄灯亮CLR P3.3SETB P3.1mov 32H,#05HMOV R4 ,#05HL13: CALL DIS1CALL YSsetb p3.3CALL DIS1CALL YSDEC R4CLR p3.3DJNZ 32H,L13CLR P3.1CLR P3.4SETB P3.0SETB P3.5mov 33H ,#010H ;;主干红灯 次道绿灯20秒MOV R4,#010HL14 :CALL DIS1CALL YSCALL DIS1DEC R4DJNZ 33H,L14CLR P3.2 ;;次道黄灯亮5秒钟CLR P3.5setb p3.4mov 34h,#05hMOV R4 ,#05HL18:setb p3.0CALL DIS1CALL YSclr p3.0CALL DIS1CALL YSsetb p3.0clr p3.0DEC R4DJNZ 34H,L18LJMP WANRET;;;;;;;;;;;;;;;;;;;;;;;;;;;;;YS: MOV 72H,#80DLOOP3:MOV 71H,#100DLOOP1:MOV 70H,#22DLOOP0:DJNZ 70H,LOOP0DJNZ 71H,LOOP1MOV 70H,#46DLOOP2:DJNZ 70H,LOOP2DJNZ 72H,LOOP3MOV 70H,#48DLOOP4:DJNZ 70H,LOOP4RETDis1: mov A,r4mov B,#10Ddiv ABlcall SEG7CLR P2.0mov P0,Alcall DLYmov A,Blcall SEG7SETB P2.0mov P0,Alcall DLYRETSEG7: MOV DPTR,#TABmovc A,@A+DPTRRETTAB:DB 03FH,006H,05BH,04FH,066HDB 06DH,07DH,007H, 07FH,06FhDLY:mov R7,#2DD1: mov R6,#249DDJNZ R6,$DJNZ R7,D1RET