微机原理与接口技术习题集4Word格式文档下载.docx

上传人:b****5 文档编号:20050791 上传时间:2023-01-16 格式:DOCX 页数:37 大小:655.87KB
下载 相关 举报
微机原理与接口技术习题集4Word格式文档下载.docx_第1页
第1页 / 共37页
微机原理与接口技术习题集4Word格式文档下载.docx_第2页
第2页 / 共37页
微机原理与接口技术习题集4Word格式文档下载.docx_第3页
第3页 / 共37页
微机原理与接口技术习题集4Word格式文档下载.docx_第4页
第4页 / 共37页
微机原理与接口技术习题集4Word格式文档下载.docx_第5页
第5页 / 共37页
点击查看更多>>
下载资源
资源描述

微机原理与接口技术习题集4Word格式文档下载.docx

《微机原理与接口技术习题集4Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《微机原理与接口技术习题集4Word格式文档下载.docx(37页珍藏版)》请在冰豆网上搜索。

微机原理与接口技术习题集4Word格式文档下载.docx

程序中,先使用一条输出指令把X坐标数据送到X向转换器的输入寄存器。

然后又用另一条输出指令把Y坐标数据送到Y向转换器的输入寄存器。

最后用一输出指令将前面两次写入输入寄存器的数据,同时打入两个转换器的DAC寄存器,进行数据转换,即可实现X和Y两个方向坐标量的同步输出。

X向坐标数据和Y向坐标数据存于AX中。

绘图仪的驱动程序段为:

HTYPROC

PUSHCX

PUSHDX

MOVDX,380H

OUTDX,AL;

输出X

MOVDX,384H

XCHGH,AL

OUTDX,AL;

输出Y

MOVDX,388H;

X、Y送DAC寄存器

LOOP$;

等待转换

POPDX

POPCX

RET

HTYENDP

618.编写DAC0832实现一次D/A转换的程序

设定要转换的数据放在1000H单元中

程序如下:

MOVBX,1000H

MOVAL,[BX];

取转换数据

MOVDX,PORTA;

PORTA为D/A转换器端口地址

OUTDX,AL

在实际应用中,经常需要用到一个线性增长的电压去控制某一个检测过程,或者作为扫描电压去控制一个电子束的移动。

执行下面的程序段,利用D/A转换器产生一个锯齿波电压,实现此类控制作用。

MOVDX,PORTA;

MOVAL,0FFH;

置初值

ROTAT:

INCAL

OUTDX,AL;

往D/A转换器输出数据

CALLDELAY;

调用延迟子程序

JMPROTAT

DELAY:

MOVCX,DATA;

置延迟常数DATA

DELAY1:

LOOPDELAY1

RET

实际上,程序段执行结果得到的输出电压会有256个小台阶,不过从宏观上看,仍为连续上升的锯齿波。

对于锯齿波的周期,则利用延迟进行调整。

延迟的时间如果比较短,可以用几条NOP指令来实现;

如果时间较长,则可以用延迟子程序来实现。

该程序段就是利用延迟自程序来控制锯齿波周期的。

如果需要一个浮想的锯齿波,只要指令INCAL改成DECAL就可以了。

619.简述DAC0832芯片中8位输入寄存器和8位DAC寄存器的工作过程

DAC0832采用二级缓冲输入数据方式,在DAC0832进行D/A转换时可用两种方法:

(1)8位输入寄存器工作于锁存状态,8位DAC寄存器工作于缓冲状态,即使

为低电平,ILE为高电平,

为低电平,当

有一个负脉冲,完成一次转换。

(2)8位输入寄存器工作于缓冲状态,8位DAC寄存器工作于锁存状态;

即使

输入一个负脉冲,完成一次转换。

620.编写ADC0809与CPU直接连接的程序

由于ADC0809具有三态输出缓冲器,所以它能同CPU直接相连(但需要加译码电路),如图201所示。

CPU的数据线D7~D0直接与ADC0809的数据线D7~D0相连。

ADC0809的通道地址选择信号ADDA、ADDB和ADDC同数据总线D0、D1、D2相连。

设ADC0809的转换时间为100微秒,采用软件延时来等待转换结束。

CPU的CLK经8分频后接至0809的CLOCK。

地址译码器的输出端

(地址为84~87H)与CPU的

经或非门#2控制启动信号START和通道地址锁存允许信号ALE;

与CPU的

经过或非门#1使0809的输出允许信号OE有效。

则从输入通道

读入一个模拟量经DAC0809转换后进入CPU的程序为:

MOVAL,01H;

送输入通道号1

OUT84H,AL;

并发出启动信号

CALLDELAY100;

等待转换结束,延时100微秒

INAL,84H;

转换结束,读入数据

HLT

若改用中断方式,则可将转换结束信号EOC作为中断请求信号,在中断服务程序中读入转换后的数据。

621.编写ADC0809通过并行接口与CPU的连接的程序

(P308例254)

ADC0809通过并行接口芯片8255A与CPU相连的接口如图202所示。

0809数字量输出D0~D7同系统总线D0~D7直接相连,CPU的CLK经8分频后接到0809的CLOCK端。

地址译码器的输出

(地址为80H~83H),接到8255A的

(地址为84H~87H)用来选通ADC0809.0809的START与ALE同8255A的

相连,EOC与

相连。

0809的ADDA、ADDB和ADDC同

从输入通道读入一个模拟量经ADC0809转换后送入CPU的程序为:

MOVAL,88H;

8255A初始化,工作方式0

OUT83H,AL;

PB口输出,PC口高4位输入

MOVAL,00H;

取通道0,且产生

为∏信号

OUT81H,AL;

启动ADC0809转换

ADDAL,10H

OUT81H,AL

SUBAL,10H

LOP:

INAL,82H;

检查EOC

TESTAL,80H

JZLOP;

EOC=0,继续查询

INAL,84H;

EOC=0,使0809的OE有效,允许输出

HLT;

读入数字量

622.在ADC0809电路中,若改为中断方式读取转换后的数字量,则电路应做哪些改动?

程序如何编写?

(P310例255)

PC机的系统总线中

为保留引脚,是为了应用系统中采用中断方式工作时接受中断请求信号所用。

因此在采用中断方式工作时,可以把EOC通过一个单稳电路产生具有一定宽度的郑脉冲,送到总线的

端即可。

控制程序分为:

主程序和服务中断程序。

主程序:

MOVAL,80H

OUT83H,AL

MOVAL,00H

OUT81H,AL

ADDAL,10H

OUT81H,AL

SUBAL,10H

STI

……

中断程序:

PROCADCPROCFAR

PUSHAX

INAL,84H

POPAX

IRET

PROCADCENDP

623.设计D/A转换器的接口电路,并编写转换程序

(P311例257)

设8255A的端口A以工作在方式1时作D/A转换器的输出接口,利用下降沿启动D/A转换,转换结束的回答信号为“0”脉冲,8255A的端口地址为3F0H~3F3H。

要求:

(1)D/A转换器的接口电路包括:

D/A转换器与8255A连接,8255A的主要信号线D0~D7,

,如图所示。

(2)采用条件传送方式,将存储器BUFER缓冲区中的3000个波形数送D/A转换器转换。

转换程序如下:

MOVDX,3F3H

MOVAL,10100000B;

8255A方式字

OUTDX,AL

MOVAL,00001101B;

复位

LEASI,BUFFER;

偏移首地址

MOVDX,3000

LOP:

MOVDX,3F0H

MOVAL,[SI];

从缓冲区取出一个数据送PA

INCSI

MOVDX,3F2H

LOP1:

INAL,DX

ANDAL,08H;

检查

=0时,继续查

JZLOP1

LOOPLOP

INCDX

MOVAL,00001100B;

已输出3000个数据,将

HLT

624.编写中断方式进行数据传送的A/D转换的程序

(P312例258)

设用8253定时器产生定时启动,8253使用及联的方式,产生任意所需的A/D转换时间间隔,电路连接如图所示。

8253的通道0工作在方式2,其速率输出负脉冲反向后启动A/D转换器转换。

通道1工作在方式1,这是一种可重复触发的单稳输出,通道1的单稳输出

可控制通道0的

,该门控信号

的上升沿或高电平使通道0技术。

反之,则停止计数。

因此,

信号可控制A/D转换的持续时间,而

能提供两次A/D转换所需的时间。

各通道的工作状况见下表。

通道号

计数值

时钟输入

工作方式

输出

作用

N0

F

2

F/N0

启动A/D转换

1

N1

F/N2

F/N2*N1

N1个持续时间

N2

3

产生级联时间

若时钟F为1MHz,数据采集要求0.1s内采集100个数据,计算一下8253各个通道的计数常数值:

1)0.1s采集100个数,则采样速率为1ms。

由F/N0=1ms得N0=1MHz/1ms=1000

2)共要采集1000个数,则采样持续时间为1s,则N1=1000

3)由于持续时间为1s,即F/N1*N2=1s;

故N2=F/N1=1000

在程序编写中,一般先建立中断矢量表;

后初始化可编程接口芯片。

此时,应将8253定时器的初始化程序放在其他初始化程序之后,因为8253一旦初始化,定时就开始。

最后才写主程序和中断服务程序。

8253-0EQU40H

8253-1EQU42H

8253-2EQU44H

8253-CEQU46H

8255-AEQU80H

8255-BEQU82H

8255-CEQU84H

8255-SEQU86H

8259-

EQU60H

EQU62H

DATASEGMENT

DW,

DW,

ADBUFDW,1000DUP(?

DATAENDS

CODESEGMENT

ASSUMECS:

CODE,DS:

DATA

START:

PUSHDS

MOVAX,DATA

MOVDS,AX

MOVAX,0;

建立中断矢量表

MOVES,AX

MOVDI,48H×

4;

中断类型号为48H

MOVAX,OFFSETADINT;

ADINT为中断服务程序名

CLD

STOSW

MOVAX,CS

CLI;

关中断

MOVAL,0B0H;

8255A初始化

OUT8255-S,AL

MOVAL,09;

8255A

OUT8255-S,AL;

允许8255A口中断

MOVAL,1BH;

8259A初始化

OUT8259-

AL

MOVAL,48H;

,AL

MOVAL,03;

MOVAL,14H;

8253通道0控制字

OUT8253-C,AL

MOVAX,

8253通道0计数值

OUT8253-0,AL

MOVAL,AH

OUT8253-0,AL

MOVAL,73H;

8253通道1控制字

OUT8253-C,AL

MOVAX,

8253通道1计数值

OUT8253-1,AL

MOVAL,96H;

8253通道2控制字

8253通道2计数值

OUT8253-2,AL

MOVBX,OFFSETADBUF;

A/D采集缓冲区首址

MOVCX,ADCONT;

采集数据个数

STI;

开中断

HLT;

等待中断

INCBX;

中断返回准备下一个

LOOPLOP1;

数据地址

POPDS;

采集结束

MOVAX,4C00H

INT21H

ADINTPROCNEAR;

中断服务

INAL,8255-A;

取A/D转换数据

MOV[BX],AL;

数据放缓冲区

ADINTENDP

CODEENDS

ENDSTART

625.设计一块炉温控制接口卡,并编写驱动程序

(P315例259)

利用A/D转换器将反映炉温的模拟信号转换为数字信息Xhou,通过8255A的A口读入,进行f(x)运算后,经8255AB口输出,再经D/A转换为模拟信号输出去调节炉温,控制接口卡的逻辑原理图如图所示。

接口卡的核心是一块8255A芯片,假设其端口地址为300H~303H。

A口设为方式1输入与A/D转换器相连。

A/D转换器的特性如下:

当输入控制端CI出现下跳沿时,就启动A/D转换,转换完一个数据时,在A/D的输出控制端CO会出现负脉冲。

所以将8255A的

接A/D的CI,将

接A/D的CO。

接8259A的

只要执行一次读A口的输入指令,CI就会出现负跳变,而启动A/D转换,当一次A/D转换完成后,从CO出现负脉冲。

通过

发出中断请求信号。

进入中断服务程序后,读A口,进行A/D输入,调用f(x)运算自程序,然后将结果从B口经D/A输出。

驱动程序如下:

STACKSEGMENTPARASTACK'

STACK'

DB256DUP(?

STACKENDS

CODESEGMENTPARAPUBLIC'

CODE'

STARTPROCFAR

ASSUNECS:

CODE,SS:

STACK

XORAX,AX

PUSHAX;

保存PSP首地址,以便执行完回DOS

CLI;

为装入中断矢量而关中断

MOVES,AX;

0装入ES

MOVDI,28H;

矢量号0AH×

4=28H

MOVAV,offsetADINT;

中断服务程序偏移量送AX

CLD;

0送DF

STOSW;

将AX填入0:

28H,0:

29H

MOVAX,SEGADINT;

中断服务程序段基址送AX

2AH,0:

2BH

以上7条指令完成将A/D中断服务程序入口地址装入中断矢量号为0AH的中断矢量表中

INAL,21H;

读入8259AIMR

ANDAL,11111011B

OUT21H,AL;

开放

中断

MOVDX,303H;

指向8255控制口

MOVAL,10110000B;

设8255AA组方式1输入,B组方式0输出

MOVAL,00001001B

OUTDX,AL;

开放8255AA组中断

MOVDX,300H;

指向825A口数据

INAL,DX;

虚读使

负跳变启动A/D转换

STI;

初始化完毕开中断

……;

执行其他可能存在的主程序

……

RET;

返回DOS

STARTENDP

中断服务程序:

ADINTPROCFAR

SIT;

为中断嵌套而开中断

PUSHES

PUSHAX

PUSHBX

PUSHCX

PUSHDX

PUSHSI

PUSHDI

PUSHBP;

保存本服务程序用到的现场

MOVDX,300H

INAL,DX;

A/D输入

CALLIN;

调用控制算法子程序

MOVDX,301H

OUTDX,AL;

从D/A输出

MOVAL,20H

OUT20H.AL;

向8259A送EOI命令

POPBP

POPDI

POPSI

POPDX

POPCX

POPBX

POPAX

POPDS

POPES;

恢复现场

IRET;

中断返回

ADINTENDP

INPROCNEAR

……;

控制算法子程序

INENDP

ENDSTARS

626.ADC0809与8088CPU的计入口硬件连接图及软件设计

(P318例260)

(1)连接图如图所示。

(2)软件设计

下面示出采用程序查询法和中断法的汇编源程序

1)用程序查询法将通道1的模拟量转换成数字量,结果放于DATA单元。

汇编源程序段:

MOVDX,01H;

模拟通道1端口地址

TESTO:

MOVDX,09H;

模拟通道1状态口地址

INAL,DX;

读入EOC状态

ANDAL,80H;

测试EOC状态

JZTESTO;

EOC为0,转换未完成,继续测试

MOVDX,01H;

EOC为0,转换完毕

读取结果

MOVDATA,AL;

存入指定单元

也可以将ADDA、ADDB、ADDC接到数据总线的D0、D1、D2上,则各个模拟通道共用相同数据端口地址和状态贷款地址,而用数据线上低3位的不同状态去选通模拟通道。

2)采用中断法,将通道1的模拟量转换成数字量,结果放于DATA单元。

当使用中断法时,应将ADC0809的EOC连接到系统中断请求输入端INTR上,转换结束时,EOC变为高电平,向CPU提出中断请求。

在中断服务程序中,CPU读取转换结果,并送结果单元保存。

主程序段:

MOVDX,01H;

OUTDX,AL;

WA:

STI;

……

JMPWA;

等待A/D转换结束

中断服务程序段:

MOVDX,01H

INAL,DX;

读入转换结果数据

MOVDATA,AL;

HLT

627.分析一个典型的实时控制系统

(P324例263)

图中是一个典型的对恒温装置进行实时控制的系统模型,图中,A/D采用ADC0809,D/A用DAC0832。

恒温装置由电热丝加热,恒温装置的温度通过传感器经电路处理后加到A/D上,由微机将当前的温度值读入,设对应温度0~

C,经A/D转换后的值为0~250。

装置的加热量由D/A的输出来控制,D/A输出的值越大,加热产生的热量就越多,相应的温度就越高。

当加热产生的热量与装置在所处的环境中散发的热量相等时,该装置的温度就能够保持稳定。

因此,为保持恒温装置的温度恒定,可根据A/D检测到的温度值来控制D/A的输出。

可建立一个简单的控制模型来实现该恒温控制。

在这个模型中,设恒温装置的温度要求控制在

左右,为使得该装置的温度保持稳定,假定可采用如下的控制方法来达到要求:

D/A的输出值为250减去A/D测得的温度值。

那么,只要根据A/D测得的温度值,经微机运算后,由D/A输出相应的控制值,最终能够使温度达到平衡,从而达到保持该装置恒温的目的。

实现该模型的控制程序如下:

L1:

OUT90H,AL;

选择ADC0809的输入通道0(90H),并启动转换

CALLDELAY;

延时约150微秒,等待转换结束

IN90H,AL;

将A/D转换的结果独到AL中

MOVBL,AL

MOVAL,0FAH

SUBAL,BL;

求差值

OUT80H,AL;

控制值送到D/A

JMPL1

628.编写采用无条件传送方式轮流采集的模拟信号的程序

(P325例264)

如图示,轮流从

采集8路模拟信号,并把采集到的数字量存入0100H开始的8个单元内的程序。

程序如下:

MOVDI,0100H;

设置存放数据的首址

MOVBL,08H;

采集8次计数器

MOVAH,00H;

选0通道

AA1:

MOVAL,AH

MOVDX,ADPORT;

设置ADC0809芯片地址

OUTDX,AL;

使ALE、START有效,选择模拟通道

MOVCX,0050H

WAIT:

LOOPWAIT;

延时,等待A/D转换

INAL,DX;

使OUTPUTENABLE有效,输入数据,见上图

MOV[DI],AL;

保存数据

INCAH;

换下一个模拟通道

INCDI;

修改数据区指针

DECBL

JNZAA1

629.利用8255A连接ADC0809与8086CPU,试编写程序

(P334例270)

如图示:

采用查询方式,连续转换8个通道的模拟量的程序,如下:

DATA为存放8个通道转换后的结果。

MOVCL,8

MOVBL,80H

MOVSI,0

MOVD

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 语文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1