单片机红绿灯的汇编语言程序设计 a> 程序源代码 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 1.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...