第10章数模转换与模数转换接口及其应用课件.ppt
概 述,A/D和D/A转换器是把微型计算机的应用领域扩展到检测和过程控制的必要装置,是把计算机和生产过程、科学实验过程联系起来的重要桥梁。下图给出了A/D、D/A转换器在微机检测和控制系统中的应用实例框图。,10.1 DA转换器及其接口技术,一、DA转换器及其接口 D/A转换器的功能是把二进制数字量电信号转换为与其数值成正比的模拟量电信号。在D/A参数中一个最重要的参数就是分辨率,它是指输入数字量发生单位数码变化时,所对应输出模拟量(电压或电流)的变化量。,分辨率是指输入数字量最低有效位为 1 时,对应输出可分辨的电压变化量U与最大输出电压Um之比,即分辨率=1/(21),n,最小阶梯电压参考电压*分辨率=参考电压/(2n1),实现D/A转换器和微型计算机接口技术的关键是数据锁存问题。有些D/A转换器芯片本身带有锁存器,但也有些D/A从转换器芯片本身不带锁存器。此时一些并口芯片如8212,74LS273及可编程的并行I/O接口芯片8255A均可作为D/A转换的锁存器。,数据CSWR,输出,8255,数据,输出,WR,AD,AD,二、并行8位D/A转换芯片AD558及其接口 1、AD558的内部结构框图,2、AD558与PC机的连接图,CODESEGMENTASSUME CS:CODESTART:MOV CX,256MOV AL,0MOV DX,30CHLOOP1:OUT DX,AL;输出AL内容CALL DELAY;延时INC AL;AL内容加1LOOP LOOP1;循环256次JMP START;重新输出下一;个锯齿波CODE ENDSEND START,DAC0832逻辑结构框图,(1)双缓冲方式(LE1和LE2分别控制)(2)单缓冲方式(其中LE1和LE2有一个直通)(3)直通方式(LE1和LE2均为直通)注:在DAC实际连接中,要注意区分“模拟地”和“数字地”的连接,为了避免信号串扰,数字量部分只能连接到数字地,而模拟量部分只能连接到模拟地。,DAC0832有三种工作方式:,(3)设计,硬件设计 根据上述分析,接口电路主要是提供并处理缓冲方式和写操作的5根信号线,故采用普通IC芯片就可以组成接口电路。图中,DAC0832工作在单缓冲方式,并且只对第1级锁存器的WR1进行了控制,而第2级锁存器的WR2固定接地,未进行控制。,软件设计,根据设计要求产生连续的锯齿波,可知本程序是一个循环结构,其程序流程图如图所示。,程序清单如下:,SAWTOOTH PROC FAR MOV AX,DATA MOV DS,AX MOV AL,00H;置AL=0 LOP:MOV DX,314H;端口地址 OUT DX,AL;AL的值送DAC0832 MOV BL,AL;保存ALBL MOV AH,0BH;是否有键按下?INT 21H,CMP AL,0FFH JE STOP;有,停止输出波形 MOV AL,BL;无,恢复AL的值 INC AL;AL加1 JMP LOP;继续循环输出波形 STOP:MOV AX,4C00H;退出 INT 21H SAWTOOTH ENDP,输出三角波程序段如下:MOV DX,314H;DAC0832的端口地址 MOV AL,0H;输出数据0TN1:OUT DX,AL INC AL;输出数据加1 JNZ TN1 MOV AL,0FFH;输出数据0FFHTN2:OUT DX,AL DEC AL;输出数据减1 JNZ TN2 JMP TN1,(4)讨论,利用DAC产生锯齿波输出的方法是,将从0开始逐渐递增的数据送到DAC,直到FFH,再回到0。重复上述过程,就可得到周期性的锯齿波电压。实际上,从0到FFH,中间分为256个小台阶,但从宏观上看,是一个线性增长的电压直线。DAC0832的3种缓冲方式,用在不同的场合。双缓冲方式用于需要多个不同模拟量同时输出的系统中;单缓冲与直通方式都用于单个模拟量输出的场合。单缓冲常用在采用普通IC芯片的DAC接口中,直通方式常用于采用可编程并行接口芯片的DAC接口中。,三、串行8位D/A转换器TLC5620,第一级缓冲,第二级缓冲,数据写入方式(LDAC更新DAC输出),数据写入方式(LOAD更新DAC输出),TLC5620与8255A的连接,MOV CL,5;先把AX内容左移5位SHL AX,CLMOV DX,AX;DX为串行输出的数据,最高位为通道选择MOV CX,11;循环11次DAC_PROC1:MOV AL,0;预置对DATA线的置位复位字SHL DX,1;取串行输出位ADC AL,0;把串行输出位送到置位复位字的第0位OUT 86H,AL;把DATA线上串行输出位内容MOV AL,00000010B;发送CLK负脉冲OUT 86H,ALMOV AL,00000011BOUT 86H,ALLOOP DAC_PROC1;循环MOV AL,00000100B;循环完毕,发LOAD负脉冲OUT 86H,ALMOV AL,00000101B;OUT 86H,ALMOV AL,00000110B;发LDAC负脉冲OUT 86H,ALMOV AL,00000111B;OUT 86H,AL,主程序段:,MOV AL,10010010B;8255A初始化OUT 86H,ALMOV AL,0FFH;C口各位初始值全为1OUT 84H,AL;其它处理MOV CX,256;D/A通道B产生一锯齿波MOV AL,0;D/A初始数据为0MOV AH,00000010B;选取通道B,最大输出电压为参考电压AGAIN:CALL DAC_PROC;把AX里的内容送DACINC AL;产生锯齿波的下一个数据CALL DELAY;延迟LOOP AGAIN;循环256次,四、12位DA转换及接口,例 DAC1210接口电路设计,(1)要求 通过DAC1210产生并输出50个方波,方波数据存放在内存缓冲区。(2)分析 DAC1210的分辨率为12位,且内部有两个三态锁存器,用于分别对数据的高、低两个字节进行锁存,故数据线可与系统数据总线直接连接。但是,当它与8位微机系统连接时,数据要分两次传输。,有两种数据对齐格式:“右对齐”:从低位对齐(先送低,后送高)“左对齐”:从高位对齐(先送高,后送低)特别注意:设置两个锁存器,分别锁存高字节和低字节。同时选通两个锁存器进行D/A转换。,12位DAC与CPU之间加两级锁存器(右对齐),(3)设计,硬件设计 接口电路如图所示。图中,DAC1210的12根数据线直接与系统的数据线相连,但系统数据线只有8位,故将DAC1210的低4位数据线连到了系统数据线的高4位上。这种连接方法称为“左对齐”方式。DAC1210的3个端口地址为316H(y0)、317H(y1)和318H(y2)。,软件设计,根据设计要求产生连续50个方波输出,可知本例程序也是一个循环结构,其流程如图所示。,程序清单如下:,SSTACK SEGMENT DW 256 DUP(?)SSTACK ENDS DATA SEGMENT BUFR DW 50 DUP(0000,0FFFH)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSTACK SQUARE:MOV AX,DATA MOV DS,AX MOV AX,SSTACK MOV SS,AX MOV SI,OFFSET BUFR MOV CX,100,SEND:MOV BX,WORD PTRSI MOV CL,4 SHL BX,CL;使BX中12位数向左对齐 MOV DX,316H;DAC1210的第1个字节锁存器端口 MOV AL,BH;写入高8位 OUT DX,AL INC DX;DAC1210的第2个字节锁存器端口 MOV AL,BL;写入低4位 OUT DX,AL INC DX;DAC1210的转换器端口 OUT DX,AL;写入任意数据(假写)启动转换 CALL DELAY;延时使方波保持一定的宽度,INC SI;缓冲区地址加2 INC SI DEC CX;循环次数减1 JNZ SEND;循环次数未到,继续 MOV AX,AC00H;已到,退出 INT 21H DELAY PROC NEAR;延时子程序 MOV BX,0FFFFH LOP:DEC BX JNZ LOP RET DELAY ENDP CODE ENDS END SQUARE,10.2 AD转换器及其接口技术,分辨率指A/D转换器对输入模拟信号的分辨能力。通常用数字输出最低位(LSB)所对应的模拟输入的电平值表示。如A/D转换器的输出为 12 位二进制数,最大输入模拟信号为 10V,则其分辨率为分辨率10/(2N 1)10/2N 2.44mV,10.2 AD转换器及其接口技术,一、A/D转换原理 常用的A/D有并行A/D、逐次逼近A/D、双积分A/D。,1.计数斜波式A/D转换器,DA,8255,比较器,模拟输入,2.逐次逼近式A/D转换器,1 0 0 0 0 0 0 0,D7 1 0 0 0 0 0 0,D7 D6 1 0 0 0 0 0,D7 D6 D5D4 D3 D2 D1 D0,DH,PC0,Ui=163mV的逐次比较过程,3.双积分型A/D转换器,计数器,充电时间T1 放电T2,充电时间V0Vi*T1/放电时间V0VR*T2/=0T2=(T1/VR)*Vi在实际测量中T1,VR固定,4.并行比较型A/D转换器,二、AD转换与微机接口技术原理1、三态总线输入问题 有的ADC芯片带有三态输出缓冲器,其控制端为OE(输出允许)。若不带三态缓冲器的ADC芯片(如AD570芯片)与微机接口,必须使用三态器件,如:8255A,74LS273等。2、时间配合问题 A/D芯片一般有三个信号要求控制:启动转换信号(START),转换结束信号(EOC),允许输出信号(OE)。,模拟输入,允许输出OE数据输出启动信号Start转换结束Eoc,A/D转换器与CPU的连接,1.ADC的启动信号:ADC的转换启动方式有脉冲启动和电平启动之分。前者要求在转换期间不变,而后者在转换开始后就可以撤消。转换启动信号有单个信号启动和由多个信号组合起来的复合信号启动之分。2.ADC的输入信号:ADC的模拟信号输入有多通道和单通道之分。3.ADC的输出信号:(1)A/D转换器的分辨率:当ADC的分辨率高于数据总线的宽度时,需要两次读取。(2)A/D转换器的三态输出锁存器:决定是否可直接挂在CPU的数据总线上。4.ADC的转换结束信号:可用于查询方式、中断方式、DMA方式的申请信号。,A/D转换器接口的主要操作,(1)进行通道选择 对有多个模拟量输入通道的系统。(2)发转换启动信号 由外部控制启动A/D转换。(3)取回“转换结束”状态信号 当转换结束后,ADC产生转换结束信号。(4)读取转换的数据 用查询、中断或其它方法读取数据。(5)发采样和保持控制信号 一般对高速信号的A/D转换。,分析与设计A/D转换器接口的方法,ADC的模拟量输入是否是多通道?是,则需选择通道号,应提供通道选择线;不是,则不作处理。ADC的分辨率是否大于系统数据总线宽度?是,则要分两次传输,故需增加锁存器,并提供锁存器选通信号;不是,则不处理。ADC芯片内部是否有三态输出锁存器?无,则数据线不能与DB直接连接,故需增加三态锁存器,并提供锁存允许信号;有,则不处理。ADC的启动方式是脉冲触发还是电平触发?是脉冲,则提供脉冲信号;是电平,则提供电平信号,并保持到转换结束。,分析与设计A/D转换器接口的方法,A/D转换的数据采用哪种传输方式?有无条件传输、查询方式、中断方式和DMA多种方式选择。A/D转换的数据进行什么样的处理?有显示、打印、生成文件存盘、远距离传输等多种处理。ADC接口电路采用什么元器件组成?有普通IC芯片、可编程并行口芯片、GAL器件等多种选择。前面4项是由接口对象ADC决定的(可从芯片手册中查到),用户无法改变,只能按照它的要求在设计中给予满足。后面3项是可以改变的,设计者应根据设计目标灵活选用。,三、AD转换与微机接口电路1、延时等待法接口电路,PROC_ADC PROC FAR;这是一个数据采集子程序AGAIN:OUT Y1,AL;启动ADCCALL DELAY;延时IN AL,Y1;取数MOV BX,AL;存入数组INC BX;数组指针加1 LOOP AGAIN;循环RETPROC_ADCENDP,2、查询法接口电路,查询方式的数据采集程序框架(模块),接口芯片初始化(当采用可编程并行口芯片作ADC接口时);选择通道号(当采用多通道A/D转换芯片时);启动转换;查询转换结束状态;读取数据;数据传输到存储器;在线数据处理(显示、打印、存盘等);采集未完,继续启动转换;已完,退出。,例 查询方式的ADC接口电路设计,(1)要求 利用ADC0804采集100个数据,采集的数据以查询方式传输到内存BUFR区。接口电路采用普通IC芯片组成。,(2)分析,ADC0804是单个模拟量输入,故不提供通道选择信号;ADC0804的分辨率为8位,并具有三态输出锁存器,故可与系统数据总线直接相连;ADC0804的启动方式为脉冲启动,故需提供一个正脉冲信号,进行转换启动。数据传输方式为查询方式,故需将转换结束状态信号作为查询的对象。,(3)设计,硬件设计。由以上分析可知,本接口电路只需提供转换启动信号和提供读取转换结束状态信号的通路。而数据线不作处理,直接连接。为此,要设计端口地址译码电路,产生CS,并由CS和WR共同组成启动信号。同时,还要设置一个三态门,将转换结束信号INTR(INTR=0,表示转换结束)引到数据线的某一位(D7)上,以便CPU读取状态。,(3)设计,软件设计,由于是单通道,且采用普通IC芯片组成接口电路,故在程序中未出现通道选择和初始化模块。参考程序清单如下:STARTP EQU 310H;转换启动端口 STATEP EQU 311H;状态端口 DATAP EQU 310H;数据端口 SSTACK SEGMENT DB 256 DUP(0)SSTACK ENDS DATA SEGMENT BUFR DB 100(0)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSTACK BEGIN:MOV SI,OFFSET BUFR;缓冲区指针 MOV CX,100;采样次数,软件设计,START:MOV DX,STARTP;启动转换 MOV AL,00H;(可以是其他值)OUT DX,AL;使CS和WR同时有效 WAIT1:MOV DX,STATEP;查转换结束 IN AL,DX AND AL,80H;查D7=0(INTR=0?)JNZ WAIT1;未结束,等待 MOV DX,DATAP;已结束,读数据 IN AL,DX MOVSI,AL;数据传输到BUFR区 INC SI;缓冲区地址加1 DEC CX;采样次数减1 JNZ START;未完,继续启动 MOV AX,4C00H;已完,退出 INT 21H CODE ENDS END BEGIN,(4)讨论,A/D转换数据采集程序的基本结构总是循环程序结构。ADC0804的转换启动信号是由系统的IOW信号与片选信号CS共同组成的。当系统完成对芯片的写操作时,也就产生了转换启动的脉冲信号。这个脉冲信号只与IOW及地址信号CS有关,而与写入的数据无关。这种写操作称为假写。,例 电平启动的ADC接口设计,(1)要求 采用AD570采集1KB数据,采集的数据以查询方式传输到内存缓冲区,并在屏幕上显示。(2)分析 AD570的启动方式是电平启动,转换时间是25s,故接口电路应提供一个启动电平信号,维持25s时间,直到转换结束为止。另外,AD570芯片内部无三态锁存器,输出数据线不能与系统的数据总线直接连接,故采用82C55A并行接口芯片进行连接和缓冲。采集的数据要在屏幕上显示。一是要把采集到的用十六进制表示的数据转换成ASCII码,才能送到屏幕去显示;二是显示格式的选择,数据在屏幕上是采用一列式显示,还是满屏显示或分区显示。,(3)设计,硬件设计。本接口电路要为AD570提供启动电平信号和输出数据线的缓冲电路。这些要求都可以由82C55A接口芯片实现。接口电路如图所示。82C55A的端口地址为303H(命令口)、302H(C端口)、301H(B端口)、300H(A端口)。,软件设计,本例的流程图如图所示。它与上例查询方式的流程图不同之处有两点:一是采用了82C55A,故增加了82C55A的初始化程序段;一是要求显示数据,故增加了显示程序段。,参考程序清单如下:,SSTACK SEGMENT DB 256 DUP(0)SSTACK ENDS DATA SEGMENT BUFR DB 100(0)DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATA,SS:SSTACK MAIN:MOV AX,DATA MOV DS,AX MOV AX,SSTACK MOV SS,AX MOV CX,100;采样次数CX MOV DI,OFFSET BUFR;缓冲区指针SI,MOV DX,303H;82C55A初始化 MOV AL,91H;工作方式命令字 OUT DX,AL MOV AL,0FH;置PC7=1,使B/C=1,启动信号无效 OUT DX,AL NOP NOP START:MOV DX,303H;启动转换 MOV AL,0EH;置PC7=0,使B/C=0,启动转换 OUT DX,AL CHECK:MOV DX,302H;查转换结束 IN AL,DX AND AL,08H;PC3=0否,即DR=0否 JNZ CHECK;未结束,继续转换,MOV DX,300H;已结束,读数据 IN AL,DX MOVDI,AL;存数据到BUFR区 MOV DX,303H;撤消启动信号 MOV AL,0FH;置PC7=1,使B/C=1,撤消启动信号 OUT DX,AL MOV AL,DI;十六进制ASCII码转换 AND AL,0F0H;高4位码制转换 MOV CL,4 SHR AL,CL CMP AL,9 JA HEX ADD AL,30 JMP DISPLAY,HEX:ADD AL,37 DISPLAY:MOV DL,AL;显示高4位 MOV AH,2H INT 21H MOV AL,DI MOV AL,0FH;低4位码制转换 CMP AL,9 JA HEX1 AND AL,30 JMP DISPLAY1 HEX1:ADD AL,37 DISPLAY1:MOV DL,AL;显示低4位,MOV AH,2H INT 21H MOV DL,20H;显示1个空格 MOV AH,2H INT 21H INC DI;缓存区地址加1 DEC CX;采样次数减1 JNZ START;未完,继续启动 MOV 4X,4C00H;已完,返回DOS INT 21H CODE ENDS END MAIN,(4)讨论,AD570是电平启动,启动信号是由82C55A的PC7产生的。从程序中可以看到,从PC7置为低电平开始启动之后,一直保持低电平,直到转换完毕,读取数据,并存入BUFR区之后,才将PC7置高电平,撤消启动信号。因为采集的数据是以十六进制形式存放在内存的,而显示器采用ASCII码显示,故在显示之前,要先进行十六进制到ASICII码的转换,然后再送到显示器。这种数制的转换,在要把数据进行显示、打印处理时,都会碰到。因为显示器、打印机和键盘这些外设都是采用ASICII码的。,3、中断法接口电路,中断方式数据采集程序框架(模块),接口芯片初始化(当采用可编程并行口芯片作ADC接口时);可屏蔽中断初始化,包括中断向量修改、中断申请的屏蔽等;选择通道号(当采用多通道A/D转换芯片时);启动转换;开中断,并等待中断;转换结束信号申请中断;进入中断服务程序,在服务程序中读取数据,并传输到存储器以及在线数据处理;采集未完,继续启动转换;已完,返回。,中断方式的ADC接口设计,(1)要求 采用ADC0809,从通道7采集100个数据,采集的数据以中断方式传输到内存缓冲区,并将转换结束信号EOC连到IRQ4上,请求中断。(2)分析 要实现上述设计要求,至少有3个方面的问题需要考虑:被控对象ADC0809的特性、接口电路结构形式、中断处理。,ADC0809外部特性,ADC0809的内部逻辑,ADC0809的时序,(2)分析,接口电路结构形式。接口电路采用可编程并行接口芯片82C55A。中断处理。本例题是利用系统的中断资源,故不需做中断系统的硬件连接和82C59A的初始化。只需做两件事:一是中断向量的修改(IRQ4的中断向量);二是对中断控制器82C59A的中断屏蔽寄存器IMR和正在服务寄存器ISR进行操作(在主程序中用命令OCW1屏蔽/开放中断请求,在服务程序中返回主程序之前,用OCW2结束中断)。,(3)设计,硬件设计 根据上述分析可知,本接口电路要提供ADC0809模拟量通道号选择信号、启动信号、读数据允许信号。这些信号都可由82C55A接口芯片实现。而EOC的中断请求直接连到系统总线的IRQ4上。82C55A的4个端口地址是300H(A口)、301H(B口)、302H(C口)、303H(命令口)。注:D2D1D0应接到PB口上输出。方向不同,不能共用A口。图错了。,软件设计:程序流程图,整个程序分主程序和中断服务程序两部分。,程序清单如下:,STACK SEGMENT PARASTACK DW 256 DUP(?)STACK ENDS DATA SEGMENT PARADATA OLD_OFF DW?OLD_SEG DW?BUFR DB 100 DUP(0)PRT DW?DATA ENDS,主程序,CODE SEGMENT ASSUME CS:CODE,DS:DATA,ES:DATA,SS:STACK ADC PROC FAR MOV AX,DATA MOV DS,AX MOV ES,AX MOV AX,STACK MOV SS,AX,825C5A初始化,MOV DX,303H;82C55A命令端口 MOV AL,90H;82C55A的方式命令字 OUT DX,ALMOV AL,0EH;置PC7=0,使START和ALE无效 OUT DX,AL MOV AL,0CH;置PC6=0,使OE无效 OUT DX,AL;,修改中断向量,MOV AX,350CH;取IRQ4的中断向量,并保存 INT 21H MOV OLD_OFF,BX MOV BX,ES MOV OLD-SEG,BX CLI;置新中断向量 MOV AX,250CH MOV DX,SEGA_D MOV DS,DX MOV DX,OFFSET A_D INT 21H MOV AX,DATA;恢复数据段 MOV DS,AX STI;开放中断请求 IN AL,21H;开放IRQ4 AND AL,0EFH OUT 21H,AL,主程序主体,MOV CX,100;设置采样次数和内存指针 MOV AX,OFFSET BUFR MOV PRT,AX MOV DX,301H;82C55A的B端口 MOV AL,07H;选通道号 OUT DX,AL BEGIN:MOV DX,303H;启动转换 MOV AL,0FH;产生START启动脉冲信号 OUT DX,AL NOP NOP MOV AL,0EH OUT DX,AL STI;开中断 HLT;等待中断,DEC CX;修改采样次数 JNZ BEGIN;未完,继续启动CLI;已完,关中断 MOV AX,250CH;恢复IRQ4原中断向量 MOV DX,OLD-SEG MOV DS,DX MOV DX,OLD-OFF INT 21H MOV AX,DATA;恢复数据段 MOV DS,AX STI;屏蔽中断请求 IN AL,21H;屏蔽IRQ4 OR AL,10H OUT 21H,AL;返回DOS MOV AX,4C00H INT 21H ADC ENDP,中断服务程序 A_DPROCFAR,;寄存器进栈 PUSH AX PUSH DX PUSH DI;服务程序主体 CLI;关中断 MOV DX,303H;82C55A的命令端口 MOV AL,0DH;产生OE信号,打开三态锁存器 OUT DX,AL NOP NOP MOV AL,0CH OUT DX,AL MOV DX,300H;825C5A的A端口 IN AL,DX;读数据,NOP MOV DI,PRT;存数据 MOVDI,AL INC DI MOV PRT,DI;发中断结束命令 MOV AL,20H;主片82C59A中断结束 OUT 20H,AL;寄存器出栈 POP DI POP DX POP AX STI;开中断;中断返回 IRET A_D ENDP CODE ENDS END ADC,(4)讨论,本例接口电路是采用的82C55A并行接口芯片,故主程序开始就有82C55A的初始化程序段。多通道ADC的通道地址选择线有两种:一是采用系统的地址线,一是采用系统的数据线。本例是使用系统数据线的低3位D2D1D0,分别连到ADC0809的3根通道地址线选择线ADDCADDA上。,;通道0-7转换100个数ADC_P DW?ADC_COUNT DW?BUFFERDB 100DUP(?)主程序CALL INIT;初始化可编程芯片MOV ADC_P,OFFSET BUFFERMOV ADC_COUNT,100MOV AL,08H;启动8253OUT C-PORT,AL,;中断程序ADINTPROCCLIPUSH AXPUSH BXMOV BX,ADC_PIN AL,A_PORT;取数MOV BX,AL;存数INC ADC_P;指针加1INC ADC_COUNT;计数器加1CMP ADC_COUNT,100;是否转换100个数JNZ LOP1;没有,转LOP1MOV AL,0;有,停止8253工作OUT C_PORT,ALLOP1:POP BXPOP AXSTIIRETENDP,10.4 串行8位A/D转换器TLC0831一、TLC0831管脚功能,二、TLC0831的工作原理,三、TLC0831与8086CPU的接口,补充习题1,下图示出了D/A转换器电路,假设:Y0地址为300H,Y1地址为301H,Y2地址为302H,数据为左对齐方式。请编写在输出端VO产生三角波的程序段。,解答;三角波形的上斜坡 MOVAX,0FFFFH;从0开始NEXT1:INCAX MOVDX,300H OUTDX,AL;送数给D/A MOVDX,301H MOVAL,AH OUTDX,AL MOVDX,302H OUTDX,AL;送到第二级锁存器 CALLDELAY;延时 CMPAX,0FFFH;是否达到最高点 JNZNEXT1,;三角波形的下斜坡NEXT3:DECAX MOVDX,300H OUTDX,AL;送数给D/A MOVDX,301H MOVAL,AH OUTDX,AL MOVDX,302H OUTDX,AL;送到第二级锁存器 CALLDELAY;延时 CMPAX,0;是否达到最低点 JNZNEXT3 DECAX JMPNEXT1;开始上斜坡,;延时DELAY:MOVCX,0FFHDEL:LOOPDEL RET,补充习题2,用AD570采用程序查询方式,采集128个数据,存入地址为0100:0000的内存中。请写出采集数据的程序。硬件电路如下图示。设8255A采用0方式,其命令口地址为303H,数据口地址为300H,状态口地址为302H。,解答 程序如下 MOV DX,303H;8255A命令口 MOV AL,98H;工作方式字 OUT DX,AL MOV AL,03H;先置PC1=1,准备发启动信号 OUT DX,AL MOV AX,0100H;内存数据区的段址 MOV ES,AX MOVBX,00H;偏移地址 MOV CX,7FH;采样次数AGN:MOV AL,02H;置PC1=0 OUT DX,AL,WAT:MOV DX,302H;查PC6=0?IN AL,DX SHL AL,2 JC WAT MOV DX,300H;8255A数据口 IN AL,DX MOV ES:BX,AL;存数于内存 MOV DX,303H;置PC1=1 MOV AL,03H;撤消启动信号 OUT DX,AL INC BX;内存地址加1 LOOP AGN;次数减1,没完继续 MOV AX,4C00H IN 21H,补充习题3,若对ADC0809的IN0IN7这8个通道的模拟量各采样100个点,并转换成数字量,数据存储指针为WP,采用查询方式实现。译码电路的地址输出如下图所示。注意:图中是以采集IN0为例给出的译码地址。,电路图是:,