课后习题参考答案李绍静.docx
《课后习题参考答案李绍静.docx》由会员分享,可在线阅读,更多相关《课后习题参考答案李绍静.docx(42页珍藏版)》请在冰点文库上搜索。
课后习题参考答案李绍静
第一章思考题答案:
【1-1】解答:
是。
补码的表达范围是:
-128~+127。
【1-2】解答:
(1)8位二进制数可以表达的无符号数的范围是00H-0FFH;
(2)12位二进制数可以表达的无符号数的范围是0000H-0FFFH;
(3)16位二进制数可以表达的无符号数的范围是0000H-FFFFH;
(4)数值范围从0000H-7FFFH共需要15位二进制数表达。
【1-3】解答:
B
【1-4】解答:
*.ASM;*.C;*.HEX或*.BIN。
【1-5】解答:
微控制器和嵌入式控制器。
【1-6】解答:
CPU、ROM、RAM、总线。
【1-7】解答:
(1)MCS-51系列单片机的基本型产品是8031/8051/8751(对应的低功耗是80C31/80C51/87C51)。
(2)8031内部还不能集成ROM,需要外部扩展;8051比8031内部集成了4KB的ROM但其ROM一次写入程序,不可反复修改擦写;8751其内部集成了4KB的EPROM程序可以被反复修改擦写。
【1-8】解答:
不是。
51系列包含了所有公司生产的以MCS-51系列8051内核为基础的所有单片机。
但MCS仅指INTEL公司出品的51单片机芯片。
【1-9】解答:
B。
【1-10】解答:
(1)8051是INTEL公司生产的MCS-51系列中典型的一款芯片。
(2)MCS-51是INTEL公司生产的具有8051内核技术的一系列产品的总称。
(3)8051系列泛指以INTEL公司51内核技术为基础的所有非低功耗芯片。
(4)80C51是采用CMOS工艺,与8051系列相对应的低功耗芯片。
(5)51系列是指包括所有公司生产的以INTEL8051内核为基础的单片机。
【1-11】解答:
51系列、AVR、PIC。
【1-12】解答:
51是哈佛结构;通用计算机是冯·诺依曼结构;PIC、AVR是哈佛结构。
【1-13】解答:
单片机属于TTL电平。
74LS×××等数字芯片。
PC机的9针串口属于RS-232电平。
TTL、CMOS属于正逻辑,RS-232是负逻辑。
【1-14】解答:
错误。
51单片机属于TTL电平,实际电压小于0.4V即认为是低电平,电压高于2.4V即认为是高电平(实际单片机工作在输入和输出状态高低电平范围略有差别)。
【1-15】解答:
错误。
PIC和AVR单片机的指令系统都属于精简指令集。
【1-16】解答:
是美国TI公司出品的MSP430系列。
【1-17】解答:
广义上讲,凡是系统中嵌入了“嵌入式微处理器”,如:
单片机、DSP、嵌入式微处理器,都称为“嵌入式系统”。
但还是有人仅把“嵌入”嵌入式微处理器的系统称为“嵌入式系统”。
目前人们所说的“嵌入式系统”多指后者。
【1-18】解答:
(1)嵌入式处理器家族分为如下四类:
单片机(嵌入式微控制器);嵌入式数字信号处理器(DigitalSignalProcessor,DSP);嵌入式微处理器(EmbeddedMicroprocessorUnit,EMPU)以及片上系统(SystemOnChip,SOC)。
(2)DSP主要应用在数字信号处理方面。
ARM主要应用于需要实时多任务处理的系统,如:
多媒体手机、数字电视和机顶盒等高端产品中。
【1-19】解答:
(1)单片机的开发过程包括硬件电路设计、程序编写(编辑)、编译、仿真调试、烧写(烧录、固化、下载)等过程。
(2)①程序的编辑是指利用C语言或汇编语言在个人电脑上完成程序的书写过程。
②编译是指将编程语言翻译成单片机能够识别的二(十六)进制代码的过程。
③烧写是指把编译好的二(十六)进制代码下载到单片机程序存储器ROM的过程。
④仿真调试包括软件仿真和硬件仿真,是指程序不可能一次编写成功,需要借助专业的软、硬件仿真调试工具,利用单步、断点、运行到光标处等功能实现对程序中各变量中间结果的监测。
【1-20】解答:
见图1.11~1.13。
【1-21】解答:
(1)仿真技术包括软件仿真和硬件仿真。
(2)错误。
仿真芯片相较专业的仿真器功能弱很多。
【1-22】解答:
(1)KeilC51是德国Keilsoftware公司开发的用于51系列单片机的C51语言开发软件。
具有Windows风格的可视化操作界面(见图1.5);支持汇编语言、C51语言以及混合编程等多种方式的单片机设计;能够完成51系列单片机以及和51系列兼容的绝大部分类型单片机的程序设计和仿真。
(2)KeilC51已被完全集成到一个功能强大的全新集成开发环境(IDE)μVision3中,该开发环境下集成了文件编辑处理、编译链接、项目(Project)管理、窗口、工具引用和仿真软件模拟器等多种功能,所有这些功能均可在KeilμVision3提供的开发环境中极为简便地进行操作。
【1-23】解答:
不具备。
【1-24】解答:
(1)单片机编程器是将汇编语言或C语言编写的程序编译成*.HEX文件进行下载时所需要的硬件装备。
(2)正确。
有部分芯片确实具有下载功能。
例如:
AT89S51/AT89S52。
【1-25】解答:
PROTEL是学习单片机还需要掌握一种原理图绘图软件;PROTEUS软件能仿真单片机及外围器件,Proteus是世界上著名的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。
【1-26】解答:
(1)串口调试助手可以实现的功能包括发送接受16进制数、字符串等,在单片机与PC机进行通信时会用到该类型小软件。
(2)单片机系统如果采用LED点阵显示器或LCD液晶显示器时,显示的字符必须要经过字模提取软件将待显示的字符。
第二章思考题答案:
【2-1】解答:
(1)80C51单片机由八个部分组成:
中央处理单元CPU(8位)、只读存储器ROM(4KB或8KB)、随机存取存储器RAM(256B)、特殊功能寄存器、并行接口、串行接口、定时/计数器、中断系统。
(2)只读存储器ROM用于存储应用程序和常数,随机存取存储器RAM用于存放程序运行中的工作变量数据。
【2-2】解答:
C。
【2-3】解答:
(1)错误
(2)正确(3)正确(4)正确
【2-4】解答:
(1)若80C51单片机振荡频率为12MHz时,则:
振荡周期=1/12MHz=(1/12)μs=0.0833μs=83.3ns
时钟周期=1/6μs=0.167μs
机器周期=1μs
若80C51单片机振荡频率为6MHz时,则:
振荡周期=1/6MHz=(1/6)μs=1.67μs=167ns
时钟周期=1/3μs=0.334μs
机器周期=2μs
(2)振荡周期是最小的定时单位,也称为晶振周期或节拍;一个时钟周期包含2个振荡周期,也称为状态周期;一个机器周期包含12个振荡周期;不同的指令一般其指令周期一般不同,可包含有1、2、4个机器周期。
【2-5】解答:
正确。
因为ROM是用来存放程序的,程序如果掉电丢失系统将会瘫痪,因此掉电存储是对ROM的根本要求。
【2-6】解答:
正确。
RAM中存放的是程序运行所产生的中间变量数据,因此速度快是它的根本要求。
掉电丢失后,不影响程序的重新启动。
【2-7】解答:
(1)两种时钟电路模式分别是内部时钟模式和外部时钟模式。
(2)只有一个单片机工作时,经常使用的一般是内部时钟模式。
(3)外部时钟模式。
其把外部已有的时钟信号引入单片机内,通常便于两个以上单片机工作的同步。
【2-8】解答:
(1)80C51单片机的
信号用来决定CPU是执行内部ROM还是外部ROM的程序。
当
端保持高电平时,CPU只访问内部程序存储器,但在PC(程序计数器)值超过0FFFH(51单片机基本型一般ROM为4KB)或1FFFH(51单片机增强型一般ROM为8KB)时,将自动转向访问外部存储器。
当
端保持低电平时,不管是否有内部程序存储器,只访问外部程序存储器。
(2)在使用8031时,由于8031没有内部ROM,所以
信号引脚始终保持低电平。
(3)通常对于拥有内部ROM的单片机,
信号接高电平。
【2-9】解答:
(1)80C51系列单片机的三种总线结构包括地址总线(AB)、数据总线(DB)和控制总线(CB)。
(2)其中用作地址总线的是P0、P2,由于地址总线宽度为16位,由P0口经地址锁存器提供低8位地址(A0-A7),P2口直接提供高8位地址(A8-A15);
(3)用作数据总线的是P0;
(4)用作控制总线的是P3口的第二功能状态和4根独立控制线
、ALE、
、RESET组成。
【2-10】解答:
(1)80C51单片机内部数据存储器128单元,分为工作寄存器区、位寻址区、用户RAM区三个区域。
(2)工作寄存器区:
占用地址00H-1FH,安排了4组工作寄存器,每组占用8个RAM字节,记为R0-R7;位寻址区:
占用地址20H-2FH,共16B,16*8=128位,每一位都有一个位地址,对应位地址00H-7FH,位地址区也可作为一般RAM使用;用户RAM区:
占用地址为30H-7FH。
是留给用户使用的一般RAM区域,主要用来存放随机数据和中间结果。
(3)00H~1FH。
【2-11】解答:
(1)特殊功能寄存器PSW的RS1、RS0决定当前工作寄存器组号。
(2)当RS1、RS0的取值都为00时,选中的是0组通用寄存器。
一般在单片机复位之后,特殊功能寄存器PSW的初值为00H,所以,如若选用0组通用寄存器,并不需要特别设置。
【2-12】解答:
80C51单片机内部RAM中可以位寻址的单元共16个字节单元,字节地址是20H-2FH,对应的位地址是00H-7FH。
【2-13】解答:
(1)字节地址00H和位地址00H虽然形式上一样,但是所占的位置不同,字节地址是00H的单元正好与0组通用寄存器组的R0位置重合。
位地址00H在内存中的具体位置是内部RAM20H字节的最低位。
(2)00H;88H。
【2-14】解答:
正确。
80C51单片机有两个区域可以位寻址:
一个是位寻址区20H~2FH单元的128位;另一个是字节地址能被8整除的特殊功能寄存器的相应位。
【2-15】解答:
错误。
可位寻址的特殊功能寄存器的最低位位地址与字节地址在形式上是相同的。
【2-16】解答:
(1)堆栈遵循的是“先进后出,后进先出”的存取原则。
(2)SP的名称是堆栈指针。
(3)在80C51单片机复位后,堆栈指针SP总是初始化到内部RAM地址07H。
(4)主程序的断点地址;PC。
【2-17】解答:
(1)程序状态字寄存器PSW是一个8位寄存器,存放程序、指令运行的状态信息。
(2)常用的状态标志位:
①CY:
进位、借位标志。
有进位、借位时由硬件置位CY=1,否则CY=0;
②AC:
半进、借位(辅助进、借位)标志;加减法时低4位向高4位进位或借位时,由硬件置位AC=1,否则AC=0,应用于十进制调整;
③F0:
用户标志位(软件位),由用户自己定义;
④RS1、RS0:
当前工作寄存器组选择位;
⑤P:
奇偶标志位。
ACC中结果有奇数个1时P=1,否则P=0。
⑥OV:
溢出标志位。
有溢出时OV=1,否则OV=0。
硬件置位/清零。
(3)P为0;00H;0组;04H。
【2-18】解答:
(1)错误
(2)错误(3)错误(4)正确
【2-19】解答:
80C51单片机外部扩展ROM或RAM时,需要ALE引脚与锁存器连接。
其与锁存器连接后可以实现P0口地址和数据的分时复用。
【2-20】解答:
AT89S51单片机的最小系统图
【2-21】解答:
正确。
80C51单片机的P0口作地址和数据总线时为真正的双向口,能正确的呈现高电平、低电平和高阻态。
当80C51单片机的P0口作普通I/O口时,其为准双向口且内部无上拉电阻。
因此为能正确输出高电平需要外接上拉电阻,当要正确的读入引脚状态时,还需要先执行MOVP0,#0FFH。
系统复位时P0口为高电平,复位后如未改变过端口引脚状态可以不需要先执行写“1”操作直接读入。
【2-22】解答:
(1)错误。
P0~P3四个口线作普通I/O口使用时虽然均为准双向口,无高阻态输入。
但是P0口内部还没有上拉电阻,无法输出高电平,因此还需要外部连接上拉电阻。
(2)正确。
(3)因为系统复位后,P0~P3口均为高电平。
【2-23】解答:
正确。
P0口与P1、P2、P3口相比,P0口的驱动能力较大(输出或灌入电流较大,灌入电流指流入单片机引脚的电流),而P1,P2,P3口的每一位的驱动能力(能够正常工作的最大电流),只有P0口的一半。
当P0口的某位为高电平时,只可提供几十到上百μA的电流,难以驱动外部设备;当P0口的某位为低电平,可提供几到十几mA的灌入电流,简称灌电流。
所以,任何一个并口连接外部设备时一般只能用低电平输出。
51单片机除对各引脚驱动能力有限制外,一个并口的8个引脚总的驱动能力并不是单根口线的8倍,也有一定的限制。
以器件AT89S52为例,每根口线最大可吸收10mA的(灌)电流,但P0口所有引脚的吸收电流的总和不能超过26mA,而P1,P2,和P3每个口吸收电流的总和限制在15mA,全部4个并行口所有口线的吸收电流总和限制在71mA。
【2-24】解答:
其四个口线的驱动能力不同,而P1,P2,P3口的每一位的驱动能力(能够正常工作的最大电流)只有P0口的一半。
51单片机除对各引脚驱动能力有限制外,一个并口的8个引脚总的驱动能力并不是单根口线的8倍,也有一定的限制。
以器件AT89S51为例,每根口线最大可吸收10mA的(灌)电流,但P0口所有引脚的吸收电流的总和不能超过26mA,而P1,P2,和P3每个口吸收电流的总和限制在15mA,全部4个并行口所有口线的吸收电流总和限制在71mA。
其每根口线的拉电流(从单片机引脚流向外部的电流)约为几十到几百微安。
当P0口的某位为高电平时,只可提供几十到上百μA的电流,难以驱动外部设备;当P0口的某位为低电平,可提供几到十几mA的灌入电流,简称灌电流。
所以,任何一个并口连接外部设备时一般只能用低电平输出。
【2-25】解答:
(1)80C51单片机有上电复位和按键复位。
(2)80C51进入复位状态后,除SP为07H,P0-P3为FFH,PC=0000H。
【2-26】解答:
单片机运行出错或进入死循环时,可按复位键重新运行。
【2-27】解答:
80C51单片机有2种低功耗方式:
空闲工作方式和掉电保护。
第三章思考题答案:
【3-1】解答:
(1)C语言那种语言的可读性和可移植性强,例如对于用C语言编制的51单片机程序,只需要稍作修改就可以移植到PIC类型的单片机上。
(2)汇编语言适用于对速度和时序敏感的场合。
(3)正确。
【3-2】解答:
(1)C语言与汇编语言经过编译后将是二进制的机器语言。
(2)正确。
【3-3】解答:
(1)一条完整的汇编语言指令包括标号、操作码、操作数和注释四部分。
(2)其中标号与操作码用冒号分隔,操作码和操作数之间用空格,多个操作数之间用逗号分隔,注释用冒号开头。
(3)四个部分中操作码是必须存在的,其他三部分在有的指令中可以不出现。
(4)标号是一种符号地址。
标号以字母开头,由1-8个字母或数字组成。
【3-4】解答:
80C51系列单片机提供了七种寻址方式:
立即寻址、直接寻址、寄存器寻址、寄存器间接寻址、变址寻址(基址寄存器+变址寄存器间接寻址)、相对寻址、位寻址。
【3-5】解答:
立即寻址寻址方式中的立即数是存放在ROM中。
【3-6】解答:
(1)正确
(2)正确(3)错误(4)错误
【3-7】解答:
直接寻址方式可访问以下存储空间:
①内部RAM低128个字节单元,指令中直接地址以单元地址的形式给出。
②特殊功能寄存器。
【3-8】解答:
寄存器寻址中规定的寄存器有:
①工作寄存器R0~R7。
②累加器A。
③双字节AB。
④数据指针DPTR。
【3-9】解答:
(1)能用于间接寻址的寄存器有R0,R1,DPTR,SP。
其中R0、R1必须是工作寄存器组中的寄存器。
(2)采用R0、R1作为间址寄存器,可寻址内部RAM的低128个单元和外部RAM低256个单元单元;采用16位的DPTR作为间址寄存器,可寻址外部RAM的整个64KB地址空间。
【3-10】解答:
地址。
【3-11】解答:
(1)80C51单片机变址寻址方式中是以DPTR或PC作基址寄存器,以累加器A作变址寄存器。
(2)是的。
@A+PC,@A+DPTR寻址所找到的操作数是在ROM中。
【3-12】解答:
正确。
80C51单片机凡是指令中带有rel相对偏移量的指令,其PC的改变都是相对的。
【3-13】解答:
若访问特殊功能寄存器,只可以采用直接寻址。
【3-14】解答:
若访问外部RAM单元,只可以使用寄存器间接寻址方式。
【3-15】解答:
若访问内部RAM单元,可使用直接寻址、寄存器寻址、寄存器间接寻址和位寻址。
【3-16】解答:
若访问内外程序存储器,可使用变址寻址方式。
【3-17】解答:
(1)还包含内部RAM的20H-2FH,共16个字节,16*8=128个位,每一位都有一个位地址,对应位地址00H-7FH。
(2)位地址是00H、08H、22H、7FH、D0H、E0H对应的字节地址分别是20H、21H、24H、2FH、D0H、E0H。
【3-18】解答:
R0←30H,(R0)=30H
A←((R0)),(A)=40H
R1←(A),(R1)=40H
B←((R1)),(B)=10H
(R1)←(P1),((R1))=(40H)=EFH
P2←(P1),(P2)=EFH
10H←20H,(10H)=20H
30H←(10H),(30H)=20H
结果:
(R0)=30H,(A)=40H,(R1)=40H,(B)=10H,(40H)=EFH,(P2)=EFH,(10H)=20H,(30H)=20H
【3-19】解答:
因为寄存器间接寻址方式中R0或R1的内容是操作数的RAM地址,内部RAM的寻址范围是00H~7FH。
【3-20】解答:
外部数据传送指令有4条:
MOVXA,@DPTR;MOVX@DPTR,A;MOVXA,@Ri;MOVX@R,A。
(1)都是访问片外RAM,但二者寻址范围不同。
前1条指令是对片外RAM低256个单元的“读”操作;后1条指令是对片外RAM64KB空间的“读”操作。
(2)访问空间相同,但数据传送方向不同。
前1条指令是对片外RAM64KB空间的“读”操作;后1条指令是对片外RAM64KB空间的“写”操作。
(3)访问空间不同。
前1条指令是对片内RAM低128个单元的“写”操作;后1条指令是对片外RAM低256个单元的“写”操作。
(4)二者访问的空间不同,寻址方式不同。
前1条指令是变址寻址方式,对ROM操作;后1条指令是寄存器间接寻址方式,对片外RAM操作。
【3-21】解答:
1031H。
【3-22】解答:
ROM;ROM和外部RAM。
【3-23】解答:
(1)由于在工作寄存器与工作寄存器之间不能直接传送数据,所以需要借助累加器A。
MOVA,R1
MOVR0,A
(2)片外RAM向片内RAM传送数据,不能直接进行,需要借助累加器A。
由于片外RAM是60H单元,地址小于FFH,所以间址寄存器使用Ri即可。
MOVR1,#60H
MOVXA,@R1
MOVR0,A
(3)MOVR1,#60H
MOVXA,@R1
MOV40H,A
(4)片外数据不能直接送入片外单元,需要先将片外数据读入累加器,然后再送到片外。
MOVDPTR,#1000H
MOVXA,@DPTR
MOVR1,#40H
MOVX@R1,A
【3-24】解答:
片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。
数据交换需要使用数据交换指令XCH。
MOVDPTR,#1000H
MOVXA,@DPTR
XCHA,60H
MOVX@DPTR,A
【3-25】解答:
D。
【3-26】解答:
3CH;5FH;50H。
【3-27】解答:
30H;70H。
【3-28】解答:
50H;52H;30H;50H;5030H。
【3-29】解答:
(1)结果:
(A)←→(R1),(A)=40H,(R1)=5BH,(PSW)=81H
(2)结果:
(A)←→(40H),(A)=C3H,(40H)=5BH,(PSW)=80H
(3)结果:
(A)←→((R1)),(A)=C3H,((R1))=(40H)=5BH,(PSW)=80H
(4)结果:
(A)0~3←→((R1))0~3,(A)=53H,((R1))=(40H)=CBH,(PSW)=80H
(5)结果:
(A)0~3←→(A)4~7,(A)=B5H,(PSW)=81H
(6)结果:
A←(A)+(R1),(A)=9BH,(PSW)=05H
(7)结果:
A←(A)+(40H),(A)=1EH,(PSW)=80H
(8)结果:
A←(A)+40H,(A)=9BH,(PSW)=05H
(9)结果:
A←(A)+(40H)+CY,(A)=1FH,(PSW)=81H
(10)结果:
A←(A)-(40H)-CY,(A)=97H,(PSW)=85H
(11)结果:
A←(A)-40H-CY,(A)=1AH,(PSW)=01H
【3-30】解答:
(1)该组指令执行后(A)=00H,不影响CY位。
(2)该组指令执行后(A)=00H,影响CY位。
说明:
单独执行INC指令,只影响奇偶标志位P,不影响半进位标志位AC和进位位CY位。
执行ADD指令后,将影响CY、AC和P位。
【3-31】解答:
DAA指令的作用是对A中刚进行的两个BCD码的加法结果进行修正,即继续使BCD码加法运算的结果保持为BCD码。
使用时,DAA指令只能使用在加法指令后,即ADD指令和ADDC指令。
【3-32】解答:
A←(A)∧23H,(A)=03H
42H←(42H)∨(A),(42H)=37H
A←(A)
((R0)),(A)=34H
A←(
),(A)=CBH
结果:
(A)=CBH
【3-33】解答:
(1)ANLA,#87H
(2)ANLA,#0C3H
(3)ORLA,#0CH
【3-34】解答:
0CBH。
【3-35】解答:
00H;0AAH。
【3-36】解答:
ANLA,B
ORLA,C
MOVF,C
【3-37】解答:
(1)MOVDPTR,#1000H
MOVXA,@DPTR
CPLA
MOVX@DPTR,A
(2)MOVR0,#60H
MOVXA,@R0
ANLA,#3FH
XRLA,#03H
MOVX@R0,A
【3-38】解答:
(1)MOVC,10H
ANLC,P1.0
(2)ORLC,18H
MOVPSW.1,C
【3-39】解答:
(1)正确。
(2)错误。
原因:
清零指令只能用于累加器ACC和位操作,而本题中E0H只能是字节地址(位地址的范围是00H~7FH),所以该条指令错误。
(3)错误。
原因:
ACC是直接字节地址,不能用于清零指令。
(4)正确。
ACC.0是一个位,可以应用到清零指令中。
(5)正确。
(6)错误。
原因:
取反指令只能用于累加器ACC和位操作,