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

📄 新建 文本文档.txt

📁 单片机制作交通灯的原程序及Proteus仿真图
💻 TXT
字号:
ORG 0000H
         LJMP START
         ORG 0003H
         LJMP INT0
         ORG 000BH
         LJMP T0
        a ORG 0013H
         LJMP INT1
         ORG 001BH

  START: MOV SP,  #60H
         MOV 40H, #5      ;在南北红灯缓存区南北红灯时间
         MOV 41H, #3      ;在南北绿灯缓存区南北绿灯时间
         MOV 42H, #4      ;在东西红灯缓存区东西红灯时间
         MOV 43H, #4      ;在东西绿灯缓存区东西绿灯时间
         MOV 27H,#0FFH    ;标示位
         MOV 30H,#05H
         MOV 31H,#00H
         MOV TMOD, #01H    ;定时器初始化
         MOV TH0,  #3CH
         MOV TL0,  #0AFH
         MOV 60H,  #20
         CLR 4EH
         CLR 4FH
         SETB EA
         SETB EX1
         SETB EX0
         SETB ET0
         SETB TR0
DISPLAY1:MOV P1, #0CCH     ;显示南北红灯与东西绿灯时间
         MOV R3, 40H
         MOV R4, 43H
  LOOP1: MOV A,  R3
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F0H
         MOV  P0,A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F1H
         MOV  P0,A
         LCALL DELAY
         MOV A,  R4
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F6H
         MOV  P0,A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F7H
         MOV  P0,A
         LCALL DELAY
         JNB TR0,SETIN1
         JB P2.6,WAY1  ;判断两通道是否都有车
         LCALL  DELAY
         JB P2.6,OUT1
         JNB P2.7,OUT1
         LJMP DISPLAY2
WAY1:    JB P2.7,OUT1
         LCALL DELAY
         JB P2.7,OUT1
         LJMP DISPLAY1
OUT1:    JMP E1
   SETIN1:       LJMP SETT
      E1:   JNB 4FH,LOOP1
         CLR 4FH
         DEC R3
         DEC R4
         CJNE R4,#0FFH,LOOP1
         MOV P1, #0CAH             ;东西绿灯灭黄灯亮
LOOP2:   MOV A,  R3
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F4H
         MOV  P0,A
         LCALL DELAY
         MOV P2,#0F0H
         MOV  P0,A
         LCALL DELAY
         MOV  P2, #0F6H
         MOV  P0, A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F5H
         MOV  P0,A
         LCALL DELAY
         MOV  P2,#0F1H
         MOV  P0,A
         LCALL DELAY
         MOV  P2, #0F7H
         MOV  P0, A
         LCALL DELAY
         JNB TR0,SETIN2
         JB P2.6,WAY2 ;判断两通道是否都有车
         LCALL  DELAY
         JB P2.6,OUT2
         JNB P2.7,OUT2
         LJMP DISPLAY2
WAY2:    JB P2.7,OUT2
         LCALL DELAY
         JB P2.7,OUT2
         LJMP DISPLAY1
OUT2:    JMP E2
    SETIN2:LJMP SETT
   E2:      JNB 4FH,LOOP2
         CLR 4FH
         DEC R3
         CJNE R3,#0FFH,LOOP2
DISPLAY2:        MOV P1, #0E1H     ;南北红灯时间到,南北绿灯亮,东西红灯亮
         MOV R3, 41H       ;显示南北绿灯,东西红灯时间
         MOV R4, 42H
  LOOP3: MOV A,  R3
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F2H
         MOV  P0,A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F3H
         MOV  P0,A
         LCALL DELAY
         MOV A,  R4
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F4H
         MOV  P0,A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F5H
         MOV  P0,A
         LCALL DELAY
         JNB TR0 ,SETIN3
         JB P2.6,WAY3   ;判断两通道是否都有车
         LCALL  DELAY
         JB P2.6,OUT3
         JNB P2.7,OUT3
         LJMP DISPLAY2
WAY3:    JB P2.7,OUT3
         LCALL DELAY
         JB P2.7,OUT3
         LJMP DISPLAY1
OUT3:    JMP E3
   SETIN3: LJMP SETT
     E3   : JNB 4FH,LOOP3
         CLR 4FH
         DEC R3
         DEC R4
         CJNE R3,#0FFH,LOOP3
         MOV P1, #0D1H
LOOP4:   MOV A,  R4             ;显示东西红灯,南北黄灯时间
         MOV B,  #0AH
         DIV AB
         MOV DPTR,#TAB
         MOVC A,@A+DPTR
         MOV P2,#0F0H
         MOV  P0,A
         LCALL DELAY
         MOV P2,#0F4H
         MOV  P0,A
         LCALL DELAY
         MOV  P2, #0F2H
         MOV  P0, A
         LCALL DELAY
         MOV A, B
         MOVC A,@A+DPTR
         MOV  P2,#0F1H
         MOV  P0,A
         LCALL DELAY
         MOV P2,#0F5H
         MOV  P0,A
         LCALL DELAY
         MOV  P2, #0F3H
         MOV  P0, A
         LCALL DELAY
         JNB TR0,SETIN4
         JB P2.6,WAY4    ;判断两通道是否都有车
         LCALL  DELAY
         JB P2.6,OUT4
         JNB P2.7,OUT4
         LJMP DISPLAY2
WAY4:    JB P2.7,OUT4
         LCALL DELAY
         JB P2.7,OUT4
         LJMP DISPLAY1
OUT4:    JMP E4
   SETIN4:  LJMP SETT
   E4:      JNB 4FH,LOOP4
         CLR 4FH
         DEC R4
         CJNE R4,#0FFH,LOOP4
   SETOUT :      LJMP DISPLAY1
 SETT:  JB  TR0,SETOUT
         ACALL DISP
        JB P3.0,M1
M1:     MOV C,P3.0           ;按键消振
        JC M2
M2:     LCALL DELAY
        MOV C,P3.0
        JC ML10
STOP1:  MOV C,P3.0
        JNC STOP1
        LCALL DELAY
        MOV C,P3.0
        JNC STOP1
        MOV R6,27H
        CJNE R6,#00H,RRRR
        MOV    R5,43H
        INC  R5
        MOV  43H,R5               ;;;加一
        MOV  R5,40H
        INC R5
        MOV 40H,R5
        CJNE R5, #99,DSS
        MOV 40H,#0
        MOV 43H,#0
        LJMP DSS
 RRRR:  MOV R5,41H
        INC R5
        MOV 41H ,R5
        MOV R5,42H
        INC R5
        MOV 42H,R5
        CJNE R5,#99,DSS
        MOV 42H,#0
        MOV 41H,#0
   DSS: MOV A,R5
        MOV     B,#0AH
        DIV     AB
        MOV     31H,A
        MOV     30H,B
        ACALL  DISP
ML10:   JB P3.1,M3
M3:     MOV C,P3.1                    ;按键消振
        JC M4
M4:     LCALL DELAY
        MOV C,P3.1
        JC  SETT
STOP2:  MOV C,P3.1
        JNC STOP2
        LCALL DELAY
        MOV C,P3.1
        JNC STOP2
         MOV R6,27H
            CJNE R6,#00H,RRRR1
        MOV    R5,43H
        DEC  R5
        MOV  43H,R5
        MOV  R5,40H
        DEC R5
        MOV 40H,R5
        CJNE R5,#0FFH,DSSS;;;;;;;;减一
        MOV 40H,#99
        MOV 43H,#98
        MOV R5,40H
        LJMP DSSS
 RRRR1:  MOV R5,41H
        DEC R5
        MOV 41H ,R5
        MOV R5,42H
        DEC R5
        MOV 42H,R5
        CJNE R5,#0FFH,DSSS
        MOV 42H,#99
        MOV 41H,#98
        MOV R5,42H
  DSSS:      MOV A,R5
        MOV     B,#0AH
        DIV     AB
        MOV     31H,A
        MOV     30H,B
        ACALL  DISP
        LJMP   SETT
 ;;;;;;;;;;;;定时器中断;;;;;;;;;;;;
 T0:     PUSH ACC
         PUSH B
         PUSH PSW
         MOV TH0,#3CH
         MOV TL0,#0AFH
         DJNZ 60H,OVER
         MOV 60H,#20
         SETB 4FH
OVER:    POP PSW
         POP B
         POP ACC
         RETI
   ;;;;;;;;;;;;;;;显示模块2 ;;;;;;;;;;;;;;;;;
DISP:
        MOV DPTR,#DSEG1
        MOV A,30H
        MOVC A,@A+DPTR
        MOV P2,#0EFH
        MOV P0,A
        LCALL DL1
        MOV DPTR ,#DSEG1
        MOV A,31H
        MOVC A,@A+DPTR
        MOV P2,#0DFH
        MOV P0,A
        LCALL DL1
        RET
;;;;;;;;;;;;;;;DELAY
DL1:	MOV	R7,#05H
DL:	MOV	R6,#0FFH
DL6:	DJNZ	R6,$
        DJNZ	R7,DL
        RET
DSEG1:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH
;;;;;;;;;;;;;INT1中断修改;;;;;;;;;;
  INT1:
        PUSH ACC
        PUSH B
        PUSH PSW
        MOV P1,#0CH
        SETB P1.0
        CLR P1.1
        CLR P1.2
        SETB P1.4; 紧急情况,东西(B道)方向,南北(A道)方向都是红灯亮,其余灯灭
        CLR P1.5
        CLR P1.6
TAB3:   MOV P0,#0FFH
        MOV P2,#0
        MOV P2,#1
        MOV P2,#4
        MOV P2,#5
        LCALL TAB3
        POP PSW
        POP ACC
        RETI
 ;;;;;;;;;;;;;INT0中断修改;;;;;;;;;;
     INT0:PUSH    ACC
         PUSH    PSW
         MOV C,P3.2          ;按键消振
        JC PPP
        ACALL DELAY
        MOV C,P3.2
        JC PPP
STOP3:  MOV C,P3.2
        JNC STOP3
        ACALL DELAY
        MOV C,P3.2
        JNC STOP3
        CLR TR0
        MOV A,27H
        CJNE A,#01H,PPP
        MOV A,#0FFH
        MOV 27H,A
        SETB TR0
        AJMP PP1
PPP:    INC 27H
PP1:    POP     PSW
        POP     ACC
        RETI
TAB:    DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH
DELAY:  MOV R1,#40
D1:     MOV R7,#50
        DJNZ R7,$
        DJNZ R1,D1
        RET
        END

⌨️ 快捷键说明

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