AD转换子程序
实验6 AD转换器实验
配合教材p227-p233,根据虚拟实验的环境所提供的子程序
; ---------------------------
; 程序名称:ADC0832数据采集子程序
; 功能:采集ADC0832采集的数据
; 数据采集的结果存:20H
; 占用的寄存器:R5,A,CY
; ---------------------------
AD: MOV R5,#8
CLR CS
CLR CK1
SETB CK1
CLR CK1
SETB CK1
CLR CK1
CLR DO1
NOP
NOP
SETB CK1
NOP
NOP
CLR CK1
SETB DO1
NOP
NOP
SETB CK1
NOP
NOP
ADA: CLR CK1
MOV C,DO1
RLC A
SETB CK1
DJNZ R5,ADA
SETB CS
MOV 20H,A
RET
; ----------------------------
; 子程序名称:CAL_VOL
; 功能:将AD转换结果(已存放在20H中)处理成为带一位小数点的十进制数
; 入口:内部ram 20H-- 十六进制数
; 出口:V_1 (77H)--用于电压0.1位值的显示;V_10(76H)--用于电压个位值的显示;; 占用的寄存器:A,B
; ------------------------------------------------------------
CAL_VOL: MOV A,20H ;算法是:x*(5/256)*10=x*50/256/10
MOV B,#100 ;虚拟实验中ADC0832获取的值只有实际值的一半,只好乘2了
MUL AB
MOV A,B
MOV B,#10
DIV AB
MOV V_10,A
MOV V_1, B
RET
;*******************************************************
;这是一个用5个CD4094做的显示参考子程序
;在单片机Proteus的实验中可用此程序代替实验版中的LCD
;程序名:display
;功能:显示LED 的5位数字
;说明:所显示的数字个位~万位的内容存于RAM75~79H
;占用R0,R7,DPTR
;*******************************************************
DIN BIT P2.6
CLK BIT P2.7
STB BIT P2.3
DISPLAY:MOV R0,#75H
DP12: CLR STB
MOV R7,#8
MOV A,@R0
MOV DPTR,#TAB
MOVC A,@A+DPTR
DP13: RLC A
MOV DIN,C
CLR CLK
SETB CLK
DJNZ R7,DP13
INC R0
CJNE R0,#7AH,DP12
SETB STB
RET
TAB: DB 0C0H,0F9H,0A4H,0B0H,99H,92H ;0,1,2,3,4,5
DB 82H,0F8H,80H,90H,0FFH,9DH,0C6H;6,7,8,9,暗,u,C
DELAY: MOV R4,#10
L1: MOV R5,#0
L2: MOV R6,#0
L3: DJNZ R6,L3
DJNZ R5,L2
DJNZ R4,L1
RET