单片机课后习题答案 下载本文

.. .. .. ..

Ⅲ、片 × × 0 1 0 × 0……0 1000H

× × 0 1 0 × 1……1 13FFH

Ⅳ、片 × × 0 1 1 × 0……0 1800H

× × 0 1 1 × 1……1 1BFFH

由于有3条地址线A15、A14和A10没有连接和使用,所以每片RAM都有23=8kB地址重叠区。

2.10 用4片1k×8位RAM,一片2-4译码器,一片4-16译码器,请构成4k×8位容量的存贮器,画出存贮器的连接图。并要求:

(1)每一存贮单元的地址范围是唯一确定的,不存在地址重叠区; (2)给出所画的连接图中每块芯片的寻址范围;

(3)存贮器应具有扩展能力,即能扩展到64k×8位的存贮容量。 若要扩展到最大容量,除了增加存贮器芯片外,还要增添什么器件?

解:按照第一个要求,必须通过全译码来产生片选信号。即每个片选信号必须由6个高位地址线的组合来产生。由于提供了两种不同的译码器,产生这种片选信号并不难。但连接的方式不止一种,而且不同的连接方式各个存贮器芯片的地址区也可以不同。下图是两种可能出现的方案。

在第一种方案中,4片RAM的地址为: Ⅰ片:0000H-03FFH; Ⅱ片:0400H-07FFH; Ⅲ片:0800H-0BFFH; Ⅳ片:0C00H-0FFFH;

第二种方案的意图是以地址线A10来控制4-16译码器Y0的输出是为1还是为0:当A14A13A12A11A10=00000时Y0=0;当A14A13A12A11A10=00001时Y0=1。再加上A15的控制,可以得到4个片选信号,从而确定4片RAM的地址为:

Ⅰ片:0000H-03FFH;

参考.资料

.. .. .. ..

Ⅱ片:0400H-07FFH; Ⅲ片:8000H-83FFH; Ⅳ片:8400H-87FFH;

但是,这个方案并不能满足题目中第一个要求,即每片RAM的地址区并不是唯一的。因为4-16译码器的Y0=1可能出现的机会很多,实际上,只要A14A13A12A11A10≠00000时,都可以使Y0=1。所以这个方案并不能用。

若要把存贮容量扩展到64kB,则除了增加1kB RAM芯片的数量外,还要通过全译码方法产生64个片选信号。由于已经有1片4-16译码器和1片2-4译码器,所以只需要再增加3片4-16译码器就可以实现:即用2-4译码器的4个输出控制4片4-16译码器的4个使能端,就可以在4片4-16译码器的输出端,获得64个片选信号。 2.11某系统的存储器中配备有两种芯片:容量为2K×8位的ROM和容量为1K×8位的RAM。它采用74LS138译码器来产生片选信号:Y0、Y1和Y2直接接到三片ROM(#1、#2和#3);Y4和Y5则再通过一组门电路产生4个片选信号接到4片RAM(#4、#5、#6和#7),连接的简图如图2.20所示。试确定每一片存储器的寻址范围。各存储器芯片的片选信号都是低电平有效。

图2.20

解:要74LS138译码器正常工作,则有A14?0,A15?1。

若要选中ROM #1,则必须Y0输出为低电平,而其它输出为高电平,Y0?0对应于

A11?0,A12?0,A13?0;

同理,若要选中ROM #2,则Y1?0,而其它输出为高电平,Y1?0对应于

A11?1,A12?0,A13?0;

Y2?0对应于A11?0,A12?1,A13?0。 若要选中ROM #3,则Y2?0,而其它输出为高电平,

若要选中RAM #4,必须Y4输出为低电平的同时A10?0,Y4?0对应于

A11?0,A12?0,A1?1 3;

参考.资料

.. .. .. ..

同理,若要选中RAM #5,必须Y4输出为低电平的同时A10?1,Y4?0对应于

A11?0,A12?0,A13?1;

若要选中RAM #6,必须Y5输出为低电平的同时A10?0,Y5?0对应于

A11?1,A12?0,A13?1;

Y5?0对应于A11?1,A12?0,A13?1;若要选中RAM #7,必须Y5输出为低电平的同时A10?1,

而每一个存储器的最小地址为:A9A8A7A6A5A4A3A2A1A0~000000000 最大地址为:A9A8A7A6A5A4A3A2A1A0~111111111。 将以上分析结果列于下表: ROM #1 ROM #2 ROM #3 RAM #4 RAM #5 RAM #6 RAM #7 基本地址 8000H 87FFH 8800H 8FFFH 9000H 97FFH A000H A3FFH A400H A7FFH A800H ABFFH AC00H AFFFH A15 A14 A13 A12 A11 A10 A9 A8 A7 A6 A5 A4 A3 A2 A1 A0 1 1 1 1 1 1 1 1 1 1 1 1 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 1 1 1 1 1 1 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 1 1 1 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 0 1 3.1 8051单片机有多少个特殊功能寄存器?它们可以分为几组?各完成什么主要功能? 解:8051单片机内部有21个特殊功能寄存器,它们可以分成6组:用于CPU控制和运算的有6个,即ACC,B,PSW,SP和DPTR(16位寄存器,算2个8位寄存器);有4个用作并行接口,即P0,P1,P2和P3;有2个用于中断控制,即IE和IP;有6个用于定时/计数器,它们是TMOD,TCON及两个16位寄存器T0和T1;还有3个寄存器用于串行口,即SCON,SBUF和PCON。当然其中有些寄存器的功能不只是一种,也可以有另外的分组方法。如电源控制寄存器PCON除了用于串行口通信外,还可用于供电方式的控制。

3.2 决定程序执行顺序的寄存器是哪个?它是几位寄存器?它是不是特殊功能寄存器?

解:决定程序执行顺序的寄存器是程序计数器PC。它是一个16位寄存器,但它不属于特殊功能寄存器。

3.3 DPTR是什么寄存器?它的作用是什么?它是由哪几个寄存器组成?

参考.资料

.. .. .. ..

解:DPTR是数据存储器指针。因为在MCS-51系列单片机中,指令存储器和数据存储器是完全分开的,因此,当向数据存储器读写数据时,就需要有一个寄存器来存放数据存储器的地址,这个寄存器就是数据指针DPTR。它是一个16位寄存器,由DPH和DPL两个寄存器组成。可以通过指令直接把16位地址送给DPTR,也可以把高8位地址送给DPH,把低8位地址送到DPL。

3.4 MCS-51单片机引脚中有多少I/O线?它们和单片机对外的地址总线和数据总线有什么关系?地址总线和数据总线各是几位?

解:MCS-51单片机芯片的引脚中有32条I/O线,因为有4个8位并行口,共32条。51系列单片机没有独立的数据总线和地址总线,而是和一部分I/O线复用。具体来说,P0口的8条分时用作地址总线低8位和8位数据总线,而P2口8条线用作地址总线高8位。所以是16位地址总线和8位数据总线。

3.5 什么叫堆栈?堆栈指示器SP的作用是什么?8051单片机堆栈的容量不能超过多少字节?

解:堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。修改SP值可以使堆栈设置在内部RAM的其它部分。在堆栈启用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。8051单片机内部用作数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。堆栈可以从08H开始设置直到7FH,共120个字节。但这只是最大可能的容量。一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。所以,8051的堆栈区是比较小的,使用时要注意到这个限制。 3.6 MCS-51单片机由哪几部分组成?

解:MCS-51单片机是个完整的单片微型计算机。具体包括CPU、存贮器和接口部分。存贮器的配置和芯片的型号有关,有三种情况,即片内无ROM,片内有掩模型ROM以及片内有EPROM。而随即存贮器RAM则每一种芯片都有。接口部分包括4个8位I/O口,两个16位定时/计数器和一个主要用于异步通信的串行接口。此外,它们还都内含时钟产生电路。 3.7 8051单片机的内部数据存储器可以分为几个不同区域?各有什么特点?

解:8051单片机内部数据存储器的容量为256个字节(地址为00H-FFH)。它可以分为两大部分,各占128个字节。前128个字节为读写数据区,地址为00H-7FH。后128个字节为特殊功能寄存器区,21个特殊功能寄存器分散地分布在这个区域,各有自己特定的地址。这个区域中,没有被特殊功能寄存器占用的单元也不能当作一般的RAM单元用 00H-7FH的RAM单元,都可按它们的直接地址来读写数据。而其中的前32个单元,即00H-1FH单元又称为工作寄存器区,安排了4组工作寄存器,每组8个,都用R0-R7来表示,并通过PSW寄存器中RS1和RS0来选组。通过工作寄存器R0-R7来对这部分数据单元读写数据,不仅速度快而且指令字节数也少。另一个区域为位寻址区,占用20H-2FH共16个单元,这16个单元的每一位都可以独立进行操作,共有128个可独立操作的位。而30H-7FH这80个单元则只能按它们的直接地址来操作。

3.8 MCS-51单片机寻址范围是多少?8051单片机可以配置的存储器最大容量是多少?而用户可以使用最大容量有是多少?

解:MCS-51单片机的指令存储器寻址范围为64KB,数据存贮器也有64KB寻址范围,地址都是从0000H-FFFFH,共有2×64KB的寻址范围。8051可以配置的外部存贮器就是2×64KB容量。但8051片内还配有存贮器,包括4KB容量的只读存贮器和256个字节的数据存贮器,总共容量为132.25KB。但用户可以使用的容量只有2×64KB再加上256个字节的数据存贮器。

参考.资料