微机原理与接口技术 - 56789课后题答案 - 图文

更新时间:2024-04-04 18:49:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

微机原理与接口技术 楼顺天 周佳社编著 科学出版社

找了好久,终于在期末从老师那儿弄了一份,希望对大家有用!

5章习题

1. 微处理器的外部结构表现为 数量有限的输入输出引脚 ,它们构成了微处理器级总线。 2. 微处理器级总线经过形成电路之后形成了 系统级总线 。 3. 简述总线的定义及在计算机系统中采用标准化总线的优点。

答:总线是计算机系统中模块(或子系统)之间传输数据、地址和控制信号的公共通道,它是一组公用导线,是计算机系统的重要组成部分。

采用标准化总线的优点是: 1) 简化软、硬件设计。 2) 简化系统结构。 3) 易于系统扩展。 4) 便于系统更新。 5) 便于调试和维修。

4. 在微型计算机应用系统中,按功能层次可以把总线分成哪几类。

答:在微型计算机应用系统中,按功能层次可以把总线分成:片内总线、元件级总线、系统总线和通信总线。

5. 简述RESET信号的有效形式和系统复位后的启动地址。

答:RESET为系统复位信号,高电平有效,其有效信号至少要保持四个时钟周期,且复位信号上升沿要与CLK下降沿同步。

系统复位后的启动地址为0FFFF0H。即:(CS)=0FFFFH,(IP)=0000H。

6. 8086 CPU的M/IO信号在访问存储器时为 高 电平,访问I/O端口时为 低 电平。 7. 在8086系统总线结构中,为什么要有地址锁存器?

答:8086CPU有20条地址线和16条数据线,为了减少引脚,采用了分时复用,共占了20条引脚。这20条引脚在总线周期的T1状态输出地址。为了使地址信息在总线周期的其他T状态仍保持有效,总线控制逻辑必须有一个地址锁存器,把T1状态输出的20位地址信息进行锁存。

8. 根据传送信息的种类不同,系统总线分为 数据总线 、 地址总线 和 控制总线 。 9. 三态逻辑电路输出信号的三个状态是 高电平 、 低电平 和 高阻态 。

10. 在8086的基本读总线周期中,在T1状态开始输出有效的ALE信号;在T2状态开始输出

低电平的RD信号,相应的DEN为__低__电平,引脚AD15 ~ AD0DT/R为__低__电平;上在T1状态期间给出地址信息,在T4状态完成数据的读入。

11. 利用常用芯片74LS373构成8086系统的地址总线, 74LS245作为总线收发器构成数

据总线,画出8086最小方式系统总线形成电路。 答:8086最小方式系统总线形成电路如图5.1所示。

图5.1 8086最小方式系统总线形成电路

12. 微机中的控制总线提供 H 。

A. 数据信号流;

B. 存储器和I/O设备的地址码; C. 所有存储器和I/O设备的时序信号; D. 所有存储器和I/O设备的控制信号; E. 来自存储器和I/O设备的响应信号;

F. 上述各项; G. 上述C,D两项; H. 上述C,D和E三项。

13. 微机中读写控制信号的作用是 E 。

A. 决定数据总线上数据流的方向; B. 控制存储器操作读/写的类型; C. 控制流入、流出存储器信息的方向; D. 控制流入、流出I/O端口信息的方向; E. 以上所有。

14. 8086 CPU工作在最大方式,引脚MN/MX应接__地__。

15. RESET信号在至少保持4个时钟周期的 高 电平时才有效,该信号结束后,CPU内部

的CS为 0FFFFH ,IP为 0000H ,程序从 0FFFF0H 地址开始执行。

16. 在构成8086最小系统总线时,地址锁存器74LS373的选通信号G应接CPU的 ALE 信

号,输出允许端OE应接 地 ;数据收发器74LS245的方向控制端DIR应接

DI/R信号,输出允许端E应接DEN信号。

17. 8086 CPU在读写一个字节时,只需要使用16条数据线中的8条,在 一 个总线周期

内完成;在读写一个字时,自然要用到16条数据线,当字的存储对准时,可在 一 个总线周期内完成;当字的存储为未对准时,则要在 两 个总线周期内完成。 18. CPU在 T3 状态开始检查READY信号,__高_电平时有效,说明存储器或I/O端口准

备就绪,下一个时钟周期可进行数据的读写;否则,CPU可自动插入一个或几个 等待周期(TW ) ,以延长总线周期,从而保证快速的CPU与慢速的存储器或I/O端口之间协调地进行数据传送。

19. 8086最大系统的系统总线结构较最小系统的系统总线结构多一个芯片 8288总线控制器_。

20. 微机在执行指令 MOV [DI],AL时,将送出的有效信号有 B C 。

A.RESET B.高电平的M/IO信号 C.WR D.RD

21. 设指令MOV AX,DATA 已被取到CPU的指令队列中准备执行,并假定DATA为偶地址,

试画出下列情况该指令执行的总线时序图:

(1)没有等待的8086最小方式; (2)有一个等待周期的8086最小方式。

答:(1)没有等待的8086最小方式时序如图5.2所示。

一个基本的总线周期T1T2T3T4CLKA19~A16BHEBHES6~S3状态输出AD15~AD0A15~A0D15~D0数据输入ALEM/IORDDT/RDEN 图5.2 没有等待的8086最小方式时序

(2)有一个等待周期的8086最小方式时序图如图5.3所示。

插入一个TW的总线周期T1T2T3TWT4CLKA19/S6~A16/S3A19~A16BHEBHES6~S3状态输出AD15~AD0A15~A0D15~D0数据输入ALEM/IORDDT/RDEN

图5.3有一个等待周期的8086最小方式时序图

22. 上题中如果指令分别为:

(1) MOV DATA+1,AX (2) MOV DATA+1,AL

(3) OUT DX,AX (DX的内容为偶数 ) (4) IN AL,0F5H

重做上题(1)。

答:(1)因为DATA为偶地址,则DATA+1为奇地址。故要完成本条指令,需要两个总线周期。时序图如图5.4所示。

图5.4 执行MOV DATA+1,AX指令的时序参考图

(2) DATA+1虽然为奇地址,但是AL为八位存储器,故本条指令需用一个总线

周期,时序图如图5.5所示。

图5.5 执行MOV DATA+1,AL指令的时序参考图

(3) 执行OUT DX,AX(DX的内容为偶数 )指令的时序图如图5.6所示。

图5.6 执行OUT DX,AX指令的时序参考图

(4) 执行IN AL,0F5H指令的时序图如图5.7所示。

图5.7 执行IN AL,0F5H指令的时序参考图

23.8086最小方式下,读总线周期和写总线周期相同之处是:在 T1状态开始使

ALE信号变为有效 高 电平,并输出M/IO信号来确定是访问存储器还是访问I/O端口,同时送出20位有效地址,在T1状态的后部,ALE信号变为 低 电平,利用其下降沿将20位地址和BHE的状态锁存在地址锁存器中;相异之处从 T2 状态开始的数据传送阶段。

6章习题

1. 简述内存储器的分类及每种存储器的用途?

解:内存储器按其工作方式的不同,可以分为随机存取存储器(简称随机存储器或RAM)和只读存储器(简称ROM)。

随机存储器。随机存储器允许随机的按任意指定地址向内存单元存入或从该单元取出信息,对任一地址的存取时间都是相同的。由于信息是通过电信号写入存储器的,所以断电时RAM中的信息就会消失。计算机工作时使用的程序和数据等都存储在RAM中,如果对程序或数据进行了修改之后,应该将它存储到外存储器中,否则关机后信息将丢失。通常所说的内存大小就是指RAM的大小,一般以KB或MB为单位。

只读存储器。只读存储器是只能读出而不能随意写入信息的存储器。ROM中的内容是由厂家制造时用特殊方法写入的,或者要利用特殊的写入器才能写入。当计算机断电后,ROM中的信息不会丢失。当计算机重新被加电后,其中的信息保持原来的不变,仍可被读出。ROM适宜存放计算机启动的引导程序、启动后的检测程序、系统最基本的输入输出程序、时钟控制程序以及计算机的系统配置和磁盘参数等重要信息。 2.简述存储器的主要技术指标有哪些?

解:存储器的主要技术指标有:存储容量、读写速度、非易失性、可靠性等。 3.在实际工程应用中,存储器芯片的速度怎样估算?

解:在选择存储器芯片时应注意是否与微处理器的总线周期时序匹配。作为一种保守的估计,在存储器芯片的手册中可以查得最小读出周期tcyc(R)(Read Cycle Time)和最小写周期tcyc(W)(Write Cycle Time)。如果根据计算,微处理器对存储器的读写周期都比存储器芯片手册中的最小读写周期大,那么我们认为该存储器芯片是符合要求的,否则要另选速度更高的存储器芯片。

8086CPU对存储器的读写周期需要4个时钟周期(一个基本的总线周期)。因此,作为一种保守的工程估计,存储器芯片的最小读出时间应满足如下表达式:

tcyc(R)<4T-tda-tD-T

其中:T为8086微处理器的时钟周期;tda为8086微处理器的地址总线延时时间;tD为各种因素引起的总线附加延时。这里的tD应该认为是总线长度、附加逻辑电路、总线驱动器等引起的延时时间总和。

同理,存储器芯片的最小写入时间应满足如下表达式:

tcyc(W)<4T-tda―tD―T

4.用下列RAM芯片构成32kB存储器模块,各需多少芯片?16位地址总线中有多少位参与片

内寻址?多少位可用作片选控制信号?

(1)1k×1 (2)1k×4 (3)4k×8 (4)16k×4 解:(1)1k×1

32K?8?256片,

1K?1片内寻址:A0?A9,共10位; 片选控制信号:A10?A15,共6位。 (2)1k×4

32K?8?64片,

1K?4片内寻址:A0?A9,共10位; 片选控制信号:A10?A15,共6位。 (3)4k×8

32K?8?8片,

4K?8片内寻址:A0?A11,共12位; 片选控制信号:A12?A15,共4位。 (4)16k×4

32K?8?4片,

16K?4片内寻址:A0?A13,共14位; 片选控制信号:A14A15,共2位。

5.若存储器模块的存储容量为256kB,则利用上题中给出的RAM芯片,求出构成256kB存储模块各需多少块芯片?20位地址总线中有多少位参与片内寻址?多少位可用作片选控制信号?

解:(1)1k×1

256K?8?2048片,

1K?1片内寻址:A0?A9,共10位; 片选控制信号:A10?A19,共10位。 (2)1k×4

256K?8?512片,

1K?4片内寻址:A0?A9,共10位; 片选控制信号:A10?A19,共10位。 (3)4k×8

256K?8?64片,

4K?8片内寻址:A0?A11,共12位; 片选控制信号:A12?A19,共8位。 (4)16k×4

256K?8?32片,

16K?4片内寻址:A0?A13,共14位; 片选控制信号:A14?A19,共6位。

6.一台8位微机系统的地址总线为16位,其存储器中RAM的容量为32kB,首地址为4000H,且地址是连接的。问可用的最高地址是多少? 解:32K=2=8000H,所以,最高地址为:

4000H+8000H-1=BFFFH

则,可用的最高地址为0BFFFH.

7.某微机系统中内存的首地址为4000H,末地址为7FFFH,求其内存容量。 解:7FFFH-4000H+1=4000H=2=16KB 内存容量为16KB。

8. 利用全地址译码将6264芯片接在8088的系统总线上,其所占地址范围为

00000H~03FFFH,试画连接图。写入某数据并读出与之比较,若有错,则在DL中写入01H;若每个单元均对,则在DL写入EEH,试编写此检测程序。 解:因为6264的片容量为8KB。

RAM存储区域的总容量为03FFFH-00000H+1=4000H=16KB,故需要2片6264芯片。 连接图如图6.1所示。

1415

6264A0?A12A0?D0?D0?D7A12D7MEMROEWECS2CS16264MEMW?5V74LS138A13A14A15ABCA16A17A18A19MEMWMEMRG2AG2BG1?5VY0Y1Y2Y3Y4Y5Y6Y7A0?D0?A12D7OEWECS2CS1 图6.1 与8088系统总线的连接图

检测程序段:

MOV AX,0000H MOV DS,AX MOV SI,0 MOV CX,16*1024 MOV AL,55H

CMPL: MOV [SI],AL

MOV BL,[SI] CMP BL,AL JNE ERROR INC SI LOOP CMPL MOV DL,0EEH JMP NEXT

ERROR: MOV DL,01H NEXT: ?

9.简述EPROM的编程过程,并说明EEPROM的编程过程。 解:EPROM芯片的编程有两种方式:标准编程和快速编程。

在标准编程方式下,每给出一个编程负脉冲就写入一个字节的数据。Vpp上加编程电压,地址线、数据线上给出要编程单元的地址及其数据,并使CE=0,OE=1。上述信号稳定后,在PGM端加上宽度为50ms±5ms的负脉冲,就可将数据逐一写入。写入一个单元后将OE变低,可以对刚写入的数据读出进行检验。

快速编程使用100?s的编程脉冲依次写完所有要编程的单元,然后从头开始检验每个写入的字节。若写的不正确,则重写此单元。写完再检验,不正确可重写。

EEPROM编程时不需要加高电压,也不需要专门的擦除过程。并口线EEPROM操作与SRAM相似,写入时间约5ms。串行EEPROM写操作按时序进行,分为字节写方式和页写方式。 10.若要将4块6264芯片连接到8088最大方式系统A0000H~A7FFFH的地址空间中,现限定要采用74LS138作为地址译码器,试画出包括板内数据总线驱动的连接电路图。

解:8088最大方式系统与存储器读写操作有关的信号线有:地址总线A0?A19,数据总线:

D0?D7,控制信号:MEMR,MEMW。

根据题目已知条件和74LS138译码器的功能,设计的板内数据总线驱动电路如图6.2(a)所示,板内存储器电路的连接电路图如图6.2 (b)所示。

74LS245D0~D7XD0~XD7A0~A7B0~B7MEMRDIREMEMW74LS138的Y074LS138的Y174LS138的Y274LS138的Y3 图6.2(a)板内数据总线驱动电路

图6.2 (b)板内存储器电路的连接图

11.若在某8088微型计算机系统中,要将一块2764芯片连接到E0000H~E7FFFH的空间中去,利用局部译码方式使它占有整个32kB的空间,试画出地址译码电路及2764芯片与总线的连接图。

解:Intel 2764的片容量为8KB,而题目给出的地址共32KB,说明有4个地址区重叠,即采用部分地址译码时,有2条高位地址线不参加译码(即A13,A14不参加译码)。

地址译码电路及2764与总线的连接如图6.3所示。

2764A0~A12D0~D7A0~A12D0~D7MEMRA15A16A17A18A19OECEVPPPGM+5V 图6.3地址译码电路及2764与总线的连接

12.在8086 CPU工作在最小方式组成的微机系统中,扩充设计16kB的SRAM电路,SRAM芯片选用Intel 6264,内存地址范围为70000H~73FFFH,试画出此SRAM电路与8086系统总线的连接图。

解:73FFFH-70000H+1=4000H=16K

Intel 6264的片容量为8KB,RAM存储区总容量为16KB,故需要2片6264.

8086最小方式系统与存储器读写操作有关的信号线有:地址总线A0?A19,数据总线:

D0?D15,控制信号:M/IO,RD,WR,BHE。

此SRAM电路与8086系统总线的连接图如图6.4所示。

6264A1~A13AD0D0~D7A12RDWROEWED7+5VA0CS2CS1A15A14A196264G2AY0A0D0D8~D15G2BY1Y2Y3MIOG1A12OEWED7A18A17A16BHECBAY4Y5Y6Y7CS2CS1 图6.4 SRAM电路与8086系统总线的连接图

13.EPROM 28C16芯片各引脚的功能是什么?如果要将一片28C16与8088系统总线相连接,并能随时改写28C16中各单元的内容,试画出28C16和8088系统总线的连接图(地址空间为40000H~407FFH)。 解:28C16的引脚功能: ? VCC,GND:电源和地 ? ? ? ? ?

2

A10~A0:11位地址线,可寻址2KB地址空间 D7~D0:8位数据线 WE:写允许,低电平有效。 OE:输出允许,低电平有效。 CE:片选信号,低电平有效。

根据所学知识,28C16与8088系统的连接图如图6.5所示。

D0~D8A0~A10A19A17A16A15A14A13A12A11A18MEMRMEMWA0A1A2A3A4A5A6A7A8A9A10CSOEWE28C16D0D1D2D3D4D5D6D7

图6.5 28C16与8088系统的连接图

7章习题

1. 简述I/O接口的基本功能。

答:(1)地址选择 (2)控制功能 (3)状态指示 (4)速度匹配 (5)转换信息格式 (6)电平转换 (7)可编程性 2. 简述I/O接口与I/O端口的区别。

答:I/O接口是指I/O设备与系统总线之间的连接部件。

I/O端口是指I/O接口内部可由CPU进行读写操作的各种寄存器,根据存放信息的不同,这些寄存器分别称为数据端口、控制端口和状态端口。 3. 简述I/O端口的编址方式及优缺点。

答:I/O端口编址的方式可以分为独立编址和统一编址两种方式。 独立编址方式是指I/O端口与存储器有相互独立的地址空间。

统一编址方式是指I/O端口与存储器共享一个地址空间,所有的存储单元只占用

其中的一部分地址,而I/O端口则占用另外一部分地址。

优缺点:独立编址方式的优点之一是存储器的容量可以达到与地址总线所决定的

地址空间相同;优点之二是访问I/O端口时的地址位数可以较少,提高总线的利用率。但是缺点是必须设置专门的I/O指令,增加了指令系统和有关硬件的复杂性。

与独立编址方式相比,统一编址方式的优点是无需专门的I/O指令,从而使编程

较灵活,但是I/O端口占用了存储器的一部分地址空间,因而影响到系统中的存储器的容量,并且访问存储器和访问I/O端口必须使用相同位数的地址,使指令地址码加长,总线中传送信息量增加。

4. 简述程序查询、中断和DMA三种方式的优缺点。

答:程序查询方式的优点在于可以防止数据的丢失,实现起来较为简单;缺点是它

占用了微处理器的大量时间,实时性较差。

中断方式具有较好的实时性;但在一定程度上增加成本和复杂性。

DMA方式的突出优点是传送过程无须处理器的控制,数据也无须经过微处理

器,而是直接在I/O设备与主存储器间进行,因此既节约了微处理器的时间,也使传送速率大大提高;缺点是输入/输出操作占用微处理器时间,而且很难达到较高的数据传输率。

5. 8086 CPU 有 20 条地址总线,可形成 1MB 的存储器地址空间,可寻址范围为

00000H--FFFFFH;地址总线中的 16 条线可用于I/O寻址,形成 64KB 的输入输出地址空间,地址范围为 0000H--FFFFH ;PC机中用了 10 条地址线进行I/O操作,其地址空间为 1KB ,可寻址范围为 000H—3FFH 。

6. 对于微机而言,任何新增的外部设备,最终总是要通过 I/O接口 与主机相接。

7. 在主机板外开发一些新的外设接口逻辑,这些接口逻辑的一侧应与 I/O设备

相接,另一侧与 系统总线 相接。

8. 需要靠在程序中排入I/O指令完成的数据输入输出方式有 B C 。

(A)DMA (B)程序查询方式 (C)中断方式

9. 8086CPU用 IN 指令从端口读入数据,用 OUT 指令向端口写入数据。 10. 在8088 CPU组成的计算机系统中有一接口模块,片内占用16个端口地址300~30FH,

设计产生片选信号的译码电路。

解:由于片内有16个端口,非别占用300~30FH地址。因此,该接口模块的片选信号的译码电路设计时,A3~A0不参加译码。其译码电路如图7.1所示。

A9A8IORIOWA7A6A5A4片选信号

图7.1

11. 在IBM PC系统中,如果AEN信号未参加I/O端口地址译码,会出现什么问题?

在没有DMA机构的其它微机系统中,是否存在同样的问题?

答:在IBM PC系统中,如果AEN信号未参加I/O端口地址译码,则会出现DMA机构与I/O端口竞争总线的问题。在没有DMA机构的其他微机系统中,不会存在同样的问题。

12. 在8088 CPU 工作在最大方式组成的微机系统中,利用74LS244设计一个输入端口,

分配给该端口的地址为04E5H,试画出连接图。

解:连接图如图7.2所示。

图7.2

13. 在上题的基础上,利用74LS374设计一个输出端口,分配给该端口的地址为E504H,

试画出连接图。若上题中输入端口的bit3、 bit4和bit7 同时为1,将内存BUFFER开始的连续10个字节单元的数据由E504H端口输出;若不满足条件,则等待。试编写程序。

解:连接图如图7.3所示。

图7.3

程序如下:

MOV CX ,10

LEA SI,BUFFER MOV DX,04E5H WAIT1:IN AL,DX AND AL,98H CMP AL,98H

JNZ WAIT1 MOV DX,0E504H L1:MOV AL,[SI] OUT DX,AL INC SI LOOP L1

HLT

14.在8086最大系统中,分别利用2片74LS244和74LS273设计16位输入和输出接口,其起始端口地址为504H、506H,画出硬件连接图

解:硬件连接图如图7.4所示。

图7.4 硬件连接图

9章习题

1. 下列地址哪些能够分配给8253/8254的计数器0?为什么?(23H、54H、97H、51H、

FCH、59H)

解:因为已经约定采用A2,A1作为8253的内部地址线,而且计数器0的地址为00,所以在题中所给的地址中只有51H,59H的A2和A1同时为0,即:A2A1=00.

2. 如果计数器0设定为方式0,GATE0=1,CLK0=1MHz,时常数为N=1000,请画出

OUT0的波形。如果计数器1设定为方式1,其它参数与计数器0相同,画出OUT1的波形。

3. 编程实现:将8253计数器0设置成方式4,并置时常数10000,然后处于等待状态,直

到CE的内容≤1000后再向下执行。 解:

MOV DX,COUNTD ;写入计数器0的方式控制字 MOV AL,00111000B OUT DX,AL

MOV DX,COUNTA ;设置计数器0的常数 MOV AX,10000 OUT DX,AL XCHG AL,AH OUT DX,AL

L1: MOV DX,COUNTD ;写入计数器0的方式控制字

MOV AL,0H OUT DX,AL

MOV DX,COUNTA ;读入CE IN AL,DX MOV AH,AL IN AL,DX XCHG AL,AH

CMP AX,1000 ;判别CE当前大小 JA L1

4. 利用8253可以实现确定时间的延迟,编程实现延时10秒的程序段(设可以使用的基准

时钟为1MHz)。

解:本题使用计数器0和计数器1,并且计数器0的输出OUT0作为计数器1的时钟输入CLK1. 程序如下: MOV MOV OUT MOV MOV OUT

DX,COUNTD AL,00110100B DX,AL DX,COUNTA AX,10000 DX,AL

;写计数器0时常数,分频得到100Hz时钟频率

;写计数器0方式控制字

XCHG AL,AH OUT MOV MOV OUT MOV MOV

DX,AL DX,COUNTD AL,01110000B DX,AL DX,COUNTB AX,999

;分频得到0.1Hz时钟频率。(在方式0下,时常数为N时,

;写计数器1方式控制字

;OUT输出的低电平宽度为N+1). OUT

DX,AL

XCHG AL,AH OUT L1: MOV MOV OUT MOV IN MOV IN

DX,AL

;延时

; 当前CE的内容锁存到OL

DX,COUNTD AL,01000000B DX,AL DX,COUNTB AL,DX AH,AL AL,DX

XCHG AL,AH CMP JNA ….

5. 比较8254方式0与方式4、方式1与方式5的区别?

方式0与方式4

方式0 OUT端计数过程中为低,计数值减为0时,输出变高

方式4 OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲 方式1与方式5

方式1 OUT端输出宽度为n个CLK的低电平,计数值减为0时,输出为高 方式5 OUT端计数过程中为高,计数值减为0时输出宽度为1个CLK的负脉冲

6. 在8088最小系统中,8253的端口地址为284H~287H。系统提供的时钟为1MHz,要

求在OUT0输出周期为20微秒的方波,在OUT1输出周期为200微秒,其中每周期为负的时间是180微秒的信号。请编写8253的初始化程序。 解:

OUT0输出为20微妙方波,可用方式三直接产生,OUT1输出波形与书中例9.2类似,可用其中思想产生此信号。如果允许增加外部器件,也可在例9.1的基础上,将OUT端信号通过与非门取反,这样即可产生题目要求信号。本例利用例9.1思想解答

AX,999 L1

;延时结束,则继续执行,否则,跳到L1,继续延时

MOV DX,287H ;写计数器0控制方式字 MOV AL,00010110B OUT DX,AL

MOV DX,284H ;写计数器0时常数 MOV AL,20 OUR DX,AL

MOV DX,287 ;写计数器2控制方式字 MOV AL,10010110B OUT DX,AL

MOV DX,286H ;写计数器2时常数 MOV AL,200 OUT DX,AL MOV DX,287H

MOV AL,01010010B ;写计数器1控制方式字 OUT DX,AL MOV DX,285H

MOV AL,9 ;写计数器1时常数 OUT DX,AL

7. 通过8253计数器0的方式0产生中断请求信号,现需要延迟产生中断的时刻,可采用:

A) 在OUT0变高之前重置初值;

B) 在OUT0变高之前在GATE0端加一负脉冲信号; C) 降低加在CLK0端的信号频率; D) 以上全是。 解:D

A:方式0下,在OUT0变高之前重置初值,将在下一个CLK的下降沿使时常数从CR读入CE并重新计数。

B:在OUT0变高之前在GATE0端加一负脉冲信号可以延时一个时钟周期,达到延时的目的。

C:降低加在CLK0端的信号频率,可以增大时钟周期,达到延长OUT0端低电平的时间。 (注:A中,如果重置的初值为1,则不会达到延时的效果)

8. 已知8254计数器0的端口地址为40H,控制字寄存器的端口地址为43H,计数时钟频率

为2MHz,利用这一通道设计当计数到0时发出中断请求信号,其程序段如下,则中断请求信号的周期是 32.7675 ms。

MOV AL,00110010B OUT 43H, AL MOV AL, 0FFH OUT 40H, AL OUT 40H, AL

9. 若8254芯片可使用的8086端口地址为D0D0H~D0DFH,试画出系统设计连接图。设加

到8254上的时钟信号为2MHz,

(1)利用计数器0~2分别产生下列三种信号:

① ② ③

周期为10us的对称方波 每1s产生一个负脉冲 10s后产生一个负脉冲

每种情况下,说明8254如何连接并编写包括初始化在内的程序段。

(2) 希望利用8086通过一专用接口控制8253的GATE端,当CPU使GATE有效开始,

20us后在计数器0的OUT端产生一个正脉冲,试设计完成此要求的硬件和软件。 解:

(1) 选用D0D0H~D0DFH中的偶地址DODO,DOD2,DOD4,DOD6为基本地址作为8254的端口

地址,设8086工作在最小方式下。8254端口地址译码电路如下图:

? 计数器0输入端加2MHz的时钟信号,GATE0加+5V电压,输出OUT0信号为周期为10μs的对称方波。

初始化代码:

MOV DX,0D0D6H ;写计数器0工作方式 MOV AL,00010110B OUT DX,AL

MOV DX,0D0D0H ;写计数器0时常数 MOV AL,20 OUT DX,AL

?CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK1做时钟信号,OUT1输出为每1s产生一个负脉冲。 初始代码:

MOV DX,0D0D6H ;写计数器0的工作方式 MOV AL,00010110B

OUT DX,AL

MOV DX,0D0D0H ;写计数器0的时常数 MOV AL,100 OUT DX,AL

MOV DX,0D0D6H ;写计数器1的工作方式 MOV AL,01110100B OUT DX,AL

MOV DX,0D0D2H ;写计数器1的时常数 MOV AX,20000 OUT DX,AL XCHG AL,AH OUT DX,AL

?CLK0加2MHz的始终信号,GATE0,GATE1加+5V电压,OUT0输出加到CLK2做时钟信号,OUT2输出为10s后产生一个负脉冲。 初始代码:

MOV DX,0D0D6H ;写计数器0的工作方式 MOV AL,00110110B OUT DX,AL

MOV DX,0D0D0H ;写计数器0的时常数 MOV AX,1000 OUT DX,AL XCHG AL,AH OUT DX,AL

MOV DX,0D0D6H ;写计数器2的工作方式 MOV AL,10111000B OUT DX,AL

MOV DX,0D0D4H ;写计数器2的时常数 MOV AX,20000 OUT DX,AL XCHG AL,AH

OUT DX,AL

1) 选用地址D0D0,DOD2,DOD4,DOD6为8253的端口地址,D0D8为GATE端口地址,该端口采用74LS373,8253用方式4,在OUT输出端加非门实现脉冲功能。接口电路如图:

初始代码为:

MOV DX,0D0D8H ;GATE初始化 MOV AL,0 OUT DX,AL

MOV DX,0D0D6H ;写计数器0工作方式 MOV AL,00011000B OUT DX,AL

MOV DX,0D0D0H ;写计数器0时常数 MOV AL,40 OUT DX,AL MOV DX,0D0D8H MOV AL,1

OUT DX,AL ;使GATE变高有效

10. 若加到8254上的时钟频率为0.5MHz,则一个计数器的最长定时时间是多少?若要求10

分钟产生一次定时中断, 试提出解决方案。

解:一个计数器的最长定时时间应该是置入时常数0时,此时定时时间为: 65536/0.5*10^6s=131ms

采用方式0即:计数达到终值时中断来10分钟产生一次定时中断,此时时常数CR为:10*60*0.5*10^6=3*10^9.

由于一个计数器最多分频65536,所以至少得使用2个计数器。我们采用计数器0和计数器1.计数器0的时常数CR0为60000,计数器1的时常数CR1为50000.

连接方式为:把0.5MHz的时钟频率接到计数器0的CLK0,然后把计数器0的OUT0接到计数器1的CLK1。这样计数器1的OUT1端输出的就是10分钟产生一次的定时中断。

11. 织布机控制系统如图9.26所示,已知织布机每织1米发出一个正脉冲,每织100米要

求接收到一脉冲,去触发剪裁设备把布剪开。(1)设8253的端口地址为80H~83H,编写对8253初始化程序。(2)假定系统提供的信号频率为1MHz,希望利用8253的其余通道产生0.1秒的周期信号,编写初始化程序。

D7RDWRA1A0Intel8253GATE0D78088CPU最小方式系统总线~D0RDWRA1A0~D0CLK0OUT0织布机系统+5VIO/MA9=1A2译码电路CS?? 解:(1) MOV MOV

DX,83H

AL,00010100B

OUT DX,AL MOV DX,80H MOV AL,100 OUT DX,AL (2)

将计数器1的输出OUT1信号作为计数器2的时钟输入CLK2,计数器1的时钟输入为系统提供1MHZ的信号 MOV DX,83H

MOV AL,01110100B OUT DX,AL MOV DX,81H MOV AX,1000 OUT DX,AL XCHG AL,AH MOV DX,AL MOV DX,83H

MOV AL,10010110B OUT DX,AL MOV DX,82H MOV AL,100 OUT DX,AL

图9.26 织布机控制系统

12. 在IBM PC系统中根据下列不同条件设计接口逻辑,利用8253完成对外部脉冲信号重复

频率的测量。

(1) 被测脉冲信号的重复频率在10~1000Hz范围内。 (2) 被测脉冲信号的重复频率在0.5~1.5Hz范围内。 (3) 被测脉冲信号重复频率在10~100Hz范围内。

(4) 被测是间歇脉冲信号,每次有信号时有100个脉冲,重复频率为0.8~1.2MHz,间

歇频率大约每秒15次,要求测有信号时的脉冲重复频率。

解:用两个计数器,计数器0的CLK接待测信号,GATE接半周期为10s的高电平信号,

OUT接8259,同时取反接计数器1的GATE端。计数器1的CLK接系统时钟,半周期为T0。在这样的逻辑电路下,计数器0的功能是记录待测信号的脉冲数N0,计数器1的功能是记录在相同时间里系统时钟信号的脉冲数N1。根据T=N1*T0/N0可计算出待测信号的周期。S(t)是待测信号,S’(t)为给定的周期大于10s的高电平信号。

8259D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2S(t)S’(t)IR01MHzIntel8253

端口声明:COUNTA为计数器0的地址,COUNTB为计数器2的地址,COUNTD为控制器地址,COUNT为373地址 程序如下:

MOV DX,COUNTD ;计数器1初始化 MOV AL,01110000B OUT DX,AL MOV DX,COUNTB OUT DX,AL MOV DX,COUNTB MOV AL,O OUT DX,AL

MOV DX,COUNTD ;计数器0初始化 MOV AL,00010000B OUT DX,AL MOV DX,COUNTA MOV AL,0

OUT DX,AL OUT DX,AL STI

读两计数器的计数,并进行计算的中断服务子程序: PUSH AX PUSH BX PUSH CX PUSH DX MOV DX,COUNTD MOV AL,00000000B OUT DX,AL MOV DX,COUNTA IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV BX,AX MOV DX,COUNTD MOV AL,00010000B OUT DX,AL MOV DX,COUNTB IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV CX,T0

MUL CX DIV BX MOV SFR,AX POP DX POP CX POP BX POP AX IRET

SFR中保存结果即为待测信号的周期。

对于(1)题,10*10不小于100,10*1000不大于65535,可以用计数法。 同理(3)也可用此方法。

对于(2)题,可用周期法。逻辑电路图如下:

1MHzS(t)D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2Intel82538259IR0

程序如下: MOV DX,COUNTD MOV AL,0011 0100B OUT DX,AL MOV DX,COUNTA

MOV AL,0 OUT DX,AL OUT DX,AL STI PUSH AX PUSH BX PUSH DX MOV DX,COUNTD MOV AL,0000 0000B OUT DX,AL MOV DX,COUNTA IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX MOV BX,AX MOV DX,000FH MOV AX,4240H DIV BX MOV SFR,AX POP DX POP BX POP AX IRET

(4) 如图设计接口,计数器1用来记录在50个脉冲所用时间,50个信号脉冲最多用1/0.8*50(约为63us)由于计数器1用1MHz CLK,故其计数个数N即为N us,

所以当N>63时,则有低电平间隔计入,须重新计数。当N>63时,则计算得待测频率。

8259D0~D7RDWRA1A0CSCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2S(t)IR01MHzD0D7G74LS373D0D7OEIntel8253译码程序如下: MOV DX,COUNTD MOV AL,00H OUT DX,AL MOV DX,COUNTD MOV AL,0001 0000B OUT DX,AL MOV DX,COUNTA MOV AL,50 OUT DX,AL MOV DX,COUNTD MOV AL,0111 0000B OUT DX,AL MOV COUNTB

MOV AL,0 OUT DX,AL OUT DX,AL

L2: MOV DX,COUNT ;给GATE0和GATE1高电平,开始计数 MOV AL,81H OUT DX,AL

L1: NOP MOV DX,COUNTD MOV AL,00000000B OUT DX,AL MOV DX,COUNTA IN AL,DX MOV DX,COUNTA IN AL,DX

AND AL,AL JNZ L1 MOV DX,COUNT

MOV AL,00H OUT DX,AL

MOV DX,COUNTD MOV AL,01000000B OUT DX,AL MOV DX,COUNTB IN AL,DX XCHG AL,AH IN AL,DX XCHG AL,AH NEG AX INC AX

CMP AX,70H ;判断是否计完50个脉冲,若未计完继续等待;若计完则暂停计数 ;读计数器1结果 AL大于70,则有间歇计入,重新测试

;当

JA L2 MOV BL,AL

MOV AL,50 ;计算频率 DIV BL MOV FREC,AL

10章习题

1. 试分析 8255A方式0、方式1和方式2的主要区别,并分别说明它们适合于什么应用场

合。

答:方式0是基本的输入/输出,端口A、B、C都可以作为输入输出端口。适用于CPU与非智能I/O设备的数据传输;

方式1是有联络信号的输入/输出,端口A、B都可以设定成该方式,此时三个端口

的信号线分成了A、B两组,PC7~PC4用作A组的联络信号,PC3~PC0用作B组的联络信号。适用于高速CPU与低速I/O设备的数据传输;

方式2是双向传输,只有A组端口可以设定成该方式,PC6~PC7用作输出的联

络信号,PC4~PC5用作输入的联络信号,PC3用作中断请求信号。适用于双机之间数据的并行传送。

2. 8255A的A组设置成方式1输入,与CPU之间采用中断方式联络,则产生中断请求信号

INTRA的条件是 STBA= 1 ,IBFA= 1 ,INTEA= 1 。

3. 如果8255A的端口地址为300H~303H,A组和B组均为方式0,端口A为输出,端口B

为输入,PC3~PC0为输入,PC7~PC4为输出,写出8255A的初始化程序段;编程实现将从端口C低4位读入的值从高4位送出。 解: MOV DX,303H

MOV AL,10000011B OUT DX,AL MOV DX,302H IN AL,DX MOV CL,4

SHL AL,CL OUT DX,AL

4. 在实际应用中经常需要检测设备的状态,并进行指示。在8086最小方式系统下,有一

片8255A,其分配的端口地址为8F00H~8F07H中的奇地址,外部设备产生的状态有16个(K15~K0),要求采用4个发光二极管来指示开关量中“1”的个数。(1)画出8255A的连接图;(2)编写程序段实现连续检测并显示。 解:(1)

8086D8~D158255D0~D7RDRDWRA2A1M/IOBHEA15A11A10A9A8A0A14A13A12A7A6A5A4A3PA0PA1......WRA1PA716位开关量(K15~K0)A0PB0PB1PB7......VCCCSPC3PC2PC1PC0(2) MOV DX,8F07H

MOV AL,10010010B ;端口A、B方式0输入,端口C方式0输出 OUT DX,AL

NEXT:

L2: L1:

MOV DX,8F03H ;从端口B读取高8位开关量 IN AL,DX XCHG AL,AH

MOV DX,8F01H ;从端口A读取低8位开关量 IN AL,DX MOV BX,AX XOR AL,AL MOV CX,16 CLC

SHL BX,1 JNC L1 INC AL

LOOP L2

MOV DX,8F05H ;从端口C送出 OUT DX,AL

JMP NEXT ;进行下一次检测

5. 利用IBM PC系统机的总线槽,开发由一片8255A构成的子系统,8255A端口地址为260H~

263H,编程实现产生如图10.20所示的8个信号(各个信号的节拍不必严格相等)。

Y0Y1Y7?

图10.20 要求产生的信号波形

解:8355A与IBM PC机总线的连接框图如下:

可将8255A的端口A作为要产生的信号的输出端口,设定为方式0输出,端口B和端口C不做使用,均设定为方式0输出。程序段如下:

MOV DX,263H ;设定8255A的工作方式 MOV AL,10000000B OUT DX,AL

MOV DX,260H ;产生指定信号 XOR AL,AL OUT DX,AL REP:

MOV AL,80H MOV CX,7

REP1:

OUT DX,AL SAR AL,1 LOOP REP1 MOV CX,8 REP2:

SHL AL,1 OUT DX,AL LOOP REP2 JMP REP

6. 在实际应用中,经常会遇到要求输入多个数据量,这时需要用到多路开关,如图10.21

表示八选一的逻辑框图及其真值表。 现有8组16位开关量数据(无符号数),要求通过一片8255A(端口地址为260H~263H)分时输入到CPU(8088最小方式系统)中,并找出它们中的最大值,并通过4个发光二极管指示其序号(灯亮表示“1”)。画出8255A的连接图,并编程实现。

解:由于开关量是16为数据,故可以将8255A的PA端与PB端设定为方式0,分别读取开关量的低八位和高八位,以PC低三位端口的控制八选一电路的输出依次从X0到X7,使用PC端口的高八位输出最大开关量的序号(该序号为1~8),控制发光二极管的亮灭以码指示序号。 连接图如下:

八选一x0x1x2x3x4x5x6x7ys0s1s2s2s1s00 0 00 0 10 1 00 1 11 0 01 0 11 1 01 1 1yx0x1x2x3x4x5x6x7图10.21 八选一逻辑电路

程序段如下:

MOV DX,263H

MOV AL,10011010B ;设定工作方式,PA,PB均工作于方式0,PA、PB为输入,PC为输出

OUT DX,AL MOV CX,8 XOR BX,BX

MOV SI,0 ;SI表示输入开关量的序号 ST1:

MOV DX,262H OUT DX,SI

MOV DX,260H ;将开关量数据的低八位写入AL IN AL,DX

MOV DX,261H ;将开关量数据的高八位写入AH IN AH,DX

CMP BX,AX JA NEXT

MOV BX,AX ;将当前最大值保存在BX中 INC PUSH NEXT:

INC LOOP POP XOR MOV MOV ROL MOV OUT SI

SI SI ST1

SI AX,AX

AX,SI CL,4

AL,CL DX,262H

DX,AL ;将当前最大值的序号压栈 ;最大值的序号出栈 ;将最大值的序号(4位)移至AL的高四位 的高四位输出最大值序号 ;PC

本文来源:https://www.bwwdw.com/article/s6tr.html

Top