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