📄 数字电压表.asm
字号:
共阳极连接,P1口为字段码口,P3口为位选口
P3。5为单路/循环显示转换按键,P3.6为单路显示时当时通道选择的按键
70H-77H存放采样的8个数据,78H-7BH为显示缓冲区,分别为个位、十位、百位和当前通道值
00H们为单路。循环显示控制位,当为0时循环显示,为1时单路显示
ORG OOOOH
LJMP START
START: MOV R0,#70H
MOV R2,#0BH
CLR A
T1: MOV @R0,A
INC R0
DJNZ R2,T1
MOV P1,A
MOV P2,A
MOV P3,A
MAIN: LCALL TEST
LCALL DISPLAY
AJMP MAIN
AD转换子程序
TEST: CLR A
MOV RO,#70H
MOV R1,#0H
LCALL AD
WAIT: JNB P3.7,WAIT
LCALL READAD
AD: SETB P2.3
NOP
NOP
CLR P2.3
SETB P2.4
NOP
NOP
CLR P2.4
NOP
NOP
NOP
NOP
RET
READAD: SETB P2.5
MOV A,P0
CLR P2.5
MOV @R0,A
INC @R1
INC R0
CLR A
MOV P2,A
CJNE @R1,#08H,AD
MOV A,#0FFH
MOV P1,A
MOV P0,A
MOV P2,A
RET
DISPLAY: JB 00H,DISPLAY2
MOV R0,#70H
MOV R1,#08H
MOV 7BH,#0H
DISPLAY1:LCALL TUNBCD 显示三位BCD码子程序
MOV R3,#0FFH
DIS: LCALL DISP
LCALL KEYSCAN1
DJNZ R3,DIS
INC R0
INC 7BH
DJNZ R1,DISPLAY1
RET
DISPLAY2: DEC @R0
DEC 7BH
LCALL TUNBCD
MOV R1,#0FFH
T2: LCALL DISP
LCALL KEYSCAN2
DJNZ @R1,T2
INC @R0
INC 7BH
RET
KEYSCAN2: JNB P3.5,KEYSCAN1
JNB P3.6,K2WAIT
KGOR: RET
K2WAIT: LCALL DISP
JB P3.6,KGOR
JNB P3.6,K2WAIT1
K2WAIT2: INC @R0
CJNZ @R0,#08H,K2WAIT3
MOV @RO,#0H
K2WAIT3: INC 7BH
MOV A,7BH
CJNZ A,#08H,K2WAIT4
MOV 78H,#0H
RET
K2WAIT4: MOV R1,#0AH
RET
K2WAIT1: LCALL DISP
JNB P3.6,K2WAIT1
JB P3.6,K2WAIT2
KEYSCAN1: JNB P3.5,WAIT1
GOR: RET
WAIT1: LCALL DISP
JB P3.5,GOR
JNB WAIT2
WAIT3: CPL OOH
MOV R1,#1
MOV R3,#0AH
RET
WAIT2: LCALL DISP
JNB WAIT2
JB WAIT3
显示子程序
DISP:MOV R0,#78H
MOV R4,#0FEH
MOV R6,#04H
DISP1: MOV A,@RO
MOV DPTR,#TAB
MOV A,@A+DPTR
MOV P1,A
MOV P3,@R4
DELAY1MS
INC R0
MOV A,@R4
RL A
MOV @R4,A
DJNZ R6,DISP1
RET
显示三位BCD码子程序
TUNBCD: MOV A,@RO
MOV B,#51H
DIV AB
MOV 7AH,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP2
ADD A,#5
LOOP2: MOV 79H,A
MOV A,B
CLR F0
SUBB A,#1AH
MOV F0,C
MOV A,#10H
MUL AB
MOV B,#51
DIV AB
JB F0,LOOP3
ADD A,#5
LOOP3: MOV 78H,A
RET
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -