📄 adc小数显示.asm
字号:
; SJ EQU 40H
ORG 0100H
LJMP MAIN
; ORG 0013H
; LJMP INT
MAIN: /* SETB EA
CLR EX0
SETB EX1
CLR IT1*/
LOOP: MOV DPTR,#7FF8H ;送入地址
MOVX @DPTR,A ;启动AD转换
MOV R6,#09H ;延时等待
DELAY: NOP
NOP
DJNZ R6,DELAY
MOVX A,@DPTR ;数据送入累加器
CALL XSZH
mov p0,#00
lCALL DISPLAY
JMP LOOP
;*********************************************************
; 一位小数转换子程序(转换成显码)
;入口数据存放在累加器A中(8位有效数),中间寄存器有: B,R0,R1
;出口显示: 共阳极数码管,显示数据个位存放R0 中,十分位存放R1中
;
;;********************************************************
XSZH: MOV B,#2H ;V0扩大100倍,即5.0----〉(256~250)*2
MUL AB ;乘法A*B=BA
MOV R2,B
CJNE R2,#00H,SS ;判断是否存在进位
MOV R0,#00H ;无进位时R0,R1的值
MOV R1,#00H
JMP SSS
SS: MOV R0,#2H ;有进位时R0,R1的值
MOV R1,#5H
SSS: MOV B,#0AH ;缩小10倍
DIV AB ;A/B=A....B
NOP
NOP
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/* PUSH ACC
MOV R4,B
MOV A,R4
SUBB A,#03
MOV R4,A
POP ACC*/
ADD A,R1 ;并修正十分位
MOV B,#0AH ;再缩小10倍
DIV AB
NOP
NOP
ADD A,R0 ;修正个位
MOV R0,A ;个位存在R0
MOV R1,B ;十分位存在R1
DL0: MOV A,R0 ;取个位,
ACALL TABLE0 ;转换为显码
MOV 33H,A ;送显码输出
mov a,#00
MOV A,R1 ;取十分位
ACALL TABLE ;转换为显码
MOV 34H,A ;送显码输出
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
MOV A,R4
CALL TABLE0
MOV 35H,A
RET
;******************************************
;
;
;******************************************
TABLE: INC A ;读十分位表
MOVC A,@A+PC
;MOV DPTR,#SHI
;MOVC A,@A+DPTR
RET
SHI:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;十分位表*/
TABLE0: INC A ;读个位表
MOVC A,@A+PC
;MOV DPTR,#GW
;MOVC A,@A+DPTR
RET
GW:DB 40H,079H,024H,030H,19H,12H,2H,078H,0FFH,10H ;个位表
;******************************************;
; LED 显示子程序
; 显示缓冲区为33H--35H
;******************************************;
DISPLAY:
MOV A,33H ;
; DA A
MOV P1,A ;送至P1口进行显示
SETB P3.0
CLR P3.1
LCALL DELAY1
MOV A,34H
;DA A
MOV P1,A
SETB P3.1
CLR P3.0
LCALL DELAY1
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
/* MOV A,35H
;DA A
MOV P1,A
SETB P3.2
CLR P3.0
CLR P3.1
LCALL DELAY1*/
RET
;****************************************
;延时程序
;****************************************
DELAY1: MOV R5,#01H ;延时子程序
D: MOV R3,#0FFH
E: DJNZ R3,E
DJNZ R5,D
RET
DELAY2: MOV R5,#01H ;延时子程序
X: MOV R3,#0E2H
Z: DJNZ R3,Z
DJNZ R5,X
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -