📄 adc1.asm
字号:
TEMPHIGH EQU 35H
TEMPLOW EQU 34H
ORG 0000H
AJMP MAIN
ORG 0030H
MAIN:MOV 30H, #00H ;采样单元初始化
LOOP:
ACALL ADCON
ACALL HEXTBCD
ACALL DISPLAY
AJMP loop
;///////////////////////////////////////
;/ AD转换程序,利用查询方式,实时采样四路数据,
;/ 并分别存入30H~33H四个单元中
;///////////////////////////////////////
ADCON:
MOV DPTR,#08000H;通道0的地址
MOV R1,#30H
MOVX @DPTR,A ;启动AD转换
MOV R2,#20H
DLY:DJNZ R2,DLY
HE: JB P3.2,HE
MOVX A,@DPTR
MOV 30H,A
MOV R0,A
RET
;////////////////////
; / 显示预处理子程序,TEMPHIAH TEMPLOW存放AD转换值与20的乘积
; / R3为转换时所用循环次数16
; /R4 R5分别存放BCD码的低位和高位
;/处理后的结果分别存放入38H~3FH
;/////////////////////////
HEXTBCD:
MOV R0,#30H ;存放AD转换值的首地址
MOV R1,#38H ;存放BCD码的首地址
;MOV R2,#1 ;要转化的AD转换值的个数
MOV R4,#0 ;暂存转化结果的低位
MOV R5,#0 ;;暂存转化结果的高位
CLR C
MOV A,@R0 ;取要转化的AD转换值
MOV B,#20 ;×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
MOV A ,R5
ADDC A ,R5
DA A
MOV R5 ,A
MOV A,R4
ADDC A,R4
SWAP A
MOV R4,A
DJNZ R7,BP1
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
DJNZ R7, BP2
RET
;*******************
;显示子程序
;*******************
DISPLAY:MOV A,#0FEH
MOV P2,A
MOV A,3BH
MOV DPTR,#TABLE
MOVC A,@A+DPTR
ORL A,#80H ;加小数点
MOV P1,A
CALL DELAY
MOV A, #0FDH
MOV P2,A
MOV A,3AH
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV A, #0FBH
MOV P2,A
MOV A,39H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
MOV A, #0F7H
MOV P2,A
MOV A,38H
MOV DPTR, #TABLE
MOVC A,@A+DPTR
MOV P1,A
LCALL DELAY
RET
TABLE: DB 3FH,06H,5BH,4FH,66H
DB 6DH,7DH,07H,7FH,6FH
DELAY: MOV 40,#34H
D0: MOV 41,#19H
D1: DJNZ 41,D1
DJNZ 40,D0
RET
END
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -