A/D转换结束时,A/D转换芯片输出转换结束信号。转换结束信号也有两种:电平信号和脉冲信号。CPU检测到转换结束信号后,即可读取转换后的数据。CPU一般可以采用以下3种方式和A/D转换器进行联络来实现对转换数据的读取:
可画出ADC0808/0809和8086CPU的连接原理图如图1所示。
图1 ADC0808/0809与8086CPU的连接原理图
由于ADC0808/0809的数据输出带三态输出门,故可直接接到CPU数据总线上。按图5-56所示接线,74LS138译码出的地址范围正好是78H~7FH。低3位地址线A2~A0分别直接接到ADC0808/0809的采样地址输入端C、B、A上,用于选通8路输入通路中的其中一路。那么用一条输出指令即可启动某一通路开始转换(使ADC0808/0809的START端和ALE端得到一个启动正脉冲信号):
CONTV1:MOVAL,00H;可以是不为00H的其他数字
OUT78H,AL;选通IN0通路并开始转换
…CONTV7:MOVAL,00H;
OUT7FH,AL;选通IN7通路并开始转换
…
转换结束,ADC0808/0809从EOC端发出一个正脉冲信号,通过中断控制器8259A向CPU发出中断请求,CPU响应中断后,转去执行中断服务程序。在中断服务程序中,执行一条输入指令,即可读取转换后的数据。
例 AD574与8031的连接。
图2为AD574与8031单片机的接口电路。
利用该接口电路完成一次A/D转换,并把转换结果的高8位放入R2中,低8位放入R3中的
工作程序如下:
MAIN:MOVR0,#7CH;选择AD574,并令A0=0
MOVX@R0,A;启动A/D转换,全12位
LOOP:NOP
JBP3.2,LOOP;查询转换是否结束
MOVXA,@R0;读取高8位
MOVR2,A;存入R2中
MOVR0,#7DH;令A0=1
MOVXA,@R0;读取低4位,尾随4个0
MOVR3,A;存入R3中
…
例 位A/D转换器AD574与外部的连接。
图3是AD574与外部的连接电路。
设转换结束信号STS接8255A的PA,8255A初始化设定为A口输入。用查询法启动和
读取AD574的转换数据的接口程序如下:
OUTADPORT,AL;
启动A/D按12位转换,ADPORT是AD574的一个偶地址
WAIT1:INAL,PA;
读取转换结束信号,PA是8255A的A端口地址
MOVCL,03;
RCRAL,CL;右移三次
JCWAIT1;如为高电平,则等待
INAL,ADPORT;读取转换后的高8位数据
MOVAH,AL;高8位数据传送到AH
INAL,ADPORT+1;
读取转换后的低4位数据(后跟4个0)
…