附:
交通灯主程序:
ORG 000H ;主程序的入口地址
LJMP MAIN ;跳转到主程序的开始处
ORG 0003H ;外部中断0的中断程序入口地址
ORG 000BH ;定时器0的中断程序入口地址
LJMP T0_INT ;跳转到中断服务程序处
ORG 0013H ;外部中断的中断程序入口地址
MAIN:MOV SP,#50H
MOV IE,#8EH ;CPU开中断,允许T0中断,T1中断和外部中断1中断
MOVTMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工作于模式1
MOV TH1,#00H ;T1计数器清零
MOV TL1,#00H
SETB TR1 ;启动T1计数器
SETB EX1 ;允许INT1中断
SETB 1T1 ;选择边沿触发方式
MOV DPTR,#003H
MOVA,#80H ;给8255赋初值,8255工作于方式0
MOVX@DPTR,A
AGAIN:JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,若P3.1为1则跳转
MOVA,P1
JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间。否则设定绿灯时间
MOV RO,#00H ;R0清零
MOV RO,A ;存入东西方向绿灯初始时间
MOV R3,A
LCALL DISP1
LCALL DELAY
AJMP AGAIN
RED: MOV A,P1
ANLA,#7FH ;P1.7置0
MOV R7,#00H;R7清零
MOV R7,A ;存入东西方向红灯初始时间
MOV R3,A
LCALL DISPI
LCALL DELAY
AJMP AGAIN
N0: SETB TR0 ;启动T0计时器
MOV 76H,R7 ;红灯时间存入76H
N00:MOV A,76H ;东西方向禁止,南北方向通行
MOV R3,A
MOV DPTR,#0000H ;置8255口,东西方向红灯亮,南北方向绿灯亮
MOV A,#0DDH
MOVX@DPTR,A
N01:JBP2.0,B0
N02:SETB P3.0
CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处执
N2:MOV R7,#00H
MOV A,R0 ;东西通行,南北禁止
MOV R.,A
MOV DPTR,#0000H ;置8255A口,东西方向绿灯亮,南北方向红灯亮
MOV A,#0EBH
MOVX@DPTR,A
N21:JBP2.0,T03
N22:CJNE R3,#00H,N21
东西方向车流量检测程序:
T03:MOV A,R3
SUBB A,#00H ;若绿灯倒计时完毕,不再检测车流量
JZ N3
JB P2.0,T03
INC R7
CJNE R7,#H,E1
MOV R7,#00H ;中断到100次则清零
E1: SJMP N22
东西方向车流量显示程序:
T02:MOV B,#0AH
MOV A,R7 ;R7中值二转十显示转换
DIV AB
MOV 79H,A
MOV 74H,B
DIS3:MOV A,79H ;显示十位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX@DPTR,A
MOV DPTR,#0001H
MOV A,#0F7H
MOVX@DPTR,A
LCALL DELAY
DS4:MOV,74H :显示个位
MOV DPTR,#TAB
MOVC A,@A+DPTR
MOV DPTR,#0002H
MOVX@DPTR,A
MOV DPTR,#0001H
MOV A,#0FBH
MOVX@DPTR,A
LJMP N7
字符表:
TAB: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
END
程序代码:
R4 存放黄灯时间 3 03H (此时间可以动态设定)
R5 存放红灯时间 60 3CH
R6 存放绿灯时间 80 50H
PC0 显示黄灯信号
PC1 显示红灯信号
PC2 显示黄灯信号
8255 工作与方式0
8255PA,PB,PC 口输出PC 控制字为10000000B(80H)
程序代码:
ORG 000H
LJMP MAIN
ORG 0100H
MAIN: MOV R1,#03H 初始化8255
MOV A,#80H
MOVX@R1,A
AGAIN: MOVP3,#80H 设置初值
MOV A,P3
JB ACC.7,NEXT0
AGAIN: MOV P3,#80H MOV A,P3
JB ACC.7,NEXT0
AGAINI: MOV P3,#40H
MOV A,P3
JB ACC.6,RED
MOV P3,#0FH
MOV A,P3
ANLA,#0FH
MOV R3,A
设置初值
AJMP AGAINI
RED: MOV P3,#0FH
MOV A,P3
ANLA,#0FH
MOV R2,A
AJMP AGAIN
NEXT0: MOV DPTR,#TAB 显示黄灯个位
MOV A,R1
MOVC A,@A+DPTR
MOV R1,#00H
MOVX @R1,A
MOV R1,#0
MOV DPTR,#TAB 显示黄灯十位
MOV A,R0
MOVC A,@A+DPTR
MOV R1,#01H
MOVX@R,A
MOV DPTR,#0C62H
MOV A,#00H
LCALL 0F4E0H
ACALLDELAY 延时1秒
MOV A,R3
MOV R0,A
NEXT2: MOV DPTR,#TAB 显示红灯个位
MOV A,R0
MOVC A,@A+DPTR
MOV R1,#00H
MOVX@R,A
MOV DPTE,#TAB 显示红灯十位
MOV A,R0
MOVC A,@A+DPTR
MOVR1,#01H
MOV A,R0
MOVX@R1,R0
MOV R1,#02H 显示红灯信号
MOV A,#02H
MOVX @R1,A
ACALLDELAY 延时1秒
DJNZ R0,NEXT2
MOV A,R2
MOV R0,A
NEXT3: MOV DPTR,#TAB 显示绿灯十位
MOV A,R0
MOVC A,@A+DPTR
MOV R1,#01H
MOV A,R0
MOVX@R1,R0
MOV R1#02H 显示绿灯信号
MOV A,#02H
MOVX @R1,A
ACALL DELAY DJNZ R0,NEXT3
AJMP NEXT0
DELAY: MOV R4,#08H DE2: LCALL DELAY1
DJNZ R4,DE2
RET
DELAY1:MOV R6,#0
MOV R5,#0
DE1: DJNZ R5,$
延时1秒
延时1秒子程序
DJNZ R6,DE1
RET
TAB:DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H
END
电源电路
因篇幅问题不能全部显示,请点此查看更多更全内容
Copyright © 2019- oldu.cn 版权所有 浙ICP备2024123271号-1
违法及侵权请联系:TEL:199 1889 7713 E-MAIL:2724546146@qq.com
本站由北京市万商天勤律师事务所王兴未律师提供法律服务