📄 0-5v.txt
字号:
org 0000h
START: ;MOV 30h,#00H
;MOV 31h,#00H
;MOV 32h,#00H
MOV DPTR,#TABLE ;送段码表首地址
MOV 35H, #00H
SETB P3.4
SETB P3.5
CLR P3.6 ;选择ADC0808的通道3
WAIT: CLR p3.2
SETB p3.2 ;锁存A,B,C上的地址信息(ALE),清除内部寄存器(CLOCK)
CLR p3.2 ;启动转换
JNB p3.1,$ ;等待转换结束
SETB p3.0 ;允许输出
MOV 35h,P1 ;暂存转换结果
CLR p3.0 ;(OE低电平)关闭输出
MOV R0,#35h ;存放AD转换值的首地址
MOV R1,#38H ;存放BCD码的首地址
;MOV R2,#1 ;要转化的AD转换值的个数
MOV R4,#0 ;暂存转化结果的低位
MOV R5,#0 ;暂存转化结果的高位
CLR C
MOV A,@R0 ;取要转化的AD转换值
MOV B,#14H ;×20
MUL AB
MOV R3,A ;积低位存入TEMPLOW单元
MOV A,B
MOV R2,A ;积高位存入TEMPHIGH单元
CLR A ;转化程序
MOV R6,A
MOV R7,#10H
BP1:CLR C
MOV A,R3
RLC A
MOV R3,A ;把积低位带进位循环左移
MOV A, R2
RLC A
MOV R2,A ;把积高位带进位循环左移
MOV A ,R6
ADDC A ,R6
DA A
MOV R6 ,A ;把累加和存入R6 对进位操作
MOV A ,R5
ADDC A ,R5
DA A
MOV R5 ,A ;累加和存入R5 对进位操作
MOV A,R4
ADDC A,R4
SWAP A ;把低4位和高4位交换 先加再换 处理进位 进位为1左移 第一次
MOV R4,A
DJNZ R7,BP1 ;循环16次
MOV 30H,R6
MOV 31H,R5
MOV R0,#30H
MOV R1,#38H
MOV R7,#02H ;存地址
BP2: MOV A,@R0
ANL A,#0FH
MOV @R1,A
INC R1
MOV A,@R0
SWAP A
ANL A,#0FH
MOV @R1,A ;取所有位取出 然后逐位显示
INC R0
INC R1 ;R1是目的地址,R0是源地址
DJNZ R7, BP2 ;循环2次 处理成4个8位数 每个8位数为0xh
; RET
LCALL DISP ;显示AD转换结果
SJMP WAIT
;*******************
;显示子程序
;*******************
DISP:MOV A,#0FDH ;先显示整数个位
MOV P2,A
MOV A,3BH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
ORL A,#80H ;加小数点
MOV P0,A
CALL DELAY
MOV A, #0FBH ;小数部分第一位
MOV P2,A
MOV A,3AH
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A, #0F7H ;小数部分第二位
MOV P2,A
MOV A,39H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
MOV A, #0FEH ;整数的十位
MOV P2,A
MOV A,38H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P0,A
LCALL DELAY
RET
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH ;LED段选码
DELAY: MOV 40,#34H
D0: MOV 41,#19H
D1: DJNZ 41,D1 ;从41减
DJNZ 40,D0 ;从40减
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -