📄 复件 电压表.asm
字号:
ORG 0000H
LJMP START
ORG 0003H
LJMP INT0 ;中断入口地址
START:
MOV SP,#60H
MOV R4,#0FFH ;设初值
MOV R7,#0FFH ;初始化
SETB IT0
SETB EA
SETB EX0 ;开INT0 允许
A_D: MOV A,#00H ;AD转换子程序
MOV DPTR,#78FFH ;附值接口地址
MOVX @DPTR,A ;启动 A_D
CJNE R7,#00H,$ ;等待 A_D 转换结束
MOV R7,#0FFH ;清读数标志
SJMP A_D ;循环跳转,为再次进行AD转换
INT0:
MOVX A,@DPTR ;读 A_D 数据
MOV B,#05H ;附乘数
MUL AB ;采集到的数据A*5
MOV R1,B ;去电压值的个位
MOV B,#0AH ;附乘数
MUL AB ;剩下的小数进一位
MOV R2,B ;去小数点后一为(0.1)
MOV B,#0AH
MUL AB
MOV R3,B ;取小数点后的第二位(0.01)
LCALL PLAY ;调用显示子程序
MOV R7,#00H ;置读数标志
MOV DPTR,#78FFH
MOV A,#00H
MOVX @DPTR,A ;重新附借口地址以及开启AD转换
RETI ;中断程序返回
PLAY: MOV DPTR,#DISPTAB ;置表地址
MOV A,R1 ;电压值各位查表
MOVC A,@A+DPTR
ORL A,#80H ;置小数点位
MOV P1,A ;把数据送往P1口,以下类同
MOV P2,#0FEH ;片选数码管,以下类同
LCALL DELAY
MOV A,R2 ;电压值0.1位查表
MOVC A,@A+DPTR
MOV P1,A
MOV P2,#0FDH
LCALL DELAY
MOV A,R3 ;电压值0.01位查表
MOVC A,@A+DPTR
MOV P1,A
MOV P2,#0FBH
LCALL DELAY
DJNZ R4,PLAY
RET ;子程序返回
DISPTAB:DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;表
DELAY: MOV R5,#20 ;延时子程序
DELAY1:DJNZ R5,DELAY1
RET
END ;程序结束
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -