/*-------------------------------------------
子程序名: ADC0832子程序
程序功能: 将模拟电压量转换成数字量
实现方法: 串行通信。
CPU说明: MCS-51
植入说明: 占用A、B、CY、R7
------------------www.eedz.net-------------------------*/
;以下接口定义根据硬件连线更改
ADCS BIT P3.5 ;使能接口
ADCLK BIT P3.4 ;时钟接口
ADDO BIT P3.3 ;数据输出接口(复用)
ADDI BIT P3.3 ;数据输入接口
;以下语句在调用转换程序前设定
MOV B,#00H ;装入通道功能选择数据值
;以下为ADC0832读取数据子程序
;==== ADC0832读数据子程序====
ADCONV:
SETB ADDI ;初始化通道选择
NOP
NOP
CLR ADCS ;拉低/CS端
NOP
NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿
MOV A,B
MOV C,ACC.1 ;确定取值通道选择
MOV ADDI,C
NOP
NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿2
MOV A,B
MOV C,ACC.0 ;确定取值通道选择
MOV ADDI,C
NOP
-DYDIY-
NOP
SETB ADCLK ;拉高CLK端
NOP
NOP
CLR ADCLK ;拉低CLK端,形成下降沿3
SETB ADDI
NOP
NOP
MOV R7,#8 ;准备送下后8个时钟脉冲
AD_1:
MOV C,ADDO ;接收数据
MOV ACC.0,C
RL A ;左移一次
SETB ADCLK
NOP
NOP
CLR ADCLK ;形成一次时钟脉冲
NOP
NOP
DJNZ R7,AD_1 ;循环8次
MOV C,ADDO ;接收数据
MOV ACC.0,C
MOV B,A
MOV R7,#8
AD_13:
MOV C,ADDO ;接收数据
MOV ACC.0,C
RR A ;左移一次
SETB ADCLK
NOP
NOP
CLR ADCLK ;形成一次时钟脉冲
NOP
NOP
DJNZ R7,AD_13 ;循环8次
CJNE A,B,ADCONV ;数据校验
SETB ADCS ;拉高/CS端
CLR ADCLK ;拉低CLK端
SETB ADDO ;拉高数据端,回到初始状态
RET
;====子程序结束====EEDE.NET