ORG 0000H
LJMP MAIN
ORG 0003H L.JMP TO_ INT ORG 0013H
MOV IE, #8EH MOV TMOD,#51H MOV TH1, #0OH MOV TL1, #00H
SETB TR1 SETB EX1 SETB IT1 MOV DPTR,#0003H
MOV A,#80H MOVX @DPTR, A
AGAIN: JB P3.1,NO MOV A,P1
JB P1.7,RED MOV RO, #00H
MOV RO,A MOV R3,A
LCALL DISP1 LCALL DELAY AJMP AGAIN RED: MOV A,P1
ANL A,#7FH MOV R7, #00H
10V R7,A
LCALL DISP1 LCALL DELAY AJMP AGAIN
NO: SETB TRO MOV 76H,R7
NOO: MOV A, 76H MOV R3,A
MOV DPTR, 0000H MOV A, #ODDH MOVX @DPTR, A N01: JB P2.0, B0 N02: SETB P3. 0 CJNE R3, #0OH, N01; 比较R3中的值是否为0,不为0转到当前指令处执行黄灯闪烁5秒程序------ N1:SETBP3.0 MOV R3, #05H MOV DPTR, #0000H;置8255A 口, 东西,南北方向黄灯亮 MOV A, #0D4H MOVX @DPTR, A N1l: MOV R4, #00H N12: CJNE R4, #7DH,$;黄灯持续亮0.5秒 N13: MOV DPTR, #0000H; 置8255A口,南北方向黄灯灭 MOV A, #0DDH MOVX @DPTR, A N14: MOV R4, #00H CJNE R4,#7DH,$; 黄灯持续灭0.5秒 CJNE R3, #00H,N1;闪烁时间达5秒则退出;
N2: MOV R7, #00H
MOV A,RO;东西通行,南北禁止 MOV R3, A
MOV DPTR, #0000H;置8255A口,东西方向绿灯亮,南北方向红灯亮
MOV A, #OEBH MOVX @DPTR,A
N21: JB P2.0,T03
N22: CJNE R3, #0OH,N21
;黄灯闪烁5秒程序------
N3: MOV R3,#05H
MOV DPTR,#0000H;置8255A口,东西,南北方向黄灯亮 MOV A, #0E2H MOVX @DPTR, A
N31 : MOV R4, #00H
CJNE R4,#7DH,$;黄灯持续亮0.5秒 N32: MOV DPTR, #0000H;置8255A口, 南北方向黄灯灭 MOV A, #OEBH MOVX @DPTR,A N33: MOV R4, #00H CJNE R4, #7DH, $; 黄灯持续灭0.5秒 CJNE R3, #0OH, N3; 闪烁时间达5秒则退出S. JMPN00 ;闯红灯报警程序 B0:MOV R2, #03H; 报警持续时间3秒 B01: MOV A, R3 JZ N1;若倒计时完毕,不再报警 CLR P3.0;报警 CJNE R2,#0OH, B01;判断3秒是否结束 SJMP NO2 ;----1秒延时子程序- N7: RETI TO_ INT:MOV TLO, #9AH;给定时器TO送定时10ms的初值 MOV THO, #0F1H INC R4 INC R5 CJNE R5, #OFAH, T01;判断延时是否够一秒,不够则调用显示子程 MOV R5, #0OH; R5清零DEC R3;倒计时初值减一DECR2;报警初值减- - T01: ACALL DISP;调用显示子程序 RETI;中断返回 ;显示子程序 DISP: JNB P2.4, T02 DISPl: MOV B, #0AH MOV A,R3; R3中值二转十显示转换" DIV AB MOV 79H,A MOV 7AH,B DIS: MOV A, 79H;显示十位 MOV DPTR, #TAB MOVC A, @A+DPTR MOV DPTR, #0002H MOVX @DPTR, A MOV DPTR, #0001H MOV A, #OF7H MOVX @DPTR, A LCALL DELAY DS2:MOV A, 7AH;显示个位 MOV DPTR, #TAB MOVC A, @A+DPTR MOV DPTR,#0002H MOVX @DPTR,A MOV DPTR, #0001H MOV A, #OFBH MOVX @DPTR,A RET ;东西方向车流量检测程序---- T03: MOV A, R3 SUBB A, #0OH;若绿灯倒计时完毕,不再检测车流量 JZ N3 JB P2.0, T03 INC R7 CJNE R7,#64H,E1 MOV R7,#00H;中断到100次则清零 El: SJMP N22 ;东西方向车流量显示程序- T02: MOV B, #OAH MOVA,R7; R7中值二转十显示转换 DIV AB MOV79H,A MOV 7AH, B DIS3: MOV A, 79H;显示十位 MOV DPTR, #TAB MOVC A, @A+DPTR MOV DPTR, #0002H MOVX @DPTR,A MOVDPTR, #0001H MOV A, #0F7H MOVX @DPTR,A LCALL DELAY DS4: MOV A, 7AH;显示个位 MOV DPTR, #TAB MOVC A, @A+DPTR MOV DPTR, #0002H MOVX @DPTR,A MOVDPTR, #0001H MOV A, #OFBH MOVX @DPTR, ALJMP N7 ;延时4MS子程序- DELAY: MOV R1, #0AH L0OP: MOV R6, #64H NOP LOOP1: DJNZ R6, L0OP1 DJNZ R1,LOOP RET ;字符表- TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH END
|