📄 tab.asm
字号:
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 + -