⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 交通灯.asm

📁 基于51单片机无线收发控制的交通信号灯模型
💻 ASM
字号:
;##########################################
;# 基于单片机无线收发控制的交通信号灯模型 #
;# 设计:朱金飞                           #
;# 广东交通职业技术学院北校区 无线电021班 #
;# E-mail:biket@163.com                   #
;# http://www.fmdiy.com                   #
;# http://www.yufik.com                   #
;# 注:该程序仅实现交通灯的闪烁功能,中断 #
;# 等功能由于当初设计时间不足,没能实现! #
;# 仅供参考,不再提供任何技术支持!       #
;##########################################
       ORG 0000H
       AJMP MAIN
       ORG 0003H
       AJMP AA0
       ORG 0013H
       AJMP AA1
       ORG 0100H
  MAIN:SETB PX0
       MOV TCON,#00H
       MOV TMOD,#10H
       MOV IE,#85H
  DISP:MOV 20H,#60       ;倒计时初值送计数储存区
       MOV P1,#0F3H      ;A绿,B红
       MOV R2,#02H       ;1秒计时循环次数送R2
 DISP1:ACALL DELAY
       DJNZ R2,DISP1     ;1秒没到,继续延时
       MOV R2,#02H
       DEC 20H           ;1秒到计数单元数减1
       MOV A,20H
       CJNE A,#05H,DISP1 ;判断倒计5秒到否,没到继续循环
       ACALL DISPY
   FY0:CPL P1.2          ;倒计5秒到时,A绿灯闪动3次
   FT0:ACALL DELAY
       DJNZ R2,FT0
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#02H,FY0   ;判断倒计2秒到否,没到返回
       ACALL DISPY
       MOV P1,#0F5H      ;倒计2秒到时,A黄灯亮
   FY1:ACALL DELAY
       DJNZ R2,FY1
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#00H,FY1   ;判断倒计到0否,没到返回
       ACALL DISPY
       MOV 20H,#30
       MOV P1,#0DEH      ;倒计到0时,A红灯,B绿灯
 DISP2:ACALL DELAY
       DJNZ R2,DISP2
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#05H,DISP2
       ACALL DISPY
   FY2:CPL P1.5
   FT2:ACALL DELAY
       DJNZ R2,FT2
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#02H,FY2
       ACALL DISPY
       MOV P1,#0EEH
   FY3:ACALL DELAY
       DJNZ R2 ,FY3
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#00H,FY3
       ACALL DISPY
       AJMP DISP
   AA0:PUSH 02H           ;紧急情况,中断入口
       PUSH 20H
       PUSH 04H
       PUSH P1
       PUSH TH1
       PUSH TL1
       MOV P1,#0F6H
       MOV 20,#20H
       MOV R2,#02H
DELAY0:ACALL DELAY
       DJNZ R2,DELAY0
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#00H,DELAY0
       ACALL DISPY
       POP TL1
       POP TH1
       POP 04H
       POP P1
       POP 20H
       POP 02H
       RETI               ;返回主程序
   AA1:CLR EA             ;一道有车,一道无车中断入口
       PUSH 20H
       PUSH 02H
       PUSH P1
       PUSH 04H
       PUSH TH1
       PUSH TL1
       SETB EA
       JNB P3.0,BP
       MOV P1,#0F3H
       SJMP DELAY1
    BP:JNB P3.1 ,EXIT
       MOV P1,#0DEH
DELAY1:MOV 20H,#05H
       MOV R2,#02H
  NEXT:ACALL DELAY
       DJNZ R2,NEXT
       MOV R2,#02H
       DEC 20H
       MOV A,20H
       CJNE A,#00H,NEXT
       ACALL DISPY
  EXIT:CLR EA
       POP TL1
       POP TH1
       POP 04H
       POP P1
       POP 02H
       POP 20H
       SETB EA
       RETI               ;返回主程序
 DISPY:MOV A,20H          ;数码管显示部分
       MOV B,#100 
       DIV AB
       MOV A,#10
       XCH A ,B
       DIV AB
       MOV 30H,B
       MOV 31H,A
       MOV R5,#0FEH
       MOV R1,#02H
       MOV R0,#30H
DISPY1:MOV A,@R0
       MOV DPTR,#TAB
       MOVC A,@A+DPTR
       MOV P0,A
       MOV A,R5
       MOV P2,A
       DJNZ R6,$
       DJNZ R6,$
       RL A
       MOV R5,A
       INC R0
       DJNZ R1,DISPY1
       RET
   TAB:DB 0C0H,0F9H,0A4H,0B0H,99H
       DB 92H,82H,0F8H,80H,90H
 DELAY:MOV R4,#0AH        ;0.5秒延时子程序
       MOV TH1,3CH
       MOV TL1,#0B0H
       SETB TR1
   LP1:ACALL DISPY
       JBC TF1,LP2
       SJMP LP1
   LP2:MOV TH1,#3CH
       MOV TL1,#0B0H
       DJNZ R4,LP1
       RET                ;返回主程序
       END                ;程序结束

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -