单片机课后习题答案.docx
《单片机课后习题答案.docx》由会员分享,可在线阅读,更多相关《单片机课后习题答案.docx(21页珍藏版)》请在冰豆网上搜索。
![单片机课后习题答案.docx](https://file1.bdocx.com/fileroot1/2023-1/31/b033d709-b831-41f9-8020-d3fbb0f51587/b033d709-b831-41f9-8020-d3fbb0f515871.gif)
单片机课后习题答案
1.1计算机经过了哪些主要发展阶段
解:
单片机的发展大致经历了四个阶段:
第一阶段(1970—1974年),为4位单片机阶段;
第二阶段(1974—1978年),为低中档8位单片机阶段;
第三阶段(1978—1983年),为高档8位单片机阶段;
第四阶段(1983年至今),为8位单片机巩固发展阶段及16位单片机、32位单片机推出阶段。
1.2写出下列机器数的真值:
(1)01101110
(2)
(3)01011001(4)
解:
(1)01101110的真值=+110
(2)的真值=+141或-115
(3)01011001的真值=+89
(4)的真值=+206或-50
说明:
机器数是指计算机中使用的二进制数,机器数的值称为真值。
机器数可表示为无符号数也可表示为带符号数,其中计算机中的带符号数一般为补码形式。
若为无符号数。
则其真值为+141;若为带符号数,由于最高位(符号位)为1.所以为负数(补码形式),则其真值为-115。
1.4写出下列二进制数的原码、反码和补码(设字长为8位)。
(1)010111
(2)101011
(3)-101000(4)-111111
解:
(1)[x]原=00010111[x]反=00010111[x]补=00010111
(2)[x]原=00101011[x]反=00101011[x]补=00101011
(3)[x]原=[x]反=[x]补=
(4)[x]原=[x]反=[x]补=
已知X=,Y=,求X和Y的逻辑与、逻辑或和逻辑异或。
解:
1.6已知X和Y,试计算下列各题的
和
(设字长为8位)。
(1)X=1011Y=0011
(2)X=1011Y=0101
(3)X=1001Y=-0100
(4)X=-1000Y=0101
(5)X=-1100Y=-0100
解:
(1)X补码=00001011Y补码=00000011
[X+Y]补=00001110[X-Y]补=00001000
(2)X补码=00001011Y补码=00000101
[X+Y]补=00010000[X-Y]补=00000110
(3)X补码=00001001Y补码=
[X+Y]补=00010000[X-Y]补=00000110
1.7用补码来完成下列运算,并判断有无溢出产生(设字长为8位)
(1)85+60
(2)-85+60
(3)85-60(4)-85-60
解:
(1)[x]补+[y]补=01010101+00111100==-111,有溢出
(2)[x]补+[y]补=+00111100==-25,无溢出
(3)[x]补+[y]补=01010101+=00011001=25,无溢出
(4)[x]补+[y]补=+=01101111=111,有溢出
计算机由哪几部分组成的
解:
计算机由微处理器、存储器和I/O接口电路构成。
各部分通过地址总线(AB)、数据总线(DB)和控制总线(CB)相连。
什么叫微处理器什么叫微型计算机什么叫微型计算机系统
解:
把CPU和一组称为寄存器(Registers)的特殊存储器集成在一片大规模集成电路或超大规模集成电路封装之中,这个器件才被称为微处理器。
以微处理器为核心,配上由大规模集成电路制作的只读存储器(ROM)、读写存储器(RAM)、输入/输出、接口电路及系统总线等所组成的计算机,称为微型计算机。
微型计算机系统是微型计算机配置相应的系统软件,应用软件及外部设备等。
什么叫单片微型计算机和一般微型计算机相比,单片机有何特点
解:
单片微型计算机就是在一块硅片上集成了CPU、RAM、ROM、定时器/计数器和多种I/O口(如并行、串行及A/D变换器等)的一个完整的数字处理系统。
单片机主要特点有:
品种多样,型号繁多;存储容量大;频率高,速度快;控制功能强,集成度高;功耗低;配套应用软件多。
说明静态RAM和动态RAM的主要区别,使用时应如何选用。
解:
静态RAM,(SRAM)采用触发器电路构成一个二进制信息的存储单元,存取速度快,集成度低。
动态RAM,(DRAM)集成度较高,对于同样的引脚数其单片容量一般比SRAM高(集成度高),DRAM的存储单元采用电容存储信息,由于电容存在江山漏电,所以需要进行定期刷新,存取速度较SROM慢。
现有1K×8位的RAM芯片若干片。
若用线选法组成存储器,有效的寻址范围最大时多少KB若用3-8译码器来产生片选信号,则有效的寻址范围最大又是多少若要将寻址范围扩展到64kB,应选用什么样的译码器来产生片选信号
解:
1k×8位的RAM芯片由10条地址线。
8031的地址线为16条,所以还有6条地址线可以用来做片选信号。
当采用线选法时,每条高位地址线只能选中一片芯片,所以有效地址范围最大可为6kB。
当用3-8译码器来产生片选信号时,一片3-8译码器可以产生8个片选信号,有效寻址范围可扩大为8kB。
若使用多片3-8译码器,则寻址范围还可以扩大。
若要将寻址范围扩展到64kB,必须用6位线进行全译码以产生64个片选信号。
由于现在尚无现成的6-64译码器可用,故可选用多个3-8译码器,通过两级译码来产生64个片选信号,共需9个3-8译码器。
或者用1个2-4译码器和4个4-16译码器通过两级译码,也可以得到所需的64个片选信号。
什么是地址重叠区,它对存储器扩展有何影响;若有1k×8位RAM并采用74LS138译码器来产生片选信号,图中的两种接法的寻址范围各是多少KB地址重叠区有何差别图中G1、G2A和G2B为译码器的使能端。
图题附图
解:
所谓地址重叠,其表现就是若干个地址都可选中同一存贮器芯片的同一单元,即一个单元有多个地址。
地址重叠区即是指有哪些地址区可以选中同一芯片的存贮单元。
由于地址重叠区的存在,影响了地址区的有效使用,限制了存贮器的扩展。
图中的两种接法,都能产生8个片选信号,选用1kBRAM时,寻址范围都是8kB。
但是左图有地址重叠区。
高3位地址A13、A14和A15不论为何值,只要低13位地址相同,都能选中同一芯片的同一单元。
故共有8个地址区。
对于Y0输出选中的芯片地址为:
0000H-03FFH,2000H-23FFH,4000H-43FFH,6000H-63FFH,8000H-03FFH,8000H-03FFH,A000H-A3FFH,C000H-C3FFH,E000H-E3FFH。
而右图的接法没有地址重叠区。
8片RAM所占用的地址为2000H-23FFH,其它的地址都选不中这些RAM的存贮单元。
从系统扩展的角度来看,图左图可以接8片1kBRAM,而每片RMA又有8kB地址重叠区,所以64kB地址区全部用完。
这个系统只能接8片1kBRAM,不能再扩展。
而图右图中由于不存在地址重叠区,如果再增加译码器和控制门,就可以获得更多的片选信号。
只要连接得当,系统最大可以扩展64kB存储器。
所以地址重叠区的存在将限制存储器的扩展。
某系统需要配置一个4k×8位的静态外部RAM。
试问:
用几片2114(1k×4位)组成该存储器用线选法如何构成这个存储器试画出连接简图,并注明各芯片所占用的存贮空间。
解:
需用(4k×8)/(1k×4)=8,即8片2114来组成。
系统连接如图所示。
8片2114芯片分为四组,每组有相同的线选信号,即有相同的地址,存储空间的分布可决定如下:
A15 A14 A13 A12 A11 A10 A9-A0 地址区
Ⅰ、Ⅱ片 × × 1 1 1 0 0……0 3800H
× × 1 1 1 0 1……13BFFH
Ⅲ、Ⅳ片 × × 1 1 0 1 0……0 3400H
× × 1 1 0 1 1……137FFH
Ⅴ、Ⅵ片× × 1 0 1 1 0……0 2C00H
× × 1 0 1 1 1……1 2FFFH
Ⅶ、Ⅷ片 × × 0 1 1 1 0……0 1C00H
×× 0 1 1 1 1……11FFFH
由于A15和A14这两条地址线没有使用,所以在如图的连接方式下,每组存贮器都有4kB地址重叠区。
但如果把A15和A14也用作线选信号,则这个系统还可以再扩充2kB容量的存储器(设仍使用2114芯片)。
某系统的存储器配置如图所示。
所用芯片为1k×8位静态RAM,试确定每块芯片的地址范围。
图中C为译码器高位输入,A为低位输入。
Y0对应于输入组合000,Y7对应于输入组合111。
每片RAM地址重叠区有多大
图题附图
解:
各芯片的地址区可确定如下:
A15 A14 A13 A12 A11 A10 A9-A0 地址区
Ⅰ、片 × × 0 0 0 × 0……0 0000H
× × 0 0 0 × 1……1 03FFH
Ⅱ、片 × × 0 0 1× 0……0 0800H
× × 0 0 1× 1……1 0BFFH
Ⅲ、片 × × 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地址重叠区。
用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,则除了增加1kBRAM芯片的数量外,还要通过全译码方法产生64个片选信号。
由于已经有1片4-16译码器和1片2-4译码器,所以只需要再增加3片4-16译码器就可以实现:
即用2-4译码器的4个输出控制4片4-16译码器的4个使能端,就可以在4片4-16译码器的输出端,获得64个片选信号。
某系统的存储器中配备有两种芯片:
容量为2K×8位的ROM和容量为1K×8位的RAM。
它采用74LS138译码器来产生片选信号:
Y0、Y1和Y2直接接到三片ROM(#1、#2和#3);Y4和Y5则再通过一组门电路产生4个片选信号接到4片RAM(#4、#5、#6和#7),连接的简图如图所示。
试确定每一片存储器的寻址范围。
各存储器芯片的片选信号都是低电平有效。
图
解:
要74LS138译码器正常工作,则有
。
若要选中ROM#1,则必须
输出为低电平,而其它输出为高电平,
对应于
;
同理,若要选中ROM#2,则
,而其它输出为高电平,
对应于
;
若要选中ROM#3,则
,而其它输出为高电平,
对应于
。
若要选中RAM#4,必须
输出为低电平的同时
,
对应于
;
同理,若要选中RAM#5,必须
输出为低电平的同时
,
对应于
;
若要选中RAM#6,必须
输出为低电平的同时
,
对应于
;
若要选中RAM#7,必须
输出为低电平的同时
,
对应于
;
而每一个存储器的最小地址为:
最大地址为:
。
将以上分析结果列于下表:
基本地址
ROM#1
1
0
0
0
0
0
0
0
0
0
0
0
0
0
0
0
8000H
1
0
0
0
0
1
1
1
1
1
1
1
1
1
1
1
87FFH
ROM#2
1
0
0
0
1
0
0
0
0
0
0
0
0
0
0
0
8800H
1
0
0
0
1
1
1
1
1
1
1
1
1
1
1
1
8FFFH
ROM#3
1
0
0
1
0
0
0
0
0
0
0
0
0
0
0
0
9000H
1
0
0
1
0
1
1
1
1
1
1
1
1
1
1
1
97FFH
RAM#4
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
A000H
1
0
1
0
0
1
1
1
1
1
1
1
1
1
1
1
A3FFH
RAM#5
1
0
1
0
0
0
0
0
0
0
0
0
0
0
0
0
A400H
1
0
1
0
0
1
1
1
1
1
1
1
1
1
1
1
A7FFH
RAM#6
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
A800H
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
ABFFH
RAM#7
1
0
1
0
1
0
0
0
0
0
0
0
0
0
0
0
AC00H
1
0
1
0
1
1
1
1
1
1
1
1
1
1
1
1
AFFFH
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除了用于串行口通信外,还可用于供电方式的控制。
决定程序执行顺序的寄存器是哪个它是几位寄存器它是不是特殊功能寄存器
解:
决定程序执行顺序的寄存器是程序计数器PC。
它是一个16位寄存器,但它不属于特殊功能寄存器。
DPTR是什么寄存器它的作用是什么它是由哪几个寄存器组成
解:
DPTR是数据存储器指针。
因为在MCS-51系列单片机中,指令存储器和数据存储器是完全分开的,因此,当向数据存储器读写数据时,就需要有一个寄存器来存放数据存储器的地址,这个寄存器就是数据指针DPTR。
它是一个16位寄存器,由DPH和DPL两个寄存器组成。
可以通过指令直接把16位地址送给DPTR,也可以把高8位地址送给DPH,把低8位地址送到DPL。
MCS-51单片机引脚中有多少I/O线它们和单片机对外的地址总线和数据总线有什么关系地址总线和数据总线各是几位
解:
MCS-51单片机芯片的引脚中有32条I/O线,因为有4个8位并行口,共32条。
51系列单片机没有独立的数据总线和地址总线,而是和一部分I/O线复用。
具体来说,P0口的8条分时用作地址总线低8位和8位数据总线,而P2口8条线用作地址总线高8位。
所以是16位地址总线和8位数据总线。
什么叫堆栈堆栈指示器SP的作用是什么8051单片机堆栈的容量不能超过多少字节
解:
堆栈是数据寄存器的一部分,这一部分数据的存取是按照先入后出、后入先出的原则进行的。
堆栈指针SP在启用堆栈之前是用来决定堆栈的位置。
如在8051芯片复位后,SP的值为07H,则决定了堆栈从08H开始设置。
修改SP值可以使堆栈设置在内部RAM的其它部分。
在堆栈启用之后,SP指向堆栈顶部,即由SP来决定数据读出和存入堆栈的地址。
8051单片机内部用作数据区的RAM的容量为128个字节,前8个字节要用来作为工作寄存器R0-R7。
堆栈可以从08H开始设置直到7FH,共120个字节。
但这只是最大可能的容量。
一般情况下,内部RAM还要分出一部分作一般的数据区,或者还要用其中的位寻址区来用于位操作,等等。
所以,8051的堆栈区是比较小的,使用时要注意到这个限制。
MCS-51单片机由哪几部分组成
解:
MCS-51单片机是个完整的单片微型计算机。
具体包括CPU、存贮器和接口部分。
存贮器的配置和芯片的型号有关,有三种情况,即片内无ROM,片内有掩模型ROM以及片内有EPROM。
而随即存贮器RAM则每一种芯片都有。
接口部分包括4个8位I/O口,两个16位定时/计数器和一个主要用于异步通信的串行接口。
此外,它们还都内含时钟产生电路。
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个单元则只能按它们的直接地址来操作。
MCS-51单片机寻址范围是多少8051单片机可以配置的存储器最大容量是多少而用户可以使用最大容量有是多少
解:
MCS-51单片机的指令存储器寻址范围为64KB,数据存贮器也有64KB寻址范围,地址都是从0000H-FFFFH,共有2×64KB的寻址范围。
8051可以配置的外部存贮器就是2×64KB容量。
但8051片内还配有存贮器,包括4KB容量的只读存贮器和256个字节的数据存贮器,总共容量为。
但用户可以使用的容量只有2×64KB再加上256个字节的数据存贮器。
8051单片机对外有几条专用控制线其功能是什么
解:
一般的说法是8051单片机有4条专用控制线。
它们是复位信号线RST,高电位有效,当有复位信号从此线输入时,使单片机复位。
访问外部存储器控制信号
,低电平有效,当此控制线为低电平时,单片机全部使用外部指令存储器,而当此控制线为高电平时,先使用片内的4KB指令存贮器(0000H-FFFFH),在4KB范围之外,才使用指令存储器(地址为1000H-FFFFH)。
另有两条输出控制:
外部程序存贮器的读选通信号
和外部地址锁存器允许信号ALE。
前者是低电平有效,在读外部程序存贮器时使用。
后者是高电平有效,在锁存P0口输出的低8位地址时使用。
什么叫指令周期什么叫机器周期MCS-51的一个机器周期包括多少时钟周期
解:
完成一条指令的执行所需的时间叫做指令周期。
对不同的指令,指令周期的长短是不一定相同的。
机器周期则是指计算机完成某种基本操作所需的时间,一个指令周期由一个或几个机器周期组成,一个机器周期则包括若干个时钟周期。
MCS-51单片机的一个机器周期包括12个时钟周期。
但对有些微处理器来说,不同的机器周期所包含的时钟周期可能是不相同的。
为什么要了解CPU的时序
解:
了解CPU的时序就是了解在执行不同类型指令时CPU发出的控制信号有什么不用。
了解CPU时序至少有两个目的,其一是掌握不同的指令或操作使用不同的控制信号后,便于CPU对外部设备的连接而不至于发生错误。
其二是知道不同指令需要不同的机器周期后,可以选用功能相同而机器周期较少的指令,以减少程序的执行时间。
当然,也可以有一些其他的作用。
在读外部程序存储器时,P0口上一个指令周期中出现的数据序列是什么在读外部数据存储器时,P0口上出现的数据序列又是什么
解:
读外部程序存储器(ROM)时,有两种情况:
一种是单纯地取指令,这时P0口上先送出指令所在地址低8位,然后从ROM中取回指令码。
按照指令字节数的不同,这个数据序列可能重复若干次。
另一种情况,则是执行从外部ROM中读取固有数据的指令,这时,P0口上先送出地址低8位,再从ROM中取回指令码,然后开始执行指令,接着从P0口上送出ROM数据单元地址低8位,再读回ROM中的数据。
而再读外部数据存贮器(RAM)时,P0口上先送出指令地址低8位,然后读回指令码,再送出数据存贮单元地址低8位,再读回数据单元的内容。
为什么外扩存储器时,P0口要外接锁存器,而P2口却不接
解:
这是因为在读写外部存贮器时,P0口上先送出低8位地址只是维持很短的时间,然后P0口就要当作数据总线用。
为了使对外在整个读写外部存贮器期间,都存在有效的低8位地址信号,P0口就要外接一个地址锁存器,再从这个存贮器对外送出低8位地址。
而P2口只用作高8位地址线,并在整个读写期间不变,所以不必外接地址锁存器。
在使用外部程序存储器时,MCS-51还有多少条I/O线可以用在使用外部数据存储器时,还剩下多少条I/O线可用
解:
在使用外部程序存储器时,原则上说,P0口和P2口要用作数据总线和地址总线,所以只有P1口和P3口可用作I/O口,共16条I/O线。
在使用外部数据存贮器时,除了占用P0口和P2口之外。
还需用
和
控制线,而这两条线就是P3口中的两条:
和,所以这是只有14条I/O线可用了。
当然,取决于所配置的外部程序存贮器的容量,P2口的8条线并不一定全部占用,有时还有几条没用,但即使如此,这几条线也不能再用作I/O线,而只能留作系统扩展时再用。
程序存储器和数据存储器的扩展有何相同点及不同点试将8031芯片外接一片