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

📄 led.asm

📁 大屏幕LED仿真
💻 ASM
📖 第 1 页 / 共 2 页
字号:

ORG       0000H            ;程序执行开始地址
LJMP      START            ;跳至START执行
ORG       0003H            ;外中断0中断入口地址
RETI                       ;中断返回(不开中断)
ORG       000BH            ;定时器T0中断入口地址
LJMP      INTT0            ;进入定时器中断程序
ORG       0013H            ;外中断1中断入口地址
RETI                       ;中断返回(不开中断)
ORG       001BH            ;定时器T1中断入口地址
LJMP      INTT1            ;中断返回(不开中断)
ORG       0023H            ;串行口中断入口地址
RETI                       ;中断返回(不开中断)
ORG       002BH            ;定时器T2中断入口地址
RETI                       ;中断返回(不开中断)
ORG       0100H

START: MOV TMOD,#21H
       MOV TL1,#3CH
       MOV TH1,#0B0H
       MOV TH0,#0B1H
       MOV TL0,#0E0H
       ;MOV SP,#70H
       SETB EA
       SETB  ET0
       SETB  TR0
       ;SETB ET1

       ;SETB  TR1

START0: LCALL XSKJ           ;调显示控制
        ;LCALL TIMEXS
       SJMP START0
;进入定时器0中断程序
INTT0:  MOV TH0,#0B1H
        MOV TL0,#0E0H
        PUSH ACC
        PUSH PSW
        PUSH DPL
        PUSH DPH
        SETB RS0               ;选择工作寄存器1

        LCALL DSP            ;扫描显示

        ;时间计数器

        POP DPH
        POP DPL
        POP PSW
        POP ACC
        RETI
INTT1:  MOV TH1,#3CH
        MOV TL1,#0B0H
        PUSH ACC
        PUSH PSW
        PUSH DPL
        PUSH DPH
        SETB RS1

        DJNZ  6EH,INTT10
        ;LCALL GET1302
        MOV 6EH,#10
INTT10:
        CLR RS1
        POP DPH
        POP DPL
        POP PSW
        POP ACC
        RETI



;显示控制

XSKJ:   MOV R0,#0A0H         ;直接显示"欢迎"
        MOV DPTR,#TAB1
        LCALL ZJXS
        MOV R0,#0A2H
        MOV DPTR,#TAB2
        LCALL ZJXS
        ;LJMP $
XSKJ0:  MOV 60H,#2
        LCALL DELY    ;延时1S


        MOV R7,#10H              ;计数


XSKJ1:  LCALL ZBPZY               ;左半屏左移

        LCALL YBPYY               ;右半屏右移

        MOV 60H,#1
        LCALL DELY
        DJNZ R7,XSKJ1
        ;MOV 60H,#1
        ;LCALL DELY
        ;MOV 6EH,#10H
XSKJ2:  ;LCALL  ZPSY             ;整屏上移
        ;MOV 60H,#1
        ;LCALL DELY
        ;DJNZ 6EH,XSKJ2
         LCALL TIMEXS
        MOV R7,#0AH             ;左移显示 郑州加工业学院欢迎您
        MOV DPTR,#TAB6
        LCALL ZYXSDZ
        MOV R7,#10H
XSKJ3:    LCALL ZPSY

        MOV 60H,#1
        LCALL DELY
        DJNZ R7,XSKJ3

        RET
;=====================================================
TIMEXS: LCALL Get1302
        LCALL FLBCD


        LCALL FLBCD
        MOV SHUHC,41H
        LCALL SHUXJ
        MOV R0,#0A2H
        LCALL ZJXS8

        MOV SHUHC,40H

        LCALL SHUXJ
        MOV R0,#0A3H
        LCALL ZJXS8

        MOV SHUHC,43H
        LCALL SHUXJ
        MOV R0,#0A0H
        LCALL ZJXS8

        MOV SHUHC,42H

        LCALL SHUXJ
        MOV R0,#0A1H
        LCALL ZJXS8



        RET

;扫描显示
DSP:

        MOV R0,#0A0H
        MOV R1,#0FEH

DSP0:   MOV DPTR,#7FFFH
        MOV A,R1
        MOVX @DPTR,A
        MOV DPTR,#0BFFFH
        MOV A,#0FFH
        MOVX @DPTR,A

        MOV DPTR,#0DFFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0EFFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0F7FFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0FBFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        LCALL DELAY

        MOV A,R1
        RL A
        MOV R1,A
        CJNE R0,#0C0H,DSP0

        MOV R1,#0FEH
DSP1:   MOV DPTR,#7FFFH
        MOV A,#0FFH
        MOVX @DPTR,A
        MOV DPTR,#0BFFFH
        MOV A,R1
        MOVX @DPTR,A

        MOV DPTR,#0DFFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0EFFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0F7FFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        MOV DPTR,#0FBFFH
        MOV A,@R0
        MOVX @DPTR,A
        INC R0

        LCALL DELAY

        MOV A,R1
        RL A
        MOV R1,A
        CJNE R0,#0E0H,DSP1
        RET


;送数右缓冲
;调用前先给R3,DPTR赋值
XSYHC:  MOV R1,#70H
XSYHC0: MOV A,R3
        MOVC A,@A+DPTR
        MOV @R1,A
        INC R1
        INC R3
        INC R3
        CJNE R1,#80H,XSYHC0
        RET


;送数左缓冲
;调用前先给R3,DPTR赋值
XSZHC:  MOV R1,#80H
XSZHC0: MOV A,R3
        MOVC A,@A+DPTR
        MOV @R1,A
        INC R1
        INC R3
        INC R3
        CJNE R1,#90H,XSZHC0
        RET


;直接显示
;调用前先给R0,DPTR赋值
ZJXS:  MOV R3,#00H

ZJXS0: MOV A,R3
       MOVC A,@A+DPTR
       MOV @R0,A
       INC R0
       INC R3
       MOV A,R3
       MOVC A,@A+DPTR
       MOV @R0,A
       INC R0
       INC R0
       INC R0
       INC R3
       CJNE R3,#20H,ZJXS0
       RET


;整屏左移
ZPZY:    MOV R0,#0DFH
         MOV R1,#7FH
         MOV R2,#04H

ZPZY1:   CLR C
         MOV A,@R1
         RLC A
         MOV @R1,A

ZPZY0:   MOV A,@R0
         RLC A
         MOV @R0,A
         DEC R0
         DJNZ R2,ZPZY0
         DEC R1
         MOV R2,#04H
         CJNE R0,#9FH,ZPZY1
         RET


;整屏右移
ZPYY:    MOV R0,#0A0H
         MOV R1,#80H
         MOV R2,#04H

ZPYY1:   CLR C
         MOV A,@R1
         RRC A
         MOV @R1,A

ZPYY0:   MOV A,@R0
         RRC A
         MOV @R0,A
         INC R0
         DJNZ R2,ZPYY0
         INC R1
         MOV R2,#04H
         CJNE R0,#0E0H,ZPYY1
         RET


;整屏上移
ZPSY:    MOV R0,#0A0H
         MOV R1,#0A4H

ZPSY0:   MOV A,@R1
         MOV @R0,A
         INC R0
         INC R1
         CJNE R0,#0E0H,ZPSY0
         RET


;整屏下移
ZPXY:    MOV R0,#0DFH
         MOV R1,#0DBH

ZPXY0:   MOV A,@R1
         MOV @R0,A
         INC R0
         INC R1
         CJNE R0,#9FH,ZPXY0
         RET

;半屏上移
;调用前先给R0,R1赋值
BPSY:    MOV R3,#10H
         MOV A,@R1
         MOV @R0,A
         INC R0
         INC R1
         MOV A,@R1
         MOV @R0,A
         INC R0
         INC R1
         INC R0
         INC R1
         INC R0
         INC R1
         DJNZ R3,BPSY
         RET

;半屏下移
;调用前先给R0,R1赋值
BPXY:    MOV R3,#10H
         MOV A,@R1
         MOV @R0,A
         DEC R0
         DEC R1
         MOV A,@R1
         MOV @R0,A
         DEC R0
         DEC R1
         DEC R0
         DEC R1
         DEC R0
         DEC R1
         DJNZ R3,BPXY
         RET

;半半屏上移
;调用前先给R0,R1赋值
BBPSY:   MOV R3,#10H
         MOV A,@R1
         MOV @R0,A
         INC R0
         INC R1
         INC R0
         INC R1
         INC R0
         INC R1
         INC R0
         INC R1
         DJNZ R3,BBPSY
         RET

;半半屏下移
;调用前先给R0,R1赋值
BBPXY:   MOV R3,#10H
         MOV A,@R1
         MOV @R0,A
         DEC R0
         DEC R1
         DEC R0
         DEC R1
         DEC R0
         DEC R1
         DEC R0
         DEC R1
         DJNZ R3,BBPXY
         RET

;半屏左移
;调用前先给R0,R1赋值
BPZY:    MOV R3,#08H
         MOV R2,#04H

BPZY1:   CLR C
         MOV A,@R1
         RLC A
         MOV @R1,A

BPZY0:   MOV A,@R0
         RLC A
         MOV @R0,A
         DEC R0
         DJNZ R2,BPZY0
         DEC R1
         MOV R2,#04H
         DJNZ R3,BPZY1
         RET


;半屏右移
;调用前先给R0,R1赋值
BPYY:    MOV R3,#08H
         MOV R2,#04H

BPYY1:   CLR C
         MOV A,@R1
         RRC A
         MOV @R1,A

BPYY0:   MOV A,@R0
         RRC A
         MOV @R0,A
         INC R0
         DJNZ R2,BPYY0
         INC R1
         MOV R2,#04H
         DJNZ R3,BPYY1
         RET


;送数下缓冲一
;调用前先给R0,R2,DPTR 赋值
XSSXHCY:  MOV A,R2
         MOVC A,@A+DPTR
         MOV @R0,A
         INC R0
         INC R2
         MOVC A,@A+DPTR
         MOV @R0,A
         RET

;送数下缓冲二
;调用前先给R1,R3,DPTR 赋值
XSSXHCE:  MOV A,R3
         MOVC A,@A+DPTR
         MOV @R1,A
         INC R1
         INC R3
         MOVC A,@A+DPTR
         MOV @R1,A
         RET


;左半屏左移

ZBPZY:  MOV R0,#0DDH
        MOV R1,#8FH

ZBPZY0: MOV A,@R1
        CLR C
        RLC A
        MOV @R1,A
        MOV A,@R0
        RLC A
        MOV @R0,A
        DEC R0

⌨️ 快捷键说明

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