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

📄 tab.asm

📁 一个点阵LED屏动态扫描显示的控制程序
💻 ASM
📖 第 1 页 / 共 4 页
字号:
FLASH_VIS: MOV   R4,#00H
           MOV   R3,#00H
;
FLASHVIS1: MOV   DPTR,#D_VISBUF
           MOV   DPL,R3
           MOVX  A,@DPTR
           MOV   DPTR,#D_VISBUF2
           MOV   DPL,R3
           MOVX  @DPTR,A
           INC   R3
           DJNZ  R4,FLASHVIS1
;
           MOV   R4,#08H
           MOV   R3,#00H
           CLR   C
           MOV   R0,51H
;
FLASHVIS2: MOV   A,R0
           RLC   A
           MOV   R0,A
           JNC   FLASHVIS3
           MOV   DPTR,#D_VISBUF2
           MOV   yVISX,R3
           MOV   yVISY,#00H
           LCALL CLR_ASC16
FLASHVIS3: INC   R3
           DJNZ  R4,FLASHVIS2
;
           RET
;
;
;****************************************************************
;     VIS_BUF    ; 显示50H~5AH字符
;   入口参数:  50H  字符个数
;              51H  闪烁标志
;              52H  闪烁次数
;              53H~5AH 显示字符代码
; 使用寄存器: R1,R2,R4,R6,R7,R0
;****************************************************************
VIS_BUF:   MOV    R4,50H
           MOV    yVISX,#00H
           MOV    R0,#53H
;
VIS_BUF1:  MOV    A,@R0
           JB     ACC.7,VIS_BUF2
           MOV    yVISY,#00H
           LCALL  PUT_ASC16     ; 放置->16点阵ASC字符
           INC    yVISX
           SJMP   VIS_BUF3
;
VIS_BUF2:  ANL    A,#07FH
           MOV    yVISY,#00H
           LCALL  PUT_HZ16
           INC    yVISX
           INC    yVISX
VIS_BUF3:  INC    R0
           DJNZ   R4,VIS_BUF1
;
           CLR    C
           MOV    A,51H
           JZ     VIS_BUF4
           ; 需闪烁  ******
           LCALL  FLASH_VIS           ; 闪烁显示
           SETB   biFRMFS
           MOV    yFLSHDEL,52H
;
VIS_BUF4:  RET
;
;****************************************************************
;     PUT_ASC32     ; 放置->32点阵ASC字符
;   入口参数:  yVISX,yVISY  大列数 行数
;              A  字符代码
;****************************************************************
PUT_ASC32: 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,#TABASC32
           MOV   B,#64
           MUL   AB
           ADD   A,DPL
           MOV   DPL,A
           MOV   A,B
           ADDC  A,DPH
           MOV   DPH,A        ; 字符存放首址
;
           MOV   R7,#32
           MOV   R6,#00H
;
PUT_ASC321:MOV   A,R6
           RL    A
           MOVC  A,@A+DPTR
           PUSH  DPH
           PUSH  DPL
           MOV   DPL,R2
           MOV   DPH,R1
           MOVX  @DPTR,A
;
           POP   DPL
           POP   DPH
           MOV   A,R6
           RL    A
           INC   A
           MOVC  A,@A+DPTR
           PUSH  DPH
           PUSH  DPL
           MOV   DPL,R2
           MOV   DPH,R1
           INC   DPTR
           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_ASC321
;
           RET

;
;****************************************************************
;     PUT_FULL     ; 放置全屏缺省(51)
;****************************************************************
PUT_FULL:  CLR   C
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULL1: MOV   DPTR,#TAB_FULL
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_VISBUF
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULL1
;
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULL2: MOV   DPTR,#TAB_FULL
           INC   DPH
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_VISBUF
           INC   DPH
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULL2

;
           RET
;
;
;****************************************************************
;     PUT_FULLB     ; 放置全屏缺省(2864)
;****************************************************************
PUT_FULLB: CLR   C
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULB1: MOV   DPTR,#D_VISDOT
           MOV   DPL,R6
           MOVX  A,@DPTR
           MOV   DPTR,#D_VISBUF
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULB1
;
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULB2: MOV   DPTR,#D_VISDOT
           INC   DPH
           MOV   DPL,R6
           MOVX  A,@DPTR
           MOV   DPTR,#D_VISBUF
           INC   DPH
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULB2

;
           RET
;

;****************************************************************
;     PUT_FULLC     ; 放置全屏缺省(51)
;****************************************************************
PUT_FULLC: CLR   C
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULC1: MOV   DPTR,#TAB_DEF
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_VISBUF
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULC1
;
           MOV   R7,#00H
           MOV   R6,#00H
;
PUT_FULC2: MOV   DPTR,#TAB_DEF
           INC   DPH
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_VISBUF
           INC   DPH
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,PUT_FULC2

;
           RET
;

;
;****************************************************************
;     GET_DEL     ;
;****************************************************************
GET_DEF:   CLR   C
           MOV   R7,#00H
           MOV   R6,#00H
;
GET_DEF1:  MOV   DPTR,#TAB_DEF
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_DOTBUF
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,GET_DEF1
;
           MOV   R7,#00H
           MOV   R6,#00H
;
GET_DEF2:  MOV   DPTR,#TAB_DEF
           INC   DPH
           MOV   A,R6
           MOVC  A,@A+DPTR
           MOV   DPTR,#D_DOTBUF
           INC   DPH
           MOV   DPL,R6
           MOVX  @DPTR,A
           INC   R6
           DJNZ  R7,GET_DEF2
;
           MOV   yWRTBGH,#00H
           MOV   yWRTBGL,#00H
           RET
;

;
;****************************************************************
;  VIS_FRM     ; 加外框
;****************************************************************
VIS_FRM:   MOV   DPTR,#D_VISBUF
           MOV   R7,#10
;
VIS_FRM1:  MOV   A,#0FFH
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,VIS_FRM1
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#010H
           MOV   R7,#10
;
VIS_FRM2:  MOV   A,#0FFH
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,VIS_FRM2
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#0E0H
           INC   DPH
           MOV   R7,#10
;
VIS_FRM3:  MOV   A,#0FFH
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,VIS_FRM3
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#0F0H
           INC   DPH
           MOV   R7,#10
;
VIS_FRM4:  MOV   A,#0FFH
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,VIS_FRM4

;
           MOV   DPTR,#D_VISBUF
           MOV   R7,#32
;
VIS_FRM5:  MOVX  A,@DPTR
           ORL   A,#0C0H
           MOVX  @DPTR,A
           CLR   C
           MOV   A,#10H
           ADD   A,DPL
           MOV   DPL,A
           CLR   A
           ADDC  A,DPH
           MOV   DPH,A
           DJNZ  R7,VIS_FRM5
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#09
           MOV   R7,#32
;
VIS_FRM6:  MOVX  A,@DPTR
           ORL   A,#03H
           MOVX  @DPTR,A
           CLR   C
           MOV   A,#10H
           ADD   A,DPL
           MOV   DPL,A
           CLR   A
           ADDC  A,DPH
           MOV   DPH,A
           DJNZ  R7,VIS_FRM6
;
           RET
;
;
;****************************************************************
;  CLR_FRM     ; 清外框
;****************************************************************
CLR_FRM:   MOV   DPTR,#D_VISBUF
           MOV   R7,#10
;
CLR_FRM1:  MOV   A,#00H
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,CLR_FRM1
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#010H
           MOV   R7,#10
;
CLR_FRM2:  MOV   A,#00H
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,CLR_FRM2
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#0E0H
           INC   DPH
           MOV   R7,#10
;
CLR_FRM3:  MOV   A,#00H
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,CLR_FRM3
;
           MOV   DPTR,#D_VISBUF
           MOV   DPL,#0F0H
           INC   DPH
           MOV   R7,#10
;
CLR_FRM4:  MOV   A,#00H
           MOVX  @DPTR,A
           INC   DPTR
           DJNZ  R7,CLR_FRM4

;

⌨️ 快捷键说明

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