📄 lcdspeedmeter.asm
字号:
ORL LCDDATA4,#00001100B
LJMP SPEEDTAB2OUT
SPEEDTAB2P: ;===F
ANL LCDDATA1,#11110111B ; 2D=1
ORL LCDDATA1,#00000000B
ANL LCDDATA2,#11110011B ; 2C=1,2E=1
ORL LCDDATA2,#00000100B
ANL LCDDATA3,#11110011B ; 2B=1,2G=0
ORL LCDDATA3,#00000100B
ANL LCDDATA4,#11110011B ; 2A=1,2F=1
ORL LCDDATA4,#00001100B
LJMP SPEEDTAB2OUT
SPEEDTAB2OUT:
MOV A,RPMSPEED0
SWAP A
ANL A,#0FH
RL A
RL A
MOV DPTR,#SPEEDTAB3
JMP @A+DPTR
SPEEDTAB3:
NOP
LJMP SPEEDTAB3A
NOP
LJMP SPEEDTAB3B
NOP
LJMP SPEEDTAB3C
NOP
LJMP SPEEDTAB3D
NOP
LJMP SPEEDTAB3E
NOP
LJMP SPEEDTAB3F
NOP
LJMP SPEEDTAB3G
NOP
LJMP SPEEDTAB3H
NOP
LJMP SPEEDTAB3I
NOP
LJMP SPEEDTAB3J
NOP
LJMP SPEEDTAB3K
NOP
LJMP SPEEDTAB3L
NOP
LJMP SPEEDTAB3M
NOP
LJMP SPEEDTAB3N
NOP
LJMP SPEEDTAB3O
NOP
LJMP SPEEDTAB3P
SPEEDTAB3A: ;===0
JB FZERO3,SPEEDTAB3A0
ORL LCDDATA1,#00100000B ; D=1
ORL LCDDATA2,#00110000B ; C=1,E=1
ANL LCDDATA3,#11001111B ; B=1,G=0
ORL LCDDATA3,#00100000B
ORL LCDDATA4,#00110000B ; A=1,F=1
LJMP SPEEDTAB3OUT
SPEEDTAB3A0:
ANL LCDDATA1,#11011111B ; D=0
ANL LCDDATA2,#11001111B ; C=0,E=0
ANL LCDDATA3,#11001111B ; B=0,G=0
ANL LCDDATA4,#11001111B ; A=0,F=0
LJMP SPEEDTAB3OUT
SPEEDTAB3B: ;===1
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00000000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=0
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00100000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00000000B
LJMP SPEEDTAB3OUT
SPEEDTAB3C: ;===2
ORL LCDDATA1,#00100000B ; 2D=1
ANL LCDDATA2,#11001111B ; 2C=0,2E=1
ORL LCDDATA2,#00010000B
ORL LCDDATA3,#00110000B ; 2B=1,2G=1
ANL LCDDATA4,#11001111B ; 2A=1,2F=0
ORL LCDDATA4,#00100000B
LJMP SPEEDTAB3OUT
SPEEDTAB3D: ;===3
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00100000B
LJMP SPEEDTAB3OUT
SPEEDTAB3E: ;===4
ANL LCDDATA1,#11011111B ; 2D=0
ANL LCDDATA2,#11001111B ; 2C=1,2E=0
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=1
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=0,2F=1
ORL LCDDATA4,#00010000B
LJMP SPEEDTAB3OUT
SPEEDTAB3F: ;===5
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00010000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3G: ;===6
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00110000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00010000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3H: ;===7
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00000000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00100000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00100000B
LJMP SPEEDTAB3OUT
SPEEDTAB3I: ;===8
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00110000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3J: ;===9
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00100000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3K: ;===A
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00000000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00110000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3L: ;===B
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00110000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00010000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00010000B
LJMP SPEEDTAB3OUT
SPEEDTAB3M: ;===C
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00010000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00000000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3N: ;===D
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00110000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00110000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00000000B
LJMP SPEEDTAB3OUT
SPEEDTAB3O: ;===E
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00100000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00010000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00010000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3P: ;===F
ANL LCDDATA1,#11011111B ; 2D=1
ORL LCDDATA1,#00000000B
ANL LCDDATA2,#11001111B ; 2C=1,2E=1
ORL LCDDATA2,#00010000B
ANL LCDDATA3,#11001111B ; 2B=1,2G=0
ORL LCDDATA3,#00010000B
ANL LCDDATA4,#11001111B ; 2A=1,2F=1
ORL LCDDATA4,#00110000B
LJMP SPEEDTAB3OUT
SPEEDTAB3OUT:
MOV A,RPMSPEED0
ANL A,#0FH
RL A
RL A
MOV DPTR,#SPEEDTAB4
JMP @A+DPTR
SPEEDTAB4:
NOP
LJMP SPEEDTAB4A
NOP
LJMP SPEEDTAB4B
NOP
LJMP SPEEDTAB4C
NOP
LJMP SPEEDTAB4D
NOP
LJMP SPEEDTAB4E
NOP
LJMP SPEEDTAB4F
NOP
LJMP SPEEDTAB4G
NOP
LJMP SPEEDTAB4H
NOP
LJMP SPEEDTAB4I
NOP
LJMP SPEEDTAB4J
NOP
LJMP SPEEDTAB4K
NOP
LJMP SPEEDTAB4L
NOP
LJMP SPEEDTAB4M
NOP
LJMP SPEEDTAB4N
NOP
LJMP SPEEDTAB4O
NOP
LJMP SPEEDTAB4P
SPEEDTAB4A: ;===0
ORL LCDDATA1,#10000000B ; D=1
ORL LCDDATA2,#11000000B ; C=1,E=1
ANL LCDDATA3,#00111111B ; B=1,G=0
ORL LCDDATA3,#10000000B
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4B: ;===1
ANL LCDDATA1,#01111111B ; D=0
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ANL LCDDATA3,#00111111B ; B=1,G=0
ORL LCDDATA3,#10000000B
ANL LCDDATA4,#00111111B ; A=0,F=0
LJMP SPEEDTAB4OUT
SPEEDTAB4C: ;===2
ORL LCDDATA1,#10000000B ; D=1
ANL LCDDATA2,#00111111B ; C=0,E=1
ORL LCDDATA2,#01000000B
ORL LCDDATA3,#11000000B ; B=1,G=1
ANL LCDDATA4,#00111111B ; A=1,F=0
ORL LCDDATA4,#10000000B
LJMP SPEEDTAB4OUT
SPEEDTAB4D: ;===3
ORL LCDDATA1,#10000000B ; D=1
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ORL LCDDATA3,#11000000B ; B=1,G=1
ANL LCDDATA4,#00111111B ; A=1,F=0
ORL LCDDATA4,#10000000B
LJMP SPEEDTAB4OUT
SPEEDTAB4E: ;===4
ANL LCDDATA1,#01111111B ; D=0
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ORL LCDDATA3,#11000000B ; B=1,G=1
ANL LCDDATA4,#00111111B ; A=0,F=1
ORL LCDDATA4,#01000000B
LJMP SPEEDTAB4OUT
SPEEDTAB4F: ;===5
ANL LCDDATA1,#01111111B ; D=1
ORL LCDDATA1,#10000000B
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ANL LCDDATA3,#00111111B ; B=0,G=1
ORL LCDDATA3,#01000000B
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4G: ;===6
ORL LCDDATA1,#10000000B ; D=1
ORL LCDDATA2,#11000000B ; C=1,E=1
ANL LCDDATA3,#00111111B ; B=0,G=1
ORL LCDDATA3,#01000000B
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4H: ;===7
ANL LCDDATA1,#01111111B ; D=0
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ANL LCDDATA3,#00111111B ; B=1,G=0
ORL LCDDATA3,#10000000B
ANL LCDDATA4,#00111111B ; A=1,F=0
ORL LCDDATA4,#10000000B
LJMP SPEEDTAB4OUT
SPEEDTAB4I: ;===8
ORL LCDDATA1,#10000000B ; D=1
ORL LCDDATA2,#11000000B ; C=1,E=1
ORL LCDDATA3,#11000000B ; B=1,G=1
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4J: ;===9
ORL LCDDATA1,#10000000B ; D=1
ANL LCDDATA2,#00111111B ; C=1,E=0
ORL LCDDATA2,#10000000B
ORL LCDDATA3,#11000000B ; B=1,G=1
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4K: ;===A
ANL LCDDATA1,#01111111B ; 2D=0
ORL LCDDATA2,#11000000B ; 2C=1,2E=1
ORL LCDDATA3,#11000000B ; 2B=1,2G=1
ORL LCDDATA4,#11000000B ; 2A=1,2F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4L: ;===B
ORL LCDDATA1,#10000000B ; D=1
ORL LCDDATA2,#11000000B ; C=1,E=1
ANL LCDDATA3,#00111111B ; B=0,G=1
ORL LCDDATA3,#01000000B
ANL LCDDATA4,#00111111B ; A=0,F=1
ORL LCDDATA4,#01000000B
LJMP SPEEDTAB4OUT
SPEEDTAB4M: ;===C
ORL LCDDATA1,#10000000B ; D=1
ANL LCDDATA2,#00111111B ; C=0,E=1
ORL LCDDATA2,#01000000B
ANL LCDDATA3,#00111111B ; B=0,G=0
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4N: ;===D
ORL LCDDATA1,#10000000B ; D=1
ORL LCDDATA2,#11000000B ; C=1,E=1
ORL LCDDATA3,#11000000B ; B=1,G=1
ANL LCDDATA4,#00111111B ; A=0,F=0
LJMP SPEEDTAB4OUT
SPEEDTAB4O: ;===E
ORL LCDDATA1,#10000000B ; D=1
ANL LCDDATA2,#00111111B ; C=0,E=1
ORL LCDDATA2,#01000000B
ANL LCDDATA3,#00111111B ; B=0,G=1
ORL LCDDATA3,#01000000B
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4P: ;===F
ANL LCDDATA1,#01111111B ; D=0
ANL LCDDATA2,#00111111B ; C=0,E=1
ORL LCDDATA2,#01000000B
ANL LCDDATA3,#00111111B ; B=0,G=1
ORL LCDDATA3,#01000000B
ORL LCDDATA4,#11000000B ; A=1,F=1
LJMP SPEEDTAB4OUT
SPEEDTAB4OUT:
RET
;*******************************************************************************
;** 子程序名:H2B20
;** 功 能:20位十六进制整数转换成三字节BCD码整数
;** 入口条件:待转换的双字节十六进制整数在R5、R6、R7中。
;** 出口信息:转换后的三字节BCD码整数在R2、R3、R4中。
;** 影响资源:PSW、A、R1~R7 堆栈需求: 2字节
;*******************************************************************************
H2B20:
CLR A ; BCD码初始化
MOV R2,A
MOV R3,A
MOV R4,A
MOV R1,#14H ; 转换20位十六进制整数
MOV A,R5 ; 整体左移4位
SWAP A
ANL A,#0F0H
MOV R5,A
MOV A,R6
SWAP A
ANL A,#0FH
ORL A,R5
MOV R5,A
MOV A,R6
SWAP A
ANL A,#0F0H
MOV R6,A
MOV A,R7
SWAP A
ANL A,#0FH
ORL A,R6
MOV R6,A
MOV A,R7
SWAP A
MOV R7,A
HB3:
MOV A,R7 ; 从高端移出待转换数的一位到CY中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5
RLC A
MOV R5,A
MOV A,R4 ; BCD码带进位自身相加,相当于乘2
ADDC A,R4
DA A ; 十进制调整
MOV R4,A
MOV A,R3
ADDC A,R3
DA A
MOV R3,A
MOV A,R2
ADDC A,R2
DA A
MOV R2,A ; 双字节十六进制数的万位数不超过6,不用调整
DJNZ R1,HB3 ; 处理完16BIT
RET
;******************************************************************************
;********************** END OF FILE *******************************************
;******************************************************************************
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -