所用的指令为 MOVX 读指令,仍以图 9-17 所示为例,则有 MOV DPTR , #FE00H MOVX A , @DPTR 该指令在送出有效口地址的同时,发出 有效信号,使 0809 的输出允许信号 OE 有 效,从而打开三态门输出,是转换后的数据通过数据总线送入 A 累加器中。 这里需要说明的示,ADC0809 的三个地址端 A、B、C 即可如前所述与地址线相连,也可与数据线相连,例如与 D 0 ~D 2 相连。这是启动 A/D 转换的指令与上述类似,只不过 A 的内容不能为任意数,而必须和所选输入通道号 IN 0 ~IN 7 相一致。例如当 A、B、C 分别与 D 0 、D 1 、D 2 相连时,启动 IN 7 的 A/D 转换指令如下: MOV DPTR, #FE00H ;送入 0809 的口地址 MOV A ,#07H ;D2D1D0=111 选择 IN7 通道 MOVX @DPTR, A ;启动 A/D 转换 9.2.3 A/D 转换应用举例 设有一个 8 路模拟量输入的巡回监测系统,采样数据依次存放在外部 RAM 0A0H~0A7H 单元中,按图 9.10 所示的接口电路,ADC0809 的 8 个通道地址为 0FEF8H~0FEFFH.其数据采样的初始化程序和中断服务程序(假定只采样一次)如下: 初始化程序: MOV R 0 , #0A0H ;数据存储区首地址 MOV R 2 , #08H ;8 路计数器 SETB IT 1 ;边沿触发方式 SETB EA ;中断允许 SETB EX 1 ;允许外部中断 1 中断 MOV DPTR, #0FEF8H ;D/A 转换器地址 LOOP: MOVX @DPTR, A ;启动 A/D 转换 HERE: SJMP HERE ;等待中断 中断服务程序: DJNZ R 2 , ADEND MOVX A, @DPTR ;数据采样 MOVX @R 0 , A ;存数 INC DPTR ;指向下一模拟通道 INC R 0 ;指向数据存储器下一单元 MOVX @DPTR, A ADEND: RETI