ImageVerifierCode 换一换
格式:DOCX , 页数:100 ,大小:505.05KB ,
资源ID:7101974      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/7101974.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(微机原理与接口技术习题集2.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

微机原理与接口技术习题集2.docx

1、微机原理与接口技术习题集2497. 编写8255A的A口和B口都工作在方程式1,采用中断方式输入数据的程序【参考答案】 P83例77设8255A的口地址为:40H43H,C口的PC6 、PC 7为输入,因A口、B口工作在方式1,故工作方式控制字为:10111110B,其中D 0可为0或1,这里选为0。A口允许中断,PC4置1,控制字为09H。B口允许中断,PC2置“1”,控制字为05H。故初始化程序段如下:MOVAL, 10111110B;写入工作方程式控制字OUT43H, ALMOVAL, 09HOUT43H, AL;PC4置“1”,A口允许中断MOVAL, 05HOUT43H, AL;PC

2、2置“1”,B口允许中断498. 8255A的方式0的应用实例【参考答案】P83例78设8255A的A口和B口工作在方式0,A口为输入端口,接有4个开关;B口为输出端口,接有一个七段发光二极管,其硬件连接电路如图46所示。试编一程序要求七段发光二极管显示开关所拨通的数字。本例中8255A的端口地址由两部分电路组成:由CPU地址线A15A3通过74LS138译码器产生片选信号;CPU的地址线A2、A1分别组成4个端口地址,而CPU的A0与译码器输出端通过逻辑组合,保证8255A的四个端口地址为偶地址,这样8位的8255A与16位的8086CPU可以通过数据总线D7D0传送8位信息,具体端口地址分

3、配为:A口地址为8020H,B口地址为8022H,C口地址为8024H,控制口地址为8026H。从图可知,七段发光二极管为共阳极LED器件,要让a段亮点,要求从PB0段输出高电平“1”; 要让b段熄灭,要求从PB1段输出低电平“0”,其余各段依次类推。8255A的A口接有开关,4位开关的组合可为0FH。为此,我们可将在LED上显示0FH的各字符代码列表见表2。表2 显示字符代码表显示字符123456789ABCDEF0七段代码(H)065B4F666D7D077F6F777C395E79313F程序如下:APORTEQU8020HBPORTEQU8022HCONTREQU8026HDATASE

4、GMENTTAB1DB 3FH, 06H, 5BH, 4FH.DATAENDSCODESEGMENTASSUMECS: CODE, DS:DATASTART:MOVAX, DATAMOVDS, AXMOVAL, 90H;设定8255A工作方式MOVDX, CONTROUTDX, ALADDR1:MOVDX, APORT;取开关值INAL, DXANDAL, 0FH;屏蔽高4位MOVBX, OFFSET TAB1;取代码表首址XLAT;找到字符代码MOVDX, BPORT;输出显示OUTDX, ALMOVCX, 0400H;显示延时ADDR2:DECCXJNZADDR2JMPADDR1CODEE

5、NDSENDSTART499. 编写8255A用于LED显示器接口程序【参考答案】P85 例798086CPU通过8255A同开关K与7段LED显示器的接口如图47所示。开关设置的二进制信息由8255A的B口输入,经程序转换为对应的七段LED的段选码(字形码)后,通过A口输出。由七段LED显示二进制状态值,试编写其控制程序。设8255A得端口地址为:端口A:0FFF8H端口B:0FFFAH端口C:0FFFCH控制口:0FFFEH为增加8255A的负载能力,所以A口经驱动器同七段LED显示器相连。由图47可见,8255A的地址线A1、A0分别同地址锁存器输出的A2、A1相连,故每个端口可有二个端

6、口地址,如A口为0FFF8H和0FFF9H,可认为未参加译码的地址线A0为0的地址,所以通常使用0FFF8H地址。假设B口用输入,则8255A工作方式控制字为82H。程序如下:ORG2000H;从2000H开始存放数据MOVAL, 82H;只工作方式控制字MOV DX,0FFFEHOUTDX, AL RDPORTB: MOVDL, 0FAH;读入B口信息IN AL, DXAND AL, 0FH;屏蔽AL高四位,B口读入的信息只低四位有效MOVBX,OFFFSET SSEGCODE;地址指针BX指向段选码表首地址XLAT;BX+ALALMOV DL, 0F8H;段选码A口,由七段LED显示器显示

7、OUT DX, AL MOVAX, 56CH;延时,使读入的信息保持显示一段时间DELAY:DECAXJNZDELAYJMPRDPORTB;进入新一轮的操作HLTORG2500H;从2500H开始为段选码表 如果要求LED显示器循环显示0-F十六个数字,每个数字显示10s,显示100遍。则控制程序为:ORG 2000HMOVAL,82HMOVDX,0FFFEHOUTDX,ALMOVBX,100;循环100次DISFLOP:LEADI,SSEGCODE;指向段选码表MOVCX,16;显示字符个数LOPMOVAL,DI;取显示字符送A口MOVDL,0F8HOUTDX,ALINCDI;修改显示指针C

8、ALLDELAY10s;延时10s字程序LOOPLOP;每遍循环16次DECBX;修改大循环指针JNZDISFLOPHLTORG2500HSEEG CODE:DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,DB 98H,88H,83H,DB 0C6H,0A1H,86H,8EH500. 编写用8255A按位置位/复位控制字控制发光二级管依次显示亮灭的程序【参考答案】P87 例80利用8244A端口C的8根I/O线接8只发光二级管的正极(8个负极均接地),用按位置位/复位控制字编写使这8只发光二级管依次亮、灭的程序。设8255A的端口地址为480483H。本

9、例要使用8255A的两个控制字:方式控制字和按位置位/复位控制字。这两个控制字都写入到8255A的控制字寄存器,由它的D7位为1或0来区分写入的控制字是方式控制字还是按位置位/复位控制字。方式控制字只写入一次,其后写入的都是按位置位/复位控制字。首先用置位字01H点亮PC0所连接的发光二极管,然后将置位字01改为复位字00,熄灭该发光二极管。再将复位字00H改为置位字03H,点亮PC1所连接的发光二极管,又将置位字03H改为复位字02H,熄灭该发光二极管。置位和复位自己就这样交替变化如下:01H00H03H02H05H04H0FH0EH01H置位字和复位字周而复始地不断循环,即可使8只连接在P

10、C端口的发光二极管依次亮灭。每一位的置位字改为复位字仅需将D0为由1变为0,这可用屏蔽D0为的逻辑与指令完成。把PCi的复位字改为PCi+1的置位字,要将D0位由0变为1,同时还要将D3D13位加1,即要将D3D0的4位加3,这可用加3的指令实现。这样不断地加3,其进位一定会使D7 也变为1,致使置位字变成方式字,为了避免出现此情况,所以加3后还要将置位字的D7位或高4位清零,即和0FH逻辑与,该程序的流程图如图48所示。程序如下:MOVDX,383H;383H为控制字寄存器的端口地址MOVAL,80H;方式选择字OUTDX,ALMOVAL,1;PC0的置位控制字AGAIN:OUTDX,AL;

11、点亮一只发光的二极管LOOP$;延时LOOP$ANDAL,0FEH;置位字改为复位字OUTDX,AL;熄灭点亮的发光二极管ADDAL,3;PCiPCi+1,复位字改为下一位的置位字ANDAL,0FH;保持D7为0PUSHAXMOVAH,11;检查按键有无输入IVT21H;无,0送AL,有,-1送ALINCALPOPAXJNZAGAIN501. 编写8255A工作在方式0、方式1和方式2等不同形式的初始化程序【参考答案】P88 例81假设8255A端口A地址为0500H,是编写8255A工作在以下方式:(1) 将A组和B组置成方式0,端口A和C作为输入端口,端口B作为输出端口;(2) 将A组置成

12、方式2,B组置成方式1,端口B作为一个输出端口;(3) 将A组置成方式1,且端口A作为输入端口,可PC6和PC7作为输出;B组置成方式1,且端口B作为输入端口。以下为8255A工作在上述三种情况下的方式控制字及程序。1) 方式控制字为:10011001B即99H程序为:MOVDX,0506H;控制端口地址0506H送DXMOVAL,99HOUTDX,AL2) 方式控制字为:11XXX10XB,其中X为0或1任意,将X设为0则方式控制字为11000100B,即C4H程序为:MOVDX,0506HMOVAL,0C4HOUTDX,AL3) 方式控制字为:1011011XB或10110110B即B6H

13、。因为B口设定为方式1输入,所以PC2PC0已自动确定了输入/输出;端口A被设定为方式1输入,所以PC3自动作为中断请求线,因此PC3PC0不受D0位控制。程序为:MOVDX,0506HMOVAL,0B6HOUTDX,AL502. 发光二级管(L0L7)不断显示对应开关(S0S7)的通断状态应用实例8086CPU通过8255A同发光二极管L0L7一级开关S0S7的接口电路如图49所示。要求:(1) S0S7的状态每隔半分钟改变一次,把每次变化的状态记录在从2000H:1000H开始的内存单元中;(2) S接通时,对应的L熄灭,S断开时,对应的L发亮(即S0断开,L0发亮;S0接通,L0熄灭);

14、(3) 连续工作24h结束。用汇编语言编写的控制程序如下,请填上程序中的空缺的部分(包括指令,操作数或标号,初始化时无关项置“0”)。START:MOVAL,_(1) ;初始化MOVDX,_(2) _DX,AL(3) MOVAX,_(4) MOVDS,AXLOP:MOVCX,_(5) ;工作24h LOP1:MOVBX,_(6) LOP2:MOVDX,_(7) ;读PA口_AL,DX(8) MOVBX,AL;存S0S7INC_(9) XORAL,(10) ;写PB口MOVDX,(11) _DX,AL(12) _(13) _(14) CALLDELAY 30s_(15) _(16) LOOP_(

15、17) HLT【参考答案】P89 例821. 8255A端口地址计算:A8A7A6A5A4A3A2A1A01100100端口地址为190H193H2. 8255A初始化MOVAL,10010000B;PA口工作于方式0,输入MOVDX,193H;PB口工作于方式0,输出OUTDX,AL3. 开关状态记录存放在内存2000H:1000H开始的内存单元中,必须对DS赋值,指令为:MOVAX,2000HMOVDS,AX4. 开关状态每隔半分钟(30s)改变一次,控制电路连续工作24h,则采样次数为24h/30s=246060s/30s=2880次。5. 要求开关S接通,对应灯熄灭,开关S接通时输入“

16、0”,而灯熄灭要输出“1”,因此必须将PA口读入内容取反后输出到PB口。6. 调用子程序前必须保护现场,返回子程序前必须恢复现场。这里的现场即子程序中所用到的寄存器。7. 程序中空缺部分的答案为:(1) 90H(2) 193H(3) OUT(4) 2000H(5) 2880(6) 1000H(7) 190H(8) IN(9) BX(10) 0FFH(11) 191H(12) OUT(13) PUSH BX(14) PUSH CX(15) POP CX(16) POP BX(17) LOP2注 延时30s子程序DELAY 30SPROCMOVBX,3000DELAY:MOVCX,2801WAIT

17、:LOOPWAITDECBXJNZDELAYRETDELAY 30sENDP503. 编写8255A以查询方式作为打印机接口的程序 【参考答案】P92 例83图50是用8255A的PA口作为输出打印数据口,工作方式0,PC口高4位工作于输出方式,PC6产生信号;PC口低4位工作于输入方式,PC2接收打印机的BUSY信号。设打印字符存放在数据段中有效地址为2000H的内存单元,8255A的端口地址为80H83H。(1) 8255A的初始化程序:MOVAL,81HOUT83H,ALMOVAL,0DHOUT83H,ALTESBY:INAL,82HTESTAL,04HJNZTESBYMOVAL,200

18、0HOUT80H,ALMOVAL,0CHOUT83H,ALINCALOUT83H,ALRET(2) 主程序:MOVAL,15HOUT43H,ALMOVAL,50HOUT40H,ALSTILOP:HLTJMPLOP(3) 中断服务程序为:MOVAL,01HOUT80H,ALMOVAL,77HOUT43H,ALMOVAL,50HOUT41H,ALMOVAL,72HOUT41H,ALCALLDLSSMOVAL,00HOUT80H,ALIRET504. 编写8255A以中断方式作为打印机接口的程序【参考答案】P93 例848255A工作方式1,其电路如图51所示,这中断向量为2000H:3000H,在

19、2CH、2DH、2EH、2FH中端口地址设为E0H、E2H、E4H、E6H,控制程序如下:START:MOVAL,84HOUT0E6H,ALMOVAL,0BHOUT0E6H,ALXORAX,AXMOVDS,AXMOVAX,3000HMOVWORD PTR DS:002CH,AXMOVAX,2000HMOVWORD PTR DS:002EH,AXMOVAL,05HOUT0E6H,ALSTIROUTINI1R:MOVAL,DIOUT0E0H,ALMOVAL,0AHOUT0E6H,ALINCALOUT0E6H,ALLRET505. 通过8255A接口控制8个发光二极管亮、暗的应用实例【参考答案】P9

20、4 例85通过8255A 端口A输出控制8个发光二极管的亮和暗,接口连接如图52所示,8255A的端口地址为80H83H。要求L7L0每隔3s点亮1次,点亮的顺序为:L7L6L5L4L3L2L1L0L7周而复始。1. 写出8255A 的方式控制字和初始程序,并加以注释。2. 写出题意要求的程序。根据图52可知:设置端口A 为方式0输出,其余任意,方式控制字为:1000000即80H-标志位A口方式0输出任意初始化程序如下:MOVAL,80H;设置8255A方式控制字OUT83H,AL根据题意可知:8个发光二极管L7L0为共阳极接法,当PAi输出为“0”时,发光二极管亮;输出为“1”时,发光二极

21、管灭。当L7亮时,其余LED都为暗,所以端口A 的控制字为:01111111B,即7FH.因为显示顺序是L7L6L5L4L3L2L1L0L7因此每隔3s,是控制字右移一位,即“0”往右移,程序如下:MOVAH,7FHLOOP:MOVAL,AHOUT80H,AL;使L7亮控制字输出CALLDELAY3s;延迟3sRORAH,1;控制字小循环右移1位JMPLOOP506. 利用8255A作为两机并行通信接口的应用实例【参考答案】P95 例86两台PC机通过8255A 构成的借口实现并行传送数据,A机发送数据,B机接收数据。A机一侧的8255A工作于方式1输出,B机一侧的8255A工作于方式0输入。

22、两机的CPU与8255A之间均采用查询方式交换数据。假设两台机传送1KB数据,发送缓冲区为0300:0000H,接收缓冲区为0400:0000H。硬件连接如图53所示A机是发送,所以把A机一侧8255的A 口设定为方式1输出,从PA7PA0引脚上发送由CPU写入A 口的数据,而PA7和PA6引脚作为联络线和。B机是接收数据,将B机一侧的A口设定为方式0输入,由PA7PA0接收A机送来的数据,而选用PA4和PA0作 为联络线。假定A、B 两机的通信接口8255的A端口地址均为300H 303H,驱动程序如下:A机的发送程序段:MOVAX,0300HMOVES,AX;设A机发送缓冲区段基址MOVB

23、X,0;设A机发送缓冲区偏移量MOVCX,3FFH;置发送字节计数器;对8255A初始化MOVDX,303H;指向8255A控制口MOVAL,10100000H;设A口为方式1输出OUTDX,ALMOVAL,00001101B;这发送中断允许INTEA=1OUTDX,AL;发送第一个数据MOVDX,300H;向A口写第一个数据,产生第一个信号,送给对方以便获取对方的MOVAL,ES:BXOUTDX,ALINCBX;缓冲区指针+1DECCX;计数器减1LOOP0:MOVDX,302H;指向8255A状态LOOP1:INAL,DX;查询发送中断请求INTRA=1?ANDAL,08H;PC3=INT

24、RA=1?JZLOOP1;若无中断请求则等待MOVDX,300H;有请求向A发送数据MOVAL,ES:BX;从缓冲区取数据OUTDX,AL;通过A口送第二个数据INCBX;缓冲区指针加1DECCX;字节计数器减1JNZLOOP0;字节未发送完继续MOVAX,4C00H;功能调用号INT21H;已完,返回DOSB机接收程序段:MOVAX,0400H;接收缓冲区段基地址MOVES,AXMOVBX,0;接收缓冲区偏移量MOVCX,3FFH;接收字节计数器;8255A初始化MOVDX,303H;8255A控制口MOVAL,10011000B;A口和C口高4位为方式0输入,C口低4位为方式0输出OUTDX,ALMOVAL,00000001B;置PC0=1,表示尚未接收数据OUTDX,ALLOOP0:MOVDX,302H;指向C口LOOP1:INAL,DX;查A机的(PC4)=0?ANDAL,10H;即查A机是否发来数据?JNZLOOP1;若为发来数据,则等待MOVDX,300H;发来数据从A口读数据INAL,DXMOVES:BX,AL;存入接收缓冲区MOVDX,303H;产生信号,并发回B机MOVAL,0;PC0置“0”OUTDX,ALNOP;负脉冲宽度NOPMOVAL,01H;PC0=1OUTD

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

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