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

📄 tab.asm

📁 一个点阵LED屏动态扫描显示的控制程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
;****************************************************************
;    VIS_PLAY     ;  扫描显示
;****************************************************************
VIS_PLAY: MOV    R7,#16     ; R7 扫描行数
;
;
VISPLAY0: CLR    C
          CLR    LEDRCK
          SETB   LEDNOE
;
;
;
          MOV    R1,#8       ; 8*8 共64位
          MOV    R2,#00H     ; 计数

VISPLAY1: JNB    biDYNA,VISPLAY14
          ; 动态显示
          CLR    C
          MOV    DPTR,#D_VISDYNA
          MOV    A,yDYNA
          RL     A
          ADD    A,DPH
          MOV    DPH,A
          SJMP   VISPLAY15
;
;
VISPLAY14:MOV    DPTR,#D_VISBUF
          JNB    biFRMFS,VISPLAY15
          JNB    biFRMBK,VISPLAY15
          MOV    DPTR,#D_VISBUF2
;
VISPLAY15:MOV    A,R7
          DEC    A
          SWAP   A
          ADD    A,R2
          MOV    DPL,A
          MOVX   A,@DPTR
          MOV    R4,A              ; r4=上16行
;
          MOV    R6,#08H
          CLR    C
          CLR    EA
;
VISPLAY2: MOV    A,R4
          RLC    A
          MOV    R4,A
          CLR    LEDDAT
          JC     VISPLAY3
          SETB   LEDDAT
;
VISPLAY3: NOP
          CLR    LEDCLK
          NOP
          SETB   LEDCLK
;
          DJNZ   R6,VISPLAY2
;
          SETB   EA
;
          INC    R2
          DJNZ   R1,VISPLAY1
;
;   一行送毕 送扫描
;
          MOV    A,R7
          DEC    A
          MOV    DPTR,#TABADDR
          MOVC   A,@A+DPTR
          SWAP   A
          MOV    DPTR,#D_VISLIN
          MOVX   @DPTR,A
          CLR    LEDA2             ; 地址A2
          JNB    ACC.6,VISPLAY31
          SETB   LEDA2
;
VISPLAY31:CLR    LEDLIN
          JB     ACC.7,VISPLAY32
          SETB   LEDLIN            ; 置 上8行还是下八行
VISPLAY32:CLR    LEDNOE            ; 置138选通 (灯亮)
          NOP
          SETB   LEDRCK
;
VISPLAY4: CLR    C
          MOV    R1,#01
VISPLAY5: MOV    R2,#100
          DJNZ   R2,$
          DJNZ   R1,VISPLAY5
;
          DJNZ   R7,VISPLAY0
          CLR    C
          RET
;
TABADDR:
;DB    008H
;DB    00AH
;DB    009H
;DB    00BH
;DB    00CH
;DB    00EH
;DB    00DH
;DB    00FH
;DB    000H
;DB    002H
;DB    001H
;DB    003H
;DB    004H
;DB    006H
;DB    005H
;DB    007H
;
DB    008H
DB    00cH
DB    00aH
DB    00eH
DB    009H
DB    00dH
DB    00bH
DB    00FH
DB    000H
DB    004H
DB    002H
DB    006H
DB    001H
DB    005H
DB    003H
DB    007H
;
;
;
;****************************************************************
;   VIS_VAL     ; 显示分值
; yVALH,yVISL
;****************************************************************
VIS_VAL:   LCALL  CLR_VIS
;
           CLR    C
           MOV    A,yVALH
           JZ     VIS_VAL02
           ANL    A,#0F0H
           JNZ    VIS_VAL4
           SJMP   VIS_VAL3
;
VIS_VAL02: MOV    A,yVALL
           ANL    A,#0F0H
           JZ     VIS_VAL03
           SJMP   VIS_VAL2
VIS_VAL03: SJMP   VIS_VAL1
;

VIS_VAL4:  CLR    C
           MOV    A,yVALH
           ANL    A,#0F0H
           SWAP   A
           MOV    yVISX,#1
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALH
           ANL    A,#0FH
           MOV    yVISX,#3
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALL
           ANL    A,#0F0H
           SWAP   A
           MOV    yVISX,#5
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALL
           ANL    A,#0FH
           MOV    yVISX,#7
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           RET
;
;
VIS_VAL3:  CLR    C
;
           MOV    A,yVALH
           ANL    A,#0FH
           MOV    yVISX,#2
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALL
           ANL    A,#0F0H
           SWAP   A
           MOV    yVISX,#4
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALL
           ANL    A,#0FH
           MOV    yVISX,#6
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           RET
;
;
VIS_VAL2:  CLR    C
;
           MOV    A,yVALL
           ANL    A,#0F0H
           SWAP   A
           MOV    yVISX,#3
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           MOV    A,yVALL
           ANL    A,#0FH
           MOV    yVISX,#5
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           RET
;
VIS_VAL1:  CLR    C
;
           MOV    A,yVALL
           ANL    A,#0FH
           MOV    yVISX,#4
           MOV    yVISY,#0
           LCALL  PUT_ASC32
;
           RET
;
;
;****************************************************************
;     PUT_ASC16     ; 放置->16点阵ASC字符
;   入口参数:  yVISX,yVISY  大列数 行数
;              A  字符代码
;   使用寄存器: R1,R2,R6,R7
;****************************************************************
PUT_ASC16: PUSH  A
           CLR   C
           MOV   DPTR,#D_VISBUF
           MOV   A,yVISY
           ANL   A,#01FH
           MOV   B,#10H
           MUL   AB
           ADD   A,DPL
           ADD   A,yVISX
           MOV   R2,A
           MOV   A,B
           ADDC  A,DPH
           MOV   R1,A         ; R1,R2 存放缓冲区地址
;
           POP   A
           CLR   C
           MOV   DPTR,#TABASC16
           MOV   B,#16
           MUL   AB
           ADD   A,DPL
           MOV   DPL,A
           MOV   A,B
           ADDC  A,DPH
           MOV   DPH,A        ; 字符存放首址
;
           MOV   R7,#16
           MOV   R6,#00H
;
PUT_ASC161:MOV   A,R6
           MOVC  A,@A+DPTR
           PUSH  DPH
           PUSH  DPL
           MOV   DPL,R2
           MOV   DPH,R1
           MOVX  @DPTR,A
           CLR   C
           MOV   A,R2
           ADD   A,#10H
           MOV   R2,A
           CLR   A
           ADDC  A,R1
           MOV   R1,A
           POP   DPL
           POP   DPH
           INC   R6
           DJNZ  R7,PUT_ASC161
;
           RET
;
;
;****************************************************************
;     CLR_ASC16     ; QING
;   入口参数:  yVISX,yVISY  大列数 行数
;   使用寄存器: R1,R2,R6,R7
;****************************************************************
CLR_ASC16: MOV   A,yVISY
           ANL   A,#01FH
           MOV   B,#10H
           MUL   AB
           ADD   A,DPL
           ADD   A,yVISX
           MOV   R2,A
           MOV   A,B
           ADDC  A,DPH
           MOV   R1,A         ; R1,R2 存放缓冲区地址
;
;
           MOV   R7,#16
           MOV   R6,#00H
           MOV   A,#00H
;
CLR_ASC161:CLR   A
           MOV   DPH,R1
           MOV   DPL,R2
           MOVX  @DPTR,A
           CLR   C
           MOV   A,R2
           ADD   A,#10H
           MOV   R2,A
           CLR   A
           ADDC  A,R1
           MOV   R1,A
           DJNZ  R7,CLR_ASC161
;
           RET
;

;
;****************************************************************
;     PUT_HZ16     ; 放置->16点阵汉字
;   入口参数:  yVISX,yVISY  大列数 行数
;              A  字符代码
;****************************************************************
PUT_HZ16:  PUSH  A
           CLR   C
           MOV   DPTR,#D_VISBUF
           MOV   A,yVISY
           ANL   A,#01FH
           MOV   B,#10H
           MUL   AB
           ADD   A,DPL
           ADD   A,yVISX
           MOV   R2,A
           MOV   A,B
           ADDC  A,DPH
           MOV   R1,A         ; R1,R2 存放缓冲区地址
;
           POP   A
           CLR   C
           MOV   DPTR,#TABHZ
           MOV   B,#32
           MUL   AB
           ADD   A,DPL
           MOV   DPL,A
           MOV   A,B
           ADDC  A,DPH
           MOV   DPH,A        ; 字符存放首址
;
           MOV   R7,#16
           MOV   R6,#00H
;
PUT_HZ161: MOV   A,R6
           ADD   A,#10H
           MOVC  A,@A+DPTR
           MOV   B,A          ; 右半字模->B
           MOV   A,R6
           MOVC  A,@A+DPTR
           PUSH  DPH
           PUSH  DPL
           MOV   DPL,R2
           MOV   DPH,R1
           MOVX  @DPTR,A
           INC   DPTR
           MOV   A,B
           MOVX  @DPTR,A
           CLR   C
           MOV   A,R2
           ADD   A,#10H
           MOV   R2,A
           CLR   A
           ADDC  A,R1
           MOV   R1,A
           POP   DPL
           POP   DPH
           INC   R6
           DJNZ  R7,PUT_HZ161
;
           RET

;
;
;****************************************************************
;  FLASH_VIS    ; 闪烁显示
; 入口地址: 51H 闪烁标志
; 入口地址: 50H 显示个数
;****************************************************************

⌨️ 快捷键说明

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