发布时间 : 星期二 文章Iqazgq单片机控制交通灯毕业设计更新完毕开始阅读
2 程序源代码
ORG 0000H ;主程序的入口地址
LJMP MAIN ;跳转到主程序的开始处
ORG 0003H ;外部中断0的中断程序入口地址 ORG 000BH ;定时器0的中断程序入口地址 LJMP T0_INT ;跳转到中断服务程序处
ORG 0013H ;外部中断1的中断程序入口地址 MAIN : MOV SP,#50H
MOV IE,#8EH ;CPU 开中断,允许T0中断,T1中断和外部
中断1中断
MOV TMOD,#51H ;设置T1为计数方式,T0为定时方式,且都工
作于模式1
MOV TH1,#00H ;T1 计数器清零 MOV TL1,#00H
SETB TR1 ;启动T1计时器 SETB EX1 ;允许INT1 中断 SETB IT1 ;选择边沿触发方式 MOV DPTR ,#0003H
MOV A, #80H ;给8255赋初值,8255工作于方式0 MOVX @DPTR, A
AGAIN: JB P3.1,N0 ;判断是否要设定东西方向红绿灯时间的初值,
若P3.1为1 跳转
MOV A,P1
JB P1.7,RED ;判断P1.7是否为1,若为1则设定红灯时间,
否则设定绿灯间
MOV R0,#00H ;R0 清零
MOV R0,A ;存入东西方向绿灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN RED: MOV A,P1
ANL A,#7FH ;P1.7 置0 MOV R7,#00H ;R7 清零
MOV R7,A ;存入东西方向红灯初始时间 MOV R3,A LCALL DISP1 LCALL DELAY AJMP AGAIN
;-------------------------------------------
N0: SETB TR0 ;启动T0计时器 MOV 76H,R7 ;红灯时间存入76H
N00: MOV A,76H ;东西方向禁止,南北方向通行 MOV R3,A
MOV DPTR,#0000H ;置8255A口,东西方向红灯亮,南北方向绿灯亮 MOV A,#0DDH MOVX @DPTR, A N01: JB P2.0,B0 N02: SETB P3.0
CJNE R3,#00H,N01 ;比较R3中的值是否为0,不为0转到当前指令处
;------黄灯闪烁5秒程序------
N1: SETB P3.0 MOV R3,#05H
MOV DPTR,#0000H ;置8255A口,东西,南北方向黄灯亮 MOV A,#0D4H MOVX @DPTR,A
N11: 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,R0 ;东西通行,南北禁止 MOV R3,A
MOV DPTR,#0000H ; 置8255A口,东西方向绿灯亮,南北方向红灯亮
MOV A,#0EBH MOVX @DPTR,A N21: JB P2.0,T03 N22: CJNE R3,#00H,N21 ;------黄灯闪烁5秒程序------