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

📄 tracficlight.asm

📁 这个是用汇编语言写的
💻 ASM
字号:
      ORG  0000H
      LJMP BEGIN
      ORG  000BH
      LJMP INT0
;-----------------------------------------
 ;初始化
;-------------------------------------------
      ORG  0030H
BEGIN:mov  sp,#60h
      MOV  TMOD,#01H ;置T0为方式1,16位定时器
      MOV  TH0,#3CH  ;6MHZ的晶振,定时100MS
      MOV  TL0,#0B0H
      MOV  R3,#10   ;定时器计数次数

      MOV  30H,#00H   ;数码管第一位显示偏移值
      MOV  31H,#00H  ;数码管第二位显示偏移值
      MOV  32H,#00H  ;数码管第三位显示偏移值
      MOV  33H,#00H  ;数码管第四位显示偏移值
      MOV  34H,#0    ;倒计时间
      MOV  35H,#30   ;红绿灯显示时间
      MOV  36H,#6    ;黄灯显示时间
      MOV  R1,#00H   ;灯的状态
      SETB EA
      SETB ET0
START:LCALL KEY
      MOV A,B
      CJNE A,#0FFH,K_ONE
      LJMP OUT
K_ONE:CJNE A,#00H,K_TWO     
      CJNE R1,#00H,STOP
      MOV  R1,#01H
      MOV  34H,35H
      SETB TR0
      LJMP OUT
STOP: CLR  TR0
      MOV  R1,#00H
      MOV  34H,35H 
      LJMP OUT
K_TWO:CJNE A,#01H,K_THR

      JB  TR0 ,OUT
      INC  35H
      MOV  A,35H
      CJNE A,#100,N1
 N1:  JC    N2
      MOV   A,35H
      SUBB  A ,#100
      MOV   35H,A
 N2:  MOV   34H,35H

      LJMP OUT
K_THR:CJNE A,#02H,OUT

      JB  TR0,OUT
      DEC  35H
      MOV  A,35H
      JNZ   N3
      MOV  35H,#99
N3:   MOV 34H,35H
      LJMP OUT

OUT:Lcall chang_display

S_0:CJNE R1,#00H,S_1
    MOV P2,#11111111B
S_1:CJNE R1,#01H,S_2
    MOV P2,#11111110B
S_2:CJNE R1,#02H,S_3
S_3:CJNE R1,#03H,S_4
    MOV P2,#11111011B
S_4:CJNE R1,#04H,EXIT
EXIT:LCALL SHOW
     LJMP START

;=========================================================================
 SHOW:MOV  R2,#0EFH
      MOV  R0,#30H
      MOV  R4,#04H
 LP:  MOV  A,@R0
      MOV DPTR,#TAB
      MOVC A,@A+DPTR
      MOV  P0,A
      MOV  A,R2
      MOV  P3,A
      RL   A
      MOV  R2,A
      INC  R0
      LCALL  DELAY1
      DJNZ R4 ,LP
      RL   A
      MOV P3,A
      RET

 TAB :DB 0C0H,0F9H,0A4H,0B0H
      DB 99H,92H,82H,0F8H
      DB 80H,90H,88H,83H
      DB 0C6H,0A1H,86H,8EH


;=========================================================================
KEY:  LCALL KS
      LCALL DELAY
      LCALL KS
      JZ KOUT        
L_ONE:
      MOV A,#0F0H
      MOV P1,A
      MOV A,P1
      MOV R5,A      
      JB ACC.4,L_TWO
      MOV B,#00H
      JMP K_O
L_TWO:
      JB ACC.5,L_THR
      MOV B,#01H
      JMP K_O
L_THR:
      JB ACC.6,K_O
      MOV B,#02H
      JMP K_O
KOUT: MOV B,#0FFH      
K_O:  MOV A,P1
      XRL A,R5
      JZ K_O     
       RET


DELAY:MOV R6,#0BH
LOOP1:MOV R7,#0FFH
LOOP2:DJNZ R7,LOOP2
      DJNZ R6,LOOP1
      RET
;===============================================================
DELAY1:
      MOV R7,#0FFH
LOOP3:DJNZ R7,LOOP3
     
      RET
;===============================================================
KS:   MOV A,#0FH
      MOV P1,A
      MOV A,P1
      CPL A
      ANL A,#0FH
      RET
 ;==============================================================
chang_display:
      MOV B,34H
      MOV A,#10
      XCH A,B
      DIV AB
      MOV 30H,A
      MOV 32H,A
      MOV 31H,B
      MOV 33H,B
      RET
 ;==============================================================
 INT0:DJNZ R3,NEXT
      MOV  R3,#10
      CJNE R1,#02,QIE_1
      CPL P2.1
      LJMP QIE
QIE_1:CJNE R1,#04,QIE
      CPL P2.1
QIE:DJNZ  34H,NEXT
 T_1:CJNE  R1,#01H,T_2
     MOV   R1,#02H
     MOV P2,#11111101B
     mov   34H,36H
     LJMP  NEXT
 T_2:CJNE  R1,#02H,T_3
     MOV   R1,#03H
     MOV   34H,35H
     LJMP  NEXT
 T_3:CJNE  R1,#03H,T_4
     MOV   R1,#04H
     MOV P2,#11111101B
     MOV   34H,36H
     LJMP  NEXT
 T_4:CJNE  R1,#04H,NEXT
     MOV   R1,#01H
     MOV   34H,35H
 NEXT:MOV TH0,#3CH
      MOV TL0,#0B0H
     RETI

⌨️ 快捷键说明

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