单片机课后习题答案

.. .. .. ..

3.9 8051单片机对外有几条专用控制线?其功能是什么?

解:一般的说法是8051单片机有4条专用控制线。它们是复位信号线RST,高电位有效,当有复位信号从此线输入时,使单片机复位。访问外部存储器控制信号EA,低电平有效,当此控制线为低电平时,单片机全部使用外部指令存储器,而当此控制线为高电平时,先使用片内的4KB指令存贮器(0000H-FFFFH),在4KB范围之外,才使用指令存储器(地址为1000H-FFFFH)。另有两条输出控制:外部程序存贮器的读选通信号PSEN和外部地址锁存器允许信号ALE。前者是低电平有效,在读外部程序存贮器时使用。后者是高电平有效,在锁存P0口输出的低8位地址时使用。

3.10 什么叫指令周期?什么叫机器周期?MCS-51的一个机器周期包括多少时钟周期? 解:完成一条指令的执行所需的时间叫做指令周期。对不同的指令,指令周期的长短是不一定相同的。机器周期则是指计算机完成某种基本操作所需的时间,一个指令周期由一个或几个机器周期组成,一个机器周期则包括若干个时钟周期。MCS-51单片机的一个机器周期包括12个时钟周期。但对有些微处理器来说,不同的机器周期所包含的时钟周期可能是不相同的。

3.11 为什么要了解CPU的时序?

解:了解CPU的时序就是了解在执行不同类型指令时CPU发出的控制信号有什么不用。了解CPU时序至少有两个目的,其一是掌握不同的指令或操作使用不同的控制信号后,便于CPU对外部设备的连接而不至于发生错误。其二是知道不同指令需要不同的机器周期后,可以选用功能相同而机器周期较少的指令,以减少程序的执行时间。当然,也可以有一些其他的作用。

3.12 在读外部程序存储器时,P0口上一个指令周期中出现的数据序列是什么?在读外部数据存储器时,P0口上出现的数据序列又是什么?

解:读外部程序存储器(ROM)时,有两种情况:一种是单纯地取指令,这时P0口上先送出指令所在地址低8位,然后从ROM中取回指令码。按照指令字节数的不同,这个数据序列可能重复若干次。另一种情况,则是执行从外部ROM中读取固有数据的指令,这时,P0口上先送出地址低8位,再从ROM中取回指令码,然后开始执行指令,接着从P0口上送出ROM数据单元地址低8位,再读回ROM中的数据。而再读外部数据存贮器(RAM)时,P0口上先送出指令地址低8位,然后读回指令码,再送出数据存贮单元地址低8位,再读回数据单元的内容。

3.13 为什么外扩存储器时,P0口要外接锁存器,而P2口却不接?

解:这是因为在读写外部存贮器时,P0口上先送出低8位地址只是维持很短的时间,然后P0口就要当作数据总线用。为了使对外在整个读写外部存贮器期间,都存在有效的低8位地址信号,P0口就要外接一个地址锁存器,再从这个存贮器对外送出低8位地址。而P2口只用作高8位地址线,并在整个读写期间不变,所以不必外接地址锁存器。

3.14 在使用外部程序存储器时,MCS-51还有多少条I/O线可以用?在使用外部数据存储器时,还剩下多少条I/O线可用?

解:在使用外部程序存储器时,原则上说,P0口和P2口要用作数据总线和地址总线,所以只有P1口和P3口可用作I/O口,共16条I/O线。在使用外部数据存贮器时,除了占用P0口和P2口之外。还需用WR和RD控制线,而这两条线就是P3口中的两条:P3.6和P3.7,所以这是只有14条I/O线可用了。当然,取决于所配置的外部程序存贮器的容量,P2口的

参考.资料

.. .. .. ..

8条线并不一定全部占用,有时还有几条没用,但即使如此,这几条线也不能再用作I/O线,而只能留作系统扩展时再用。

3.15 程序存储器和数据存储器的扩展有何相同点及不同点?试将8031芯片外接一片2716EPROM和一片2128RAM组成一个扩展后的系统,画出扩展后的连接图。EPROM的地址自己确定。RAM的地址为2000H~27FFH

解:两者的相同点是,都借用P0口和P2口作为数据总线和地址总线,也就是说,地址线和数据线的连接方法是相同的,地址范围都是在0000H-FFFFH之间。两者的不同点是,所用的读写选通信号不同,扩展程序存贮器时用控制线PSEN,而扩展数据存贮器时使用读写控制线RD和WR。当然每块芯片具体需要几条地址线是由芯片的容量来决定的,容量大的芯片需要借用P2的I/O线的数量多。而数据线则都是8条。

2716是2K×8的EPROM,2128是2K×8的RAM,两者都只需11条地址线。由于题目中没有规定地址范围,故可按最简单的方式来连接,即只用PSEN来控制EPROM的读出,用

RD和WR控制RAM的读写,两块芯片的片选都固定接地,连接图如图1-1所示。这种连接

方式可以省去地址译码器。但它有一个缺点,那就是系统的扩充能力很差,因此,在实用时还是考虑使用译码器好。

3.16 8051芯片需要外扩4KB程序存储器,要求地址范围为1000H-1FFFH,以便和内部4KB程序存贮器地址相衔接。所用芯片除了地址线和数据线外,还有一个片选控制端CS。画出扩展系统的连接图。?

解:由于题目没有规定芯片的容量,为简单起见,设所用芯片容量为4KB的EPROM。芯片本身所需要地址线为12条,除了P0口8条外,还占用P2.0、P2.1、P2.2和P2.3。P2口的高4位经过或门产生片选信号,连接图如图1-2所示,此时高4位只有为0001时才选中此芯片。

参考.资料

.. .. .. ..

3.17 在图3.13中,若因某种原因,将P2.2、P2.1、P2.0分别误接为P2.5、P2.4、P2.3,问这时图中所接的存贮器的寻址范围是如何分布的?

解:误接后,相当于存贮器的地址线A10、A9、A8分别与P2.5、P2.4、P2.3相连。由此可求出地址区:

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7-P0.0 地址区 × × 0 0 0 × × × 0……0 0000H × × 0 0 0 × × × 1……1 00FFH × × 0 0 1 × × × 0……0 0800H × × 0 0 1 × × × 1……1 08FFH × × 0 1 0 × × × 0……0 1000H × × 0 1 0 × × × 1……1 10FFH × × 0 1 1 × × × 0……0 1800H × × 0 1 1 × × × 1……1 18FFH × × 1 0 0 × × × 0……0 2800H × × 1 0 0 × × × 1……1 28FFH × × 1 1 0 × × × 0……0 3000H × × 1 1 0 × × × 1……1 30FFH × × 1 1 1 × × × 0……0 3800H × × 1 1 1 × × × 1……1 38FFH

所以存贮器的寻址范围分别为8个不连续的区域,每块地址区有256个字节。这在实际使用时当然很不方便,所以要注意地址线不要接错。

参考.资料

.. .. .. ..

3.18 将图改用译码器74LS138来构成全译码方式的地址选择方式,保持ROM的地址仍然是0000H~0FFFH

3.19 这样的安排是否有问题?如果使系统能正常工作,应该如何重新分配各芯片的地址?如何实现?假定系统

3.20 8031用一片64KB的RAM作为外部的ROM和外部的RAM。请画出相应的接口电路。假定ROM地址和RAM地址各为32KB

第4章

4.1 若要完成以下的数据传送,应如何用MCS-51的指令来实现? (1).R1内容传送到R0。 解:MOV A,R1

MOV R0,A (2).外部RAM 20H单元内容送R0。 解:MOV R1,#20H

MOVX A,@R1 MOV R0,A (3).外部RAM 20H单元内容送内部RAM 20H单元。 解:MOV R0,#20H

MOVX A,@R0 MOV 20H,A (4).外部RAM 1000H单元内容送内部RAM 20H单元。 解:MOV DPTR,#1000H

MOVX A,@DPTR MOV 20H,A (5).ROM 2000H单元内容送R0。 解:MOV A,#00H

MOV DPTR,#2000H MOVC A,@A+DPTR MOV R0,A (6).ROM 2000H单元内容送内部RAM 20H单元。 解:MOV A,#00H

MOV DPTR,#2000H MOVC A,@A+DPTR MOV 20H,A (7).ROM 2000H单元内容送外部RAM 20H单元。 解:MOV A,#00H

MOV R0,#20H

MOV DPTR,#2000H MOVC A, @A+DPTR MOVX @R0,A

4.2 已知A=7AH,R0=30H,(30H)=A5H,PSW=80H,问执行以下各指令的结果(每条指令都以题中规定的数据参加操作)。 (1). XCH A,R0 A= 30H R0= 7AH (2). XCH A,30H A= A5H (3). XCH A,@R0 A= A5H

参考.资料

联系客服:779662525#qq.com(#替换为@)