标题: 8255a单片机设计交通灯控制源码 [打印本页]
作者: password 时间: 2018-6-18 21:27
标题: 8255a单片机设计交通灯控制源码
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
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |