单片机原理及接口技术第三版教材习题解答.docx
《单片机原理及接口技术第三版教材习题解答.docx》由会员分享,可在线阅读,更多相关《单片机原理及接口技术第三版教材习题解答.docx(60页珍藏版)》请在冰点文库上搜索。
单片机原理及接口技术第三版教材习题解答
单片机原理及接口技术教材习题全部解答
第1章绪论
1-1解答:
第一台电脑的研制目的是为了计算复杂的数学难题。
它的特点是:
电脑字长为12位,运算速度为5000次/s,使用18800个电子管,1500个继电器,占地面积为150m2,重达30t,其造价为100多万美元。
它的诞生,标志着人类文明进入了一个新的历史阶段。
1-2解答:
单片微型电脑简称单片机。
一个完整的单片机芯片至少有中央处理器〔CPU〕、随机存储器〔RAM〕、只读存储器〔ROM〕、定时/计数器及I/O接口等部件。
1-3解答:
单片机的发展大致经历了四个阶段:
第一阶段〔1970—1974年〕,为4位单片机阶段;
第二阶段〔1974—1978年〕,为低中档8位单片机阶段;
第三阶段〔1978—1983年〕,为高档8位单片机阶段;
第四阶段〔1983年至今〕,为8位单片机稳固发展阶段及16位单片机、32位单片机推出阶段。
1-4解答:
Intel公司的MCS-48系列、MCS-51系列、MCS-96系列产品;
Motorola公司的6801、6802、6803、6805、68HC11系列产品;
Zilog公司的Z8、Super8系列产品;
Atmel公司的AT89系列产品;
Fairchild公司的F8和3870系列产品;
TI公司的TMS7000系列产品;
NS公司的NS8070系列产品;
NEC公司的μCOM87〔μPD7800〕系列产品;
National公司的MN6800系列产品;
Hitachi公司的HD6301、HD63L05、HD6305。
1-5解答:
〔1〕8031/8051/8751三种型号,称为8051子系列。
8031片内没有ROM,使用时需在片外接EPROM。
8051片内含有4KB的掩模ROM,其中的程序是生产厂家制作芯片时烧制的。
8751片内含有4KB的EPROM,用户可以先用紫外线擦除器擦除,然后再利用开发机或编程器写入新的程序。
〔2〕8032A/8052A/8752A是8031/8051/8751的增强型,称为8052子系列。
其中片内ROM和RAM的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。
〔3〕80C31/80C51/87C51BH是8051子系列的CHMOS工艺芯片,80C32/80C52/87C52是8052子系列的CHMOS工艺芯片,两者芯片内的配置和功能兼容。
1-6解答:
8052子系列片内ROM和RAM的容量比8051子系列各增加一倍,另外,增加了一个定时/计数器和一个中断源。
1-7解答:
AT89系列单片机是美国Atmel公司的8位Flash单片机产品。
它的最大特点是在片内含有Flash存储器,在系统的开发过程中可以十分容易地进行程序的修改,使开发调试更为方便。
AT89系列单片机以8031为内核,是与8051系列单片机兼容的系列。
1-8解答:
高档型单片机有AT89S51、AT89S52、AT89S53和AT89S8252等型号,其中AT89S51有4KB可下载Flash存储器,AT89S52、AT89S8252有8KB可下载Flash存储器,AT89S53有12KB可下载Flash存储器。
第2章MCS-51系列单片机的结构及原理
2-1解答:
MCS-51单片机由8个部件组成:
中央处理器〔CPU〕,片内数据存储器〔RAM〕,片内程序存储器〔ROM/EPROM〕,输入/输出接口〔I/O口,分为P0口、P1口、P2口和P3口〕,可编程串行口,定时/计数器,中断系统及特殊功能寄存器〔SFR〕。
中央处理器〔CPU〕:
单片机的核心部分,它的作用是读入和分析每条指令,根据每条指令的功能要求,控制各个部件执行相应的操作。
片内数据存储器〔RAM〕:
存放各项操作的临时数据。
片内程序存储器〔ROM/EPROM〕:
存放单片机运行所需的程序。
输入/输出接口〔I/O口〕:
单片机与外设相互沟通的桥梁。
可编程串行口:
可以实现与其它单片机或PC机之间的数据传送。
定时/计数器:
具有可编程功能,可以完成对外部事件的计数,也可以完成定时功能。
中断系统:
可以实现分时操作、实时处理、故障处理等功能。
特殊功能寄存器〔SFR〕:
反映单片机的运行状态,包含了单片机在运行中的各种状态字和控制字,以及各种初始值。
2-2解答:
引脚是片内外程序存储器的选择信号。
当
端保持高电平时,访问内部程序存储器,但在PC〔程序计数器〕值超过0FFFH〔对于8051/8751/80C51〕或1FFFH〔对于8052〕时,将自动转向访问外部程序存储器。
当
端保持低电平时,不管是否有内部程序存储器,则只访问外部程序存储器。
由于8031片内没有程序存储器,所以在使用8031时,
引脚必须接低电平。
2-3解答:
在MCS-51单片机中,除P3口具有第二功能外,还有3条控制线具有第二功能。
P3口的第二功能:
P3.0—RXD:
串行数据接收端
P3.1—TXD:
串行数据发送端
P3.2—
:
外部中断0申请输入端
P3.3—
:
外部中断1申请输入端
P3.4—T0:
定时器0计数输入端
P3.5—T1:
定时器1计数输入端
P3.6—
:
外部RAM写选通
P3.7—
:
外部RAM读选通
3条控制线的第二功能:
ALE—
:
片内EPROM编程脉冲。
片内具有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
RESET—VPD:
备用电源。
VCC掉电期间,此引脚可接备用电源,以保持内部RAM数据不丧失。
—VPP:
片内EPROM编程电源。
在对片内具有EPROM的芯片进行编程时,此引脚用于施加21V编程电源。
2-4解答:
MCS-51单片机的内部存储空间分为数据存储器和程序存储器。
内部数据存储器:
共256字节单元,包括低128个单元和高128个单元。
低128字节又分成3个区域:
工作寄存器区〔00H~1FH〕,位寻址区〔20H~2FH〕和用户RAM区〔30H~7FH〕。
高128字节是供应特殊功能寄存器使用的,因此称之为特殊功能寄存器区。
内部程序存储器:
在8031片内无程序存储器,8051片内具有4KB掩模ROM,8751片内具有4KBEPROM。
2-5解答:
MCS-51单片机提供了4组工作寄存器,对于当前工作寄存器组的选择,是通过PSW中的RS1和RS0来进行选择。
具体关系如下表:
RS1
RS0
当前寄存器组
0
0
第0组工作寄存器
0
1
第1组工作寄存器
1
0
第2组工作寄存器
1
1
第3组工作寄存器
2-6解答:
内部RAM低128个单元按用途分成3个区域:
工作寄存器区〔00H~1FH〕,位寻址区〔20H~2FH〕和用户RAM区〔30H~7FH〕。
2-7解答:
DPTR是数据指针寄存器,是一个16位寄存器,用来存放16位存储器的地址,以便对外部数据存储器RAM中的数据进行操作。
DPTR由高位字节DPH和低位字节DPL组成。
2-8解答:
所谓堆栈,顾名思义就是一种以“堆”的方式工作的“栈”。
堆栈是在内存中专门开辟出来的按照“先进后出,后进先出”的原则进行存取的RAM区域。
堆栈的用途是保护现场和断点地址。
在8051单片机复位后,堆栈指针SP总是初始化到内部RAM地址07H。
从08H开始就是8051的堆栈区,这个位置与工作寄存器组1的位置相同。
因此,在实际应用中,通常要根据需要在程序初始化时对SP重新赋值,以改变堆栈的位置。
2-9解答:
程序状态字寄存器PSW是8位寄存器,用于存放程序运行的状态信息。
CY〔PSW.7〕:
进位标志位。
AC〔PSW.6〕:
辅助进位标志位。
F0〔PSW.5〕、F1〔PSW.1〕:
用户标志位。
RS1〔PSW.4〕、RS0〔PSW.3〕:
工作寄存器组选择位。
OV〔PSW.2〕:
溢出标志位。
P〔PSW.0〕:
奇偶标志位。
2-10解答:
P0口由一个所存器、两个三态输入缓冲器、场效应管、控制与门、反相器和转换开关组成;作为输出口时,必须外接上拉电阻才能有高电平输出,作为输入口时,必须先向锁存器写“1”;作为普通I/O口使用或低8位地址/数据总线使用。
P1口内没有转换开关,但有上拉电阻;只用作普通I/O口使用。
P2口比P1口多了一个转换控制开关;作为普通I/O口使用或高8位地址线使用。
P3口比P1口增加了与非门和缓冲器;具有准双向I/O功能和第二功能。
上述4个端口在作为输入口使用时,应注意必须先向端口写“1”。
2-11解答:
指令周期:
执行一条指令所需要的时间。
机器周期:
CPU完成一个基本操作所需要的时间。
状态:
振荡脉冲经过二分频后,得到的单片机的时钟信号。
拍:
振荡脉冲的周期。
当晶振频率为12MHz时,一个机器周期为1μs;当晶振频率为8MHz时,一个机器周期为3μs。
2-12解答:
在时钟电路工作后,只要在单片机的RESET引脚上出现24个时钟震荡脉冲〔两个机器周期〕以上的高电平,单片机就能实现复位。
复位后,CPU和系统都处于一个确定的初始状态,在这种状态下,所有的专用寄存器都被赋予默认值,除SP=07H,P0~P3口为FFH外,其余寄存器均为0。
2-13解答:
8051单片机应用系统的电压检测电路监测到电源下降时,触发外部中断,在中断服务子程序中将外部RAM中的有用数据送入内部RAM保存。
〔内部RAM由备用电源供电〕
80C51单片机应用系统的电压检测电路监测到电源降低时,也出发外部中断,在中断服务子程序中,除了要将外部RAM中有用的数据保存以外,还要将特殊功能寄存器的有用内容保护起来,然后对电源控制寄存器PCON进行设置。
2-14解答:
单片机退出空闲状态有两种方法:
中断退出和硬件复位退出。
第3章MCS-51系列单片机的指令系统
3-1解答:
指令是规定电脑进行某种操作的命令,一台电脑所能执行的指令集合称为该电脑的指令系统。
电脑内部只识别二进制数,因此,能别电脑直接识别、执行的指令时使用二进制编码表示的指令,这种指令别称为机器语言指令。
以助记符表示的指令就是电脑的汇编语言指令。
3-2解答:
[标号:
]<操作码>[操作数][;注释]
3-3解答:
MCS-51系列单片机提供了7种寻址方式:
〔1〕立即寻址:
操作数在指令中直接给出,立即数前面有“#”。
〔2〕直接寻址:
在指令中直接给出操作数地址。
对应片内低128个字节单元和特殊功能寄存器。
〔3〕寄存器寻址:
以寄存器的内容作为操作数。
对应的寄存器有:
R0~R7、A、AB寄存器和数据指针DPTR。
〔4〕寄存器间接寻址:
以寄存器的内容作为RAM地址,该地址中的内容才是操作数。
对应片内RAM的低128个单元采用R0、R1作为间址寄存器,片外RAM低256个单元可用R0、R1作为间址寄存器,整个64KB空间可用DPTR作为间址寄存器。
〔5〕变址寻址:
以DPTR或PC作为基址寄存器,以累加器A作为变址寄存器,并以两者内容相加形成的16位地址作为操作数地址。
对应片内、片外的ROM空间。
〔6〕相对寻址:
只在相对转移指令中使用。
对应片内、片外的ROM空间。
〔7〕位寻址:
对可寻址的位单独进行操作。
对应位寻址区20H~2FH单元的128位和字节地址能被8整除的特殊功能寄存器的相应位。
3-4解答:
直接寻址方式。
3-5解答:
寄存器间接寻址方式。
3-6解答:
立即寻址方式,直接寻址方式,寄存器寻址方式,寄存器间接寻址方式,位寻址方式。
3-7解答:
变址寻址方式
3-8解答:
对于8052单片机内部RAM的高128B,必须采用寄存器间接寻址方式进行访问。
3-9解答:
外部数据传送指令有6条:
MOVXA,@DPTRMOVX@DPTR,A
MOVXA,@RiMOVX@Ri,A
MOVCA,@A+DPTRMOVCA,@A+PC
〔1〕MOVXA,@R1MOVXA,@DPTR
都是访问片外RAM,但二者寻址范围不同。
前1条指令是对片外RAM低256个单元的“读”操作。
后1条指令是对片外RAM64KB空间的“读”操作。
〔2〕MOVXA,@DPTRMOVX@DPTR,A
访问空间相同,但数据传送方向不同。
前1条指令是对片外RAM64KB空间的“读”操作。
后1条指令是对片外RAM64KB空间的“写”操作。
〔3〕MOV@R0,AMOVX@R0,A
二者访问的空间不同。
前1条指令是对片内RAM低128个单元的“写”操作。
后1条指令是对片外RAM低256个单元的“写”操作。
〔4〕MOVCA,@A+DPTRMOVXA,@DPTR
二者访问的空间不同,寻址方式不同。
前1条指令是变址寻址方式,对ROM操作。
后1条指令是寄存器间接寻址方式,对片外RAM操作。
3-10解答:
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-11解答:
〔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
〔5〕ROM中的数据需要使用查表指令才能读出来,所以此题不能使用一般的传送指令从ROM中读数据。
MOVDPTR,#2000H
MOVA,#00H
MOVCA,@A+DPTR
MOVR2,A
〔6〕MOVDPTR,#2000H
MOVA,#00H
MOVCA,@A+DPTR
MOV40H,A
〔7〕MOVDPTR,#2000H
MOVA,#00H
MOVCA,@A+DPTR
MOVDPTR,#0200H
MOVX@DPTR,A
3-12解答:
片外RAM与片内RAM之间的数据传送不能直接进行,需要借助累加器A。
数据交换需要使用数据交换指令XCH。
MOVDPTR,#1000H
MOVXA,@DPTR
XCHA,60H
MOVX@DPTR,A
3-13解答:
此题需要采用查表指令。
ORG0200H
MOVDPTR,#TAB
MOVA,R7
MOVCA,@A+DPTR
ORG0300H
TAB:
DB0,1,4,9,16,25,36,49,64,81
3-14解答:
〔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-15解答:
〔1〕该组指令执行后〔A〕=00H,不影响CY位。
〔2〕该组指令执行后〔A〕=00H,影响CY位。
说明:
单独执行INC指令,只影响奇偶标志位P,不影响半进位标志位AC和进位位CY位。
执行ADD指令后,将影响CY、AC和P位。
3-16解答:
此题涉及的是16位数的减法运算,首先应让低8位相减,然后让高8位带着借位相减。
注意:
应在低8位相减前将进位位CY清空0。
CLRC
MOVA,#56H
SUBBA,#78H
MOVR0,A
MOVA,#23H
SUBBA,#45H
MOVR1,A
3-17解答:
A←〔A〕∧23H,〔A〕=03H
42H←〔42H〕∨〔A〕,〔42H〕=37H
A←〔A〕
〔〔R0〕〕,〔A〕=34H
A←〔
〕,〔A〕=CBH
结果:
〔A〕=CBH
3-18解答:
〔1〕MOVDPTR,#1000H
MOVXA,@DPTR
CPLA
MOVX@DPTR,A
〔2〕MOVR0,#60H
MOVXA,@R0
ANLA,#3FH
XRLA,#03H
MOVX@R0,A
3-19解答:
DAA指令的作用是对A中刚进行的两个BCD码的加法结果进行修正,即继续使BCD码加法运算的结果保持为BCD码。
使用时,DAA指令只能使用在加法指令后,即ADD指令和ADDC指令。
3-20解答:
MOVDPTR,#1000H
MOVXA,@DPTR
MOVB,#10
MULAB
MOV30H,A
MOV31H,B
MOVDPTR,#2000H
MOVXA,@DPTR
MOVB,#32
MULAB
ADDA,30H
MOV30H,A
MOVA,B
ADDCA,31H
MOV31H,A
3-21解答:
MOVR7,#10
MOVDPTR,#block1
MOVR0,#block2
LOOP:
MOVXA,@DPTR
MOV@R0,A
INCDPTR
INCR0
DJNZR7,LOOP
3-22解答:
MOVA,#01H
LOOP:
MOVP0,A
RLA
LCALLDELAY
SJMPLOOP
DELAY:
MOVR7,#00H
DELAY1:
MOVR6,#00H
DJNZR6,$
DJNZR7,DELAY1
RET
3-23解答:
ORLC,11H
MOV11H,C
MOVC,P1.0
ORLC,10H
ANLC,11H
MOVP1.0,C
3-24解答:
〔1〕正确。
〔2〕错误。
原因:
清零指令只能用于累加器ACC和位操作,而此题中E0H只能是字节地址〔位地址的范围是00H~7FH〕,所以该条指令错误。
〔3〕错误。
原因:
ACC是直接字节地址,不能用于清零指令。
〔4〕正确。
ACC.0是一个位,可以应用到清零指令中。
〔5〕正确。
〔6〕错误。
原因:
取反指令只能用于累加器ACC和位操作,而此题中E0H只能是字节地址〔位地址的范围是00H~7FH〕,所以该条指令错误。
〔7〕错误。
原因:
ACC是直接字节地址,不能用于取反指令。
〔8〕正确。
ACC.0是一个位,可以应用到取反指令中。
3-25解答:
ANLA,B
ORLA,C
MOVF,C
3-26解答:
指令LJMPaddr16是长转移指令,指令中提供了16位目的地址,寻址范围是64KB。
指令AJMPaddr11是绝对转移指令,指令中11位目的地址,其中a7~a0在第二字节,a10~a8则占据第一字节的高3位,寻址范围是与PC当前值〔本指令所在地址+本条指令所占用的字节数2〕在同一个2K的区域内。
3-27解答:
〔1〕MOVP1,#0CAH;P1←CAH,P1=CAH=11001010B
MOVA,#56H;A←56H,A=56H=01010110B
JBP1.2,L1;假设P1.2=1,则转移至L1
JNBACC.3,L2;假设ACC.3=0,则转移至L2
…
L1:
…
L2:
…
执行完本段程序后将转移至L2,因为P1.2=0,ACC.3=0,所以转至L2。
〔2〕MOVA,#43H;A←43H,A=43H=01000011B
JBACC.2,L1;假设ACC.2=1,则转移至L1
JBCACC.6,L2;假设ACC.6=1,则转移至L2,同时将ACC.6清零
…
L1:
…
L2:
…
执行完本段程序后将转移至L2,因为ACC.2=0,ACC.6=1,所以转至L2,并且将ACC.6清零。
3-28解答:
〔1〕
MOVA,P1
CPLA
ANLA,#0F0H
SWAPA
MOVP1,A
〔2〕:
LOOP:
JNBP1.4,L1;
JNBP1.5,L2;
JNBP1.6,L3;
JNBP1.7,L4;
LJMPLOOP;
L1:
MOVP1,#01H;
LJMPLOOP;
L2:
MOVP1,#02H;
LJMPLOOP;
L3:
MOVP1,#03H;
LJMPLOOP;
L4:
MOVP1,#04H;
LJMPLOOP;
第4章汇编语言程序设计
4-1解答:
ORG0100H
MOVA,21H
ADDA,23H
MOV25H,A
MOVA,20H
ADDCA,22H
MOV24H,A
RET
4-2解答:
ORG0200H
MOVA,51H
MOVB,#20
MULAB
MOV53H,A
MOV52H,B