单片机原理及应用教程第版习题课后答案.docx
《单片机原理及应用教程第版习题课后答案.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用教程第版习题课后答案.docx(34页珍藏版)》请在冰豆网上搜索。
![单片机原理及应用教程第版习题课后答案.docx](https://file1.bdocx.com/fileroot1/2022-12/1/2a525636-5da6-4272-a1d6-75aed47a51d4/2a525636-5da6-4272-a1d6-75aed47a51d41.gif)
单片机原理及应用教程第版习题课后答案
《单片机原理及应用程序》(第三版)习题参考答案
第一章
1.为什么计算机要采用二进制数?
学习十六进制数的目的是什么?
在计算机中,由于所采用的电子逻辑器件仅能存储和识别两种状态的特点,计算机内部一切信息存储、处理和传送均采用二进制数的形式。
可以说,二进制数是计算机硬件能直接识别并进行处理的惟一形式。
十六进制数可以简化表示二进制数。
2.
(1)0111100179H
(2)(3)
(5)0110000161H(6)0011000131H
3.
(1)0B3H
(2)80H(3)(4)
4.
(1)01000001B65
5.
(
6.
00100101B00110111BCD25H
7.13711989
8.什么是总线?
总线主要有哪几部分组成?
各部分的作用是什么?
总线是连接计算机各部件之间的一组公共的信号线。
一般情况下,可分为系统总线和外总线。
系统总线应包括:
地址总线(AB)控制总线(CB)数据总线(DB)
地址总线(AB):
CPU根据指令的功能需要访问某一存储器单元或外部设备时,其地址信息由地址总线输出,然后经地址译码单元处理。
地址总线为16位时,可寻址范围为216=64K,地址总线的位数决定了所寻址存储器容量或外设数量的范围。
在任一时刻,地址总线上的地址信息是惟一对应某一存储单元或外部设备。
控制总线(CB):
由CPU产生的控制信号是通过控制总线向存储器或外部设备发出控制命令的,以使在传送信息时协调一致的工作。
CPU还可以接收由外部设备发来的中断请求信号和状态信号,所以控制总线可以是输入、输出或双向的。
数据总线(DB):
CPU是通过数据总线与存储单元或外部设备交换数据信息的,故数据总线应为双向总线。
在CPU进行读操作时,存储单元或外设的数据信息通过数据总线传送给CPU;在CPU进行写操作时,CPU把数据通过数据总线传送给存储单元或外设
9.什么是接口电路?
CPU与接口电路连接一般应具有哪些信号线?
外部设备与接口电路连接一般应具有哪些信号线?
CPU通过接口电路与外部输入、输出设备交换信息,
一般情况下,外部设备种类、数量较多,而且各种参量(如运行速度、数据格式及物理量)也不尽相同。
CPU为了实现选取目标外部设备并与其交换信息,必须借助接口电路。
一般情况下,接口电路通过地址总线、控制总线和数据总线与CPU连接;通过数据线(D)、控制线(C)和状态线(S)与外部设备连接。
10.存储器的作用是什么?
只读存储器和随机存储器有什么不同?
存储器具有记忆功能,用来存放数据和程序。
计算机中的存储器主要有随机存储器(RAM)和只读存储器(ROM)两种。
随机存储器一般用来存放程序运行过程中的中间数据,计算机掉电时数据不再保存。
只读存储器一般用来存放程序,计算机掉电时信息不会丢失。
11.某存储器的存储容量为64KB,它表示多少个存储单元?
64×1024
12.简述微型计算机硬件系统组成。
一台计算机的基本结构由运算器、控制器、存储器、输入设备和输出设备五部分组成。
13.什么是单片机?
单片机与微机相比有何特点?
单片机(Single-Chip-Microcomputer)又称单片微控制器,其基本结构是将微型计算机的基本功能部件:
中央处理机(CPU)、存储器、输入接口、输出接口、定时器/计数器、中断系统等全部集成在一个半导体芯片上,因此,单片机其体积小、功耗低、价格低廉,且具有逻辑判断、定时计数、程序控制等多种功能。
单片机结构上的设计,在硬件、指令系统及I/O能力等方面都有独到之处,具有较强而有效的控制功能。
虽然单片机只是一个芯片,但无论从组成还是从其逻辑功能上来看,都具有微机系统的含义。
另一方面,单片机毕竟是一个芯片,只有外加所需的输入、输出设备,才可以构成实用的单片机应用系统。
14.单片机主要应用于哪些领域?
(1)智能仪器。
智能仪器是含有微处理器的测量仪器。
单片机广泛应用于各种仪器仪表,使仪器仪表智能化取得了令人瞩目的进展。
(2)工业控制。
单片机广泛应用于各种工业控制系统中,如数控机床、温度控制、可编程顺序控制等。
(3)家用电器。
目前各种家用电器普遍采用单片机取代传统的控制电路,如洗衣机、电冰箱、空调、彩电、微波炉、电风扇及高级电子玩具等。
由于配上了单片机,使其功能增强而身价倍增,深受用户的欢迎。
(4)机电一体化。
机电一体化是机械工业发展的方向,机电一体化产品是指集机械技术、微电子技术、计算机技术于一体,具有智能化特征的机电产品。
单片机除以上各方面应用之外,还广泛应用于办公自动化领域(如复印机)、汽车电路、通信系统(如手机)、计算机外围设备等,成为计算机发展和应用的一个重要方向。
15.什么是嵌入式系统?
嵌入式系统有哪些重要特征?
所谓嵌入式系统,是“以应用为中心、以计算机技术为基础、软件硬件可裁减、功能、可靠性、成本、体积、功耗严格要求的专用计算机系统”。
即以嵌入式应用为目的计算机系统。
嵌入式系统的重要特征:
(1)系统内核小
(2)专用性强。
(3)系统精简
嵌入式系统一般没有系统软件和应用软件的明显区分,其功能设计及实现上不要求过于复杂,这样一方面利于控制系统成本,同时也利于实现系统安全。
(4)高实时性。
第二章
1.举例说明MCS-51有哪些典型产品,它们有何区别?
MCS-51系列单片机可分为两大系列:
51子系列和52子系列。
51子系列单片机的典型产品有8051、8751、8031、80C51、80C31等。
它们的结构基本相同,其主要差别反映在片内存储器的配置上有所不同
2.8051单片机内部包含哪些主要功能部件?
各功能部件的主要作用是什么?
8051单片机内部由CPU、4KB的ROM、128B的RAM、4个8位的I/O并行端口、一个串行口、两个16位定时/计数器及中断系统等组成。
3.程序状态字寄存器PSW各位的定义是什么?
PSW是一个8位寄存器,用于寄存当前指令执行后的某些状态,即反映指令执行结果的一些特征信息。
Cy():
即PSW的D7位,进位/借位标志。
AC():
即PSW的D6位,辅助进位标志。
F0()及F1():
即PSW的D5位、D1位,用户标志位。
RS1及RS0(及):
即PSW的D4位、D3位,寄存器组选择控制位。
OV():
即PSW的D2位,溢出标志。
4.MCS-51存储器结构的主要特点是什么?
程序存储器和数据存储器各有何不同?
MCS-51单片机的存储器结构与一般微机存储器的配置方法不同,一般微机把程序和数据共存同一存储空间,各存储单元对应惟一的地址。
而MCS-51的存储器把程序和数据的存储空间严格区分开。
数据存储器用于存放程序运算的中间结果、状态标志位等。
程序存储器用于存放已编制好的程序及程序中用到的常数。
5.MCS-51单片机内部RAM可分为几个区?
各区的主要作用是什么?
内部数据存储器分为高、低128B两大部分。
低128B为RAM区,地址空间为00H~7FH,可分为:
寄存器区、位寻址区、堆栈及数据存储区。
存放程序运算的中间结果、状态标志位等。
高128B为特殊功能寄存器(SFR)区,地址空间为80H~FFH,其中仅有21个字节单元是有定义的。
6.MCS-51单片机的P0~P3四个I/O端口在结构上有何异同?
使用时应注意哪些事项?
P0口是一个8位漏极开路型双向I/O端口。
P1口是一个内部带上拉电阻的8位准双向I/O端口。
P2口也是一个内部带上拉电阻的8位准双向I/O端口
P3口是一个内部带上拉电阻的8位多功能双向I/O端口。
在使用时应注意以下方面:
①P0~P3都是准双向I/O口,即CPU在读取数据时,必须先向相应端口的锁存器写入“1”。
各端口名称与锁存器名称在编程时相同,均可用P0~P3表示。
当系统复位时,P0~P3端口锁存器全为“1”,故可直接对其进行读取数据。
②P0口每一输出位可驱动8个LS型TTL负载,P0口可作通用输入、输出端口使用,此时,若要驱动NMOS或其他拉电流负载时,需外接上拉电阻,才能使该位高电平输出有效。
在单片机进行外部存储器扩展时,P0口必须作为地址/数据复用线使用,此时,不必外接上拉电阻,P0也不能作通用I/O口使用。
③P1、P2、P3口输出均接有内部上拉电阻,输入端无需外接上拉电阻,每一位输出可以驱动4个LS型TTL电路。
④P0、P2口除可以作通用I/O端口、以实现与外部进行数据交换外,更主要的是,当CPU访问外部存储器时,CPU将自动地把外部存储器的地址线信号(16位)送P0、P2口,作为地址总线(P0口输出低8位地址,P2口输出高8位地址),向外部存储器输出16位存储单元地址。
在控制信号作用下,该地址低8位被锁存后,P0口自动切换为数据总线,这时经P0口可向外部存储器进行读、写数据操作。
此时,P2口不再作通用I/O端口,P0口为地址/数据复用口。
7.在什么情况下,P3口作为第二功能使用?
P3口的第二功能是作为控制端口使用的。
由于单片机没有专设的控制信号引脚,单片机在进行外部存储器和I/O端口扩展时所需要的控制信号必须由P3口提供,P3口第二功能相当于PC机中CPU的控制线引脚。
8.为什么说单片机具有较强的位处理能力?
对于许多控制系统,开关量控制是控制系统的主要对象之一。
作为传统的CPU,对于简单的个别开关量进行控制却显得不那么方便,而让MCS-51值得骄傲的正是它有效地解决了单一位的控制。
MCS-51片内CPU还是一个性能优异的位处理器,也就是说MCS-51实际上又是一个完整而独立的1位单片机(也称布尔处理机)。
该布尔处理机除了有自己的CPU、位寄存器、位累加器(即进位标志Cy)、I/O口和位寻址空间外,还有专供位操作的指令系统,可以直接寻址对位存储单元和SFR的某一位进行操作。
MCS-51单片机对于位操作(布尔处理)有置位、复位、取反、测试转移、传送、逻辑与和逻辑或运算等功能。
所以,单片机具有较强的位处理能力。
9.指出8051可进行位寻址的存储空间。
00~7FH(即~及SFR地址能被8整除的寄存器中的各位。
10.位地址90H和字节地址90H及有何异同?
如何区别?
位地址90H表示位
字节地址90H表示P1口
11.在访问外部ROM或RAM时,P0和P2口各用来传送什么信号?
P0口为什么要采用片外地址锁存器?
P0口传送地址低八位后可复用数据线,所以,P0口要采用片外地址锁存器。
P2口传送地址高八位。
12.什么是时钟周期?
什么是机器周期?
什么是指令周期?
当振荡频率为12MHz时,一个机器周期为多少微秒?
时钟周期:
也称振荡周期,即振荡器的振荡频率fosc的倒数,是时序中最小的时间单位。
机器周期:
执行一条指令的过程可分为若干个阶段,每一阶段完成一规定的操作,完成一个规定操作所需要的时间称为一个机器周期,一个机器周期包含12个时钟周期。
当振荡频率为12MHz时,一个机器周期为12/(12×1000000)秒=1微秒
指令周期:
定义为执行一条指令所用的时间。
13.MCS-51单片机有几种复位方法?
复位后,CPU从程序存储器的哪一个单元开始执行程序?
MCS-51的复位电路包括上电复位电路和按键(外部)复位电路
0000H
14.8051系统掉电时如何保存内部RAM中的数据?
单片机在运行过程中,如果发生掉电,片内RAM和SFR中的信息将会丢失。
为防止信息丢失,可以把一组备用电源加到RST/VPD端,当VCC上的电压低于VPD上的电压时,备用电源通过VPD端,以低功耗保持内部RAM和SFR中的数据。
15.8051单片机引脚ALE的作用是什么?
当8051不外接RAM和ROM时,ALE上输出的脉冲频率是多少?
其作用是什么?
地址锁存使能输出ALE:
当单片机访问外部存储器时,外部存储器的16位地址信号由P0口输出低8位,P2口输出高8位,ALE可用作低8位地址锁存控制信号;当不用作外部存储器地址锁存控制信号时,该引脚仍以时钟振荡频率的1/6固定地输出正脉冲,可以驱动8个LS型TTL负载。
第三章
1.MCS-51有哪几种寻址方式?
举例说明它们是怎样寻址的?
MCS-51指令系统的寻址方式有以下7种:
立即寻址方式:
操作数直接出现在指令中。
直接寻址方式中:
操作数的单元地址直接出现在指令中。
寄存器寻址方式中:
寄存器中的内容就是操作数。
寄存器间接寻址方式中,指定寄存器中的内容是操作数的地址,该地址对应存储单元的内容才是操作数。
变址寻址方式是以程序指针PC或数据指针DPTR为基址寄存器,以累加器A作为变址寄存器,两者内容相加(即基地址+偏移量)形成16位的操作数地址,
相对寻址是以程序计数器PC的当前值作为基地址,与指令中的第二字节给出的相对偏移量rel进行相加,所得和为程序的转移地址。
位地址:
内部RAM地址空间的可进行位寻址的128位和SFR地址空间的可位寻址的11个8位寄存器的88位。
位寻址给出的是直接地址。
2.位寻址和字节寻址如何区分?
在使用时有何不同?
由寻址方式可以看出,不同的寻址方式所寻址的存储空间是不同的。
正确地使用寻址方式不仅取决于寻址方式的形式,而且取决于寻址方式所对应的存储空间。
字节寻址必须是对8位存储单元,位寻址的存储空间只能是片内RAM的20H~2FH字节地址中的所有位(位地址为00H~7FH)和部分SFR的位,决不能是该范围之外的任何单元的任何位。
3.要访问专用寄存器和片外数据寄存器,应采用什么寻址方式?
举例说明。
访问专用寄存器:
可采用直接寻址或寄存器寻址。
访问片外数据寄存器:
寄存器间接寻址
4.什么是堆栈?
其主要作用是什么?
堆栈是后进先出的数据存储区
一般用于中断处理过程中,若需要保护现场数据(如内部RAM单元的内容),可使用入栈指令,将数据压入堆栈,中断处理过程执行完后,再使用出栈指令恢复现场数据。
5.编程将内部RAM的20H单元的内容传送给外部RAM的2000H单元。
MOVA,20H
MOVDPTR,#2000H
MOVX@DPTR,A
6.编程将内部数据存储器20H~30H单元内容清零。
MOVR0,#20H
MOVA,#0
MOVR3,#17
LOP:
MOV@R0,A
INCR0
DJNZR3,LOP
7.编程查找内部RAM的32H~41H单元中是否有0AAH这个数据,若有这一数据,则将50H单元置为0FFH,否则清50H单元为0。
MOVR3,#10H
MOVA,#0AAH
MOVR0,#31H
LOP:
INCR0
SUBBA,@R0
JZLOP1
DJNZR3,LOP
MOV50H,#0H
AJMPLOP3
LOP1:
MOV50H,#0FFH
LOP3:
AJMP1OP3
8.查找20H~4FH单元中出现00H的次数,并将查找结果存入50H单元。
MOVR3,#30H
MOVR0,#20H
MOVA,#0
LOP:
MOVA,@R0
JZLOP1
LOP3:
INCR0
DJNZR3,LOP
AJMPLOP2
LOP1:
INC50H
AJMPLOP3
LOP2:
AJMPLOP2
9.已知A=83H,R0=17H,(17H)=34H,写出下列程序段执行完后的A中的内容。
ANLA,#17H
ORL17H,A
XRLA,@R0
CPLA
10.已知单片机的fosc=12MHz,分别设计延时、1s、1min的子程序。
设晶振频率为12MHz,一个机器周期为1μs,
延时1ms的子程序:
执行时间(机器周期)
DELAY:
MOVR7,#0FFH1
LOOP:
NOP1
NOP1
DJNZR7,LOOP2
RET2
该程序段的总的执行时间为:
(1+4×255+2)?
s=1023μs≈1ms
延时时间为100ms的子程序:
DELAY:
MOVR5,#64H对延时1ms的子程序循环100次。
LOP1:
MOVR7,#0FFH
LOOP:
NOP
NOP
DJNZR7,LOOP
DJNZR5,LOP1
RET
延时时间为1s的子程序:
DELAY1:
MOVR3,#0AH对延时100ms的子程序循环10次
DELAY:
MOVR5,#64H。
LOP1:
MOVR7,#0FFH
LOOP:
NOP
NOP
DJNZR7,LOOP
DJNZR5,LOP1
DJNZR3,DELAY
RET
延时时间为60s的子程序:
对延时1s的子程序循环60次
11.MCS-51汇编语言中有哪些常用的伪指令?
各起什么作用?
BIT(地址符号命令)
END(结束汇编)
EQU(等值)
DB(定义字节)
DW(定义字)
DS(定义存储单元)
ORG(汇编起始地址)
12.比较下列各题中的两条指令有什么异同?
①MOVA,R1;MOV0E0H,R1指令功能相同,寻址方式表示不同
②MOVA,P0;MOVA,80H指令功能相同,寻址方式表示不同
③LOOP:
SJMPLOOP;SJMP$指令功能相同
13.下列程序段汇编后,从3000H开始各有关存储单元的内容是什么?
ORG3000H
TAB1:
EQU1234H
TAB2:
EQU5678H
DB65,13,"abcABC"
DWTAB1,TAB2,9ABCH
3000H:
65
3001H:
13
3002H:
‘a’
3003H:
‘b’
3004H:
‘c’
3005H:
‘A’
3006H:
’B’
3007H:
‘C’
3008H:
34H
3009H:
12H
300AH:
78H
300BH:
56H
300CH:
0BCH
300DH:
9AH
14.为了提高汇编语言程序的效率,在编写时应注意哪些问题?
(1)把要解决的问题化成一个个具有一定独立性的功能模块,各模块尽量采用子程序完成其功能。
(2)力求少用无条件转移指令,尽量采用循环结构。
(3)对主要的程序段要下功夫精心设计,这样会收到事半功倍的效果。
(4)能用8位数据解决问题的就不要使用16位数据。
(5)累加器是信息传递的枢纽,在调用子程序时应通过累加器传送子程序的参数,通过累加器向主程序传送返回参数。
所以,在子程序中一般不把累加器推入堆栈。
若需保护累加器的内容时,应先把累加器的内容存入其他寄存器单元,然后再调用子程序。
(6)为了保证程序运行的安全可靠,应考虑使用软件抗干扰技术,如数字滤波技术、指令冗余技术、软件陷井技术,用汇编语言程序实现这些技术,不需要增加硬件成本,可靠性高,稳定性好,方便灵活。
15.试编写8字节外部数据存储器到内部数据存储器的数据块传送程序,外部数据存储器地址范围为40H~47H,内部数据存储器地址范围为30H~37H。
MOVR3,#8
MOVR0,#40H
MOVR1,#30H
LOP1:
MOVXA,@R0
MOV@R1,A
INCR0
INCR1
DJNZR3,LOP1
16.试编写8字节外部程序存储器到内部数据RAM的传送程序,外部程序存储器地址为2040H~2047H,内部RAM地址为30H~37H。
参看15题答案(提示:
外部程序存储器地址为16位地址:
2040H~2047H,间接寻址采用DPTR)
17.试编程使内部RAM的20H~4FH单元的数据块按降序排列。
参看23题答案(提示:
本题对20H~4FH单元(48个)数据降序排列)。
18.内部RAM的20H单元开始有一个数据块,以0DH为结束标志,试统计该数据块长度,将该数据块传送到外部数据存储器7E01H开始的单元,并将长度存入7E00H单元。
MOVR0,#20H
MOVDPTR,#7E01H
LOP:
MOVA,@R0
MOV60H,A
SUBBA,#0DH
JZLOP1
MOVA,60H
MOVX@DPTR,A
INCR3
INCR0
INCDPTR
AJMPLOP
LOP1:
MOVDPTR,#7E00H
MOVA,R3
MOVX@DPTR,A
END
19.试编写一个用查表法查0~9字形7段码(假设表的首地址为TABLE)的子程序,调用子程序前,待查表的数据存放在累加器A中,子程序返回后,查表的结果也存放在累加器A中。
SQR1:
MOVDPTR,#TABLE
MOVCA,@A+DPTR
RET
TABLE:
DB0C0H,0F9H,0A4H,0B0H,99H;0~9的字形显示段码(LED共阳极。
DB92H,82H,F8H,80H,90H
20.内部RAM的DATA开始的区域中存放着10个单字节十进制数,求其累加和,并将结果存入SUM和SUM+1单元。
MOVR0,#DATA
MOVR3,#0AH
MOVA,#0
LOP:
ADDA,@R0
MOVR4,A
ADDCA,#0
MOVR5,A
INCR0
DJNZR3,LOP
MOVSUM,R4
MOVSUM+1,R5
END
21.内部RAM的DATA1和DATA2单元开始存放着两个等长的数据块,数据块的长度在LEN单元中。
请编程检查这两个数据块是否相等,若相等,将0FFH写入RESULT单元,否则将0写入RESULT单元。
MOVR0,#DATA1
MOVR3,LEN
LOP:
MOVA,@R0
CJNZA,DATA2,LOP1
INCR0
INCDATA2
DJNZR3,LOP
MOVA,#0FFH
MOVRESULT,A
AJMPLOP2
LOP1:
MOVA,#0
MOVRESULT,A
LOP2:
AJMPLOP2
END
22.有一输入设备,其端口地址为20H,要求在1秒钟时间内连续采样10次读取该端口数据,求其算术平均值,结果存放在内部RAM区20H单元。
MOVR0,#20H
MOVR2,#0
MOVA,#0
MOVR4,#0
LOP:
MOVR3,#0AH
IN:
ACALLDELAY
MOVXA,@R0
MOVR2,A
MOVA,R4
ADDA,R2
MOVR4,A
DJNZR3,IN
MOVB,#0AH
DIVAB
MOV20H,A
AJMPLOP
DELAY:
MOVR5,#64H延时时间为的子程序:
LOP1:
MOVR7,#0FFH
LOOP:
NOP
NOP
DJNZR7,LOOP
DJNZR5,LOP1
RET
END
23.编写子程序