单片机原理及应用课后习题参考答案16章.docx
- 文档编号:7639082
- 上传时间:2023-01-25
- 格式:DOCX
- 页数:28
- 大小:116.12KB
单片机原理及应用课后习题参考答案16章.docx
《单片机原理及应用课后习题参考答案16章.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课后习题参考答案16章.docx(28页珍藏版)》请在冰豆网上搜索。
单片机原理及应用课后习题参考答案16章
第一章计算机基础知识
1-1微型计算机主要由哪几部分组成?
各部分有何功能?
答:
一台微型计算机由中央处理单元(CPU、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):
即地址总线AB数据总线DB和控制总线CB来连接。
CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。
存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。
按其功能可分为RAM和ROM
输入/输出(I/O、接口是CPU与外部设备进行信息交换的部件。
总线是将CPU存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。
1-3什么叫单片机?
其主要由哪几部分组成?
答:
单片机(SingleChipMicrocomputer、是指把CPURAMROM定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。
1-4在各种系列的单片机中,片内ROM勺配置有几种形式?
用户应根据什么原则来选用?
答:
单片机片内ROM勺配置状态可分四种:
(1、片内掩膜(MaskROM^单片机(如8051),适合于定型大批量应用产品的生产;
(2、片内EPROI型单片机(如8751),适合于研制产品样机;
(3)片内无ROMS单片机(如8031),需外接EPROM单片机扩展灵活,适用于研制新产品;
(4)EEPROM或FlashROM)型单片机(如89C51),内部程序存储器电可
擦除,使用更方便。
1-5写出下列各数的另两种数制的表达形式(二、十、十六进制)
1100010
1001110
111111
11101
101
98
20039
585
16236
29
1495
62H
4E47H
249H
3F6CH
1D
5D7
1-6写出下列各数的BCD参与:
59:
01011001,1996:
000,:
第二章MCS-51单片机的硬件结构
2-18052单片机片内包含哪些主要逻辑功能部件?
答:
8052单片机片内包括:
18位中央处理器CPU一个
2片内振荡器及时钟电路
3256B数据存储器RAM
48KB片内程序存储空间ROM
521个特殊功能寄存器SFR
64个8位并行I/O端口(32条线)
71个可编程全双工串行口
8可寻址64KB的外部程序存储空间和外部数据存储空间
93个16位的定时器/计数器
106个中断源、2个优先级嵌套中断结构
2-28052的存储器分哪几个空间?
如何区别不同空间的寻址?
答:
⑴8052的存储器分为6个编址空间:
1片内ROM勺容量为8KB其地址为OOOOH~1FFFH
2可扩展片外ROM勺容量为64KB其地址为OOOOH~FFFFH
片内RAM勺容量为256B,其地址为OOH~FFH分为二块:
③地址OOH~7FH共128B为片内RAM低区,④另128B为片内RAM高区,其地址空间为8OH'FFH其地址空间与SFR功能寄存器地址重叠;
5可扩展片外RAM勺容量为64KB其地址为OOOOH~1FFFH
6特殊功能寄存器SFR的空间为128B,其地址为8OH~FFH但实际只定义了26B单元,这26B单元分散在8OH'FOH
⑵程序存储器和数据存储器在逻辑上是完全分开的。
CPU通过指令MOV访问程序存储器。
当8O52第31脚EA接高电平时,CPU将从片内程序存储器OOOOH单元开始执行,当PC值超出片内程序存储空间,即大于1FFFH时,会自动转向片外程序存储空间。
当EA接低电平时,CPU将从片外程序存储器ROM勺OOOOH单元开始执行。
CPU!
过MOV旨令访问片内数据存储空间RAM低区128B地址空间OOH~7FH中地址为OOH~1FH这32个单元分为4个工作寄存器组,分别用RO~R7表示,通过工作寄存器指令进行访问。
片内RAM中的2OH~2FH单元除可作为一般字节寻址单元使用外,这16个单元共128位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范围为OOH'7FH;对片内高区128B寻址只能用寄存器间接寻址,而对特殊功能寄存器建起必须使用直接寻址。
CPU通过指令MOVX访问片外数据存储器。
2-3DPTR的作用是什么?
它由哪几个寄存器组成?
答:
相对于地址指针,DPTR被称为数据指针,但实际上DPTF中存放的是一个16位的地址,作为访问程序存储器和外部数据存储器的地址指针。
当对64KB
外部数据存储器空间寻址时,作为间址寄存器使用,而在访问程序存储器时,作为基址寄存器使用。
DPTR1一个16位的特殊功能寄存器,由两个8位寄存器DPHDPL组成,使用SFR中的82H和83H单元。
2-4简述布尔处理存储器的空间分配。
答:
在单片机中位处理又称布尔处理,允许按位处理的存储器称为布尔处理存储器。
其地址空间由二部分构成:
一部分是片内RAM中字节地址为20H~2FH
的16字节的128个位,这些位编址为00H'7FH另一部分在特殊寄存器中,其地址码能被8整除的12个特殊功能寄存器可以按位寻址,但其中4个未定义,一共有92位可按位寻址。
这二部分结合起来形成一个具有220位的位寻址空间。
2-58052单片机设置4组工作寄存器,如何选择确定和改变当前工作寄存器?
答:
8052片内数据存储器的00H~仆H这32个单元分为4级作为4个工作寄存器第0组地址00H'07H,第一组08H~0FH第二组10H~17H第3组18H~1FH每个工作寄存器都有8个单元,分别用R0~R7表示。
4组寄存器中每一组都可能被选为CPU勺工作寄存器,这是通过程序状态字PSW勺(RS0)和(RS1)两位的状态来选择决定的。
见下表:
(RS1)
(RS0)
当前使用的工作寄存器组R0'R7
0
0
0组(00H'07H)
0
1
1组(08H'0FH
1
0
2组(10H'17H)
1
1
3组(18H'1FH
通过程序改变RS1和RS0的状态,就可方便地更换工作寄存器组。
2-6程序状态字寄存器PSW勺作用是什么?
常用的状态标志位有哪些位?
作用分别是什么?
答:
PSWI一个8位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。
它可以进行位寻址。
各位的作用如下:
Cy:
进位标志位。
在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy由硬件置1,否则Cy清0。
在进行位操作时,Cy又是位累加器,指令助记符用C表示。
AC辅助进位标志位。
在进行加(或减)运算时,若操作结果的低半字节(D3
位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则AC位清
0。
F0:
用户标志位。
用户根据需要对F0置位或复位,作为软件标志。
RS1和RS0工作寄存器组选择控制位。
由用户用软件改变RS1和RS0的状
态,以选择内RAM中的哪组工作寄存器为当前工作寄存器组。
OV溢出标志位。
当进行补码运算时,运算结果超出—128〜+127范围时,产生溢出,则ov自动置1,否则ov青0。
:
保留位。
8051中未定义。
P:
奇偶校验标志位。
每条指令执行完后,该位始终跟踪累加器A中1的数
目的奇偶性。
如果A中有奇数个1,则P=1;否则P=0。
2-78052单片机的EA引脚有何功能?
在使用8032时,EA引脚就如何处理?
答:
8052单片机的31脚为EA,EA为访问外部或内部程序存储器控制信号。
当EA引脚接高电平且PC值小于仆FFH时,CPU访问内部程序存储器读取指令,当EA引脚接低电平时,CPU只访问外部等量齐观存储器读取指令。
在8032芯片中没有内部程序存储器,因此,8032芯片的31脚EA只能接地。
2-88052内部RAM中低128B单元划分为哪几个主要部分?
各部分主要功能是什么?
答:
8052内部数据存储器RAM中低128B单元地址空间00H~7FH被划分为三个部分。
第一部分地址为00H~1FH这32个单元分为4个工作寄存器组,分别用R0~R7表示,通过工作寄存器指令进行访问。
片内RAM中的第二部分20H~2FH单元除可作为一般字节寻址单元使用外,这16个单元共128位中的每一位又可单
独作为软件触发器使用,具有位寻址功能,其位地址范围为00H'7FH;第三部分
地址30H~7FH这部分存储区域可作为8位数据缓冲区使用,一般地,用户把堆栈就设置在这部分区域。
2-98052内部RAM中高128B单元与特殊功能寄存器区地址空间重叠,使用中是如何区分这两个空间的?
答:
对8052片内高区(80H'0FFH128B只能采用寄存器间接寻址,而对特殊功能寄存器SFR建起必须采用直接寻址。
2-10什么叫堆栈?
堆栈指针SP的作用是什么?
答:
堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM
区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的。
堆栈指针SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动
2-12什么是时钟周期、机器周期和指令周期?
答:
(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。
(2)机器周期是指CPU完成某一个规定操作所需的时间,8051单片机的一个机器周期包含6个状态,并依次表示为S1〜S6,每个状态分为2个节拍。
因此一个机器周期包含12个时钟周期(振荡周期),依次表示为:
S1P1、S1P2、S2P1•…、S6P1、S6P2
(3)指令周期是指CPU执行一条指令所需要的时间称为指令周期。
MCS-51单片机指令周期根据指令的不同,可包含有1或2或4个机器周期。
3-1指出下列每一条指令的寻址方式及其完成的操作。
MOV2FH,#40H
MOVA,2FH
第三章MCS-51单片机指令系统
;立即寻址,将40H移入片内2FH单元
;直接寻址,将片内2FH单元的数移入累加器A
MOVR1,#2FH
MOVA,@R1
累加器A
;立即寻址,将2FH移入当前寄存器组的R1单元
;寄存器间接寻址,将寄存器R1中所存地址中的值移入
;隐含寻址,将累加器A中的值移入片内2FH单元
MOV2FH,A
3-2内部RAM勺4FH单元,可用哪几种寻址方式?
分别举例说明。
答:
直接寻址:
MOVR14FH
间接寻址:
MOVR,1#4FH
寄存器间接寻址:
MOVA,@R1
3-3指出下列各条指令中,45H代表什么?
MOVA,#45H
MOVA,45H
答:
PSW的各位为,即Cy=1,AC=1,F0=1,RS1=1,RS0=0,0V=0,P=0
(1)SUBBA,30H
结果:
(A)=D4H,CY=1,AC=0,0V=1,P=0
(2)SUBBA,#30H
结果:
(A)=49H,CY=0,AC=0,0V=0,P=1
(3)ADDA,R0
结果:
(A)=AAHCY=QAC=0OV=1,P=0
(4)ADDA30H
结果:
(A)=1FHCY=1,AC=0OV=0,P=1
(5)ADDA,#30H
结果:
(A)=AAHCY=0AC=0OV=1,P=0
(6)ADDCA30H
结果:
(A)=20H,CY=1,AC=1,OV=0,P=1
(7)SWAPA
结果:
(A)=A7H对标志位无影响
(8)XCHDA,@R0
结果:
(A)=75H(30H)=AAH(R0)=AAHP=1
(9)XCHA30H
结果:
(A)=0A5H(30H)=7AHP=0
(10)XCHA,R0
结果:
(A)=30H(R0)=7AHP=0
(11)MOVA,@R0
结果:
(A)=0A5HP=0
(12)XCHA,@R0
结果:
(A)=0A5H(30H)=7AHP=0
3-5试分析以下程序段的执行结果:
MOVSP,#3AH
MOVA,#20H
MOVB,#30H
PUSHACC
PUSHB
POPACC
POPB
结果:
(SP)=3AH(A)=30H(B)=20H(3BH)=20H(3CH)=30H
3-6指出下列指令的执行结果并写出每条指令的机器码。
MOV30H,#52H
;(30H)=52H
01110101(753052H)
MOVA,#70H
;(A)=70H
01110100(7470H)
MOVA,30H
;(A)=52H
(E530H)
MOVR0,#30H
;(R0)=30H
(7830H)
MOVA,@R0;A=52H(E6H)
3-
7分析下列指令的执行结果,并写出每条指令的机器码。
M0VA,#70H;(A)=70H
M0VDPTR,#2030H;(DPTR)=2030H
01110100(74H)
(90H)
3-8设RO的内容为32H,A的内容为48H,内部RAM勺32H单元内容为80H,40单元内容为08H,指出在执行下列程序段后上述各单元内容的变化
MOVA,@R0
MOV@R0,40H
MOV40H,A
MOVR0,#35H
结果:
(R0)=35H,(A)=80,(32H)=08H,(40H)=80H
3-9已知:
(A)=81H,(R0)=20H,(20H)=35H,指出执行完下列程序段后A的内容。
3-10用指令实现下述数据传送
(1)内部RAM20I单元送内部RAM40I单元。
答:
MOV40H,20H
⑵外部RAM20I单元送R0寄存器。
答:
MOVR1,#20HMOVXA,@R1MOVR0,A
⑶外部RAM20I单元送内部RAM20I单元
答:
MOVR1,#20HMOVXA,@R1MOV20H,A
⑷外部RAM1000I单元送内部RAM20!
单元
答:
MOVDPTR,#1000HMOVXA,@DPTRMOV20H,A
⑸外部R0M1000单元送内部RAM20!
单元。
答:
MOVDPTR,#1000HMOVA,#00HMOVCA,@A+DPTRMOV20H,A
(6)外部R0M1000单元送外部RAM20I单元。
答:
MOVDPTR,#1000HMOVA,#00HMOVCA,@A+DPTRMOVR1,#20HMOVX@R1,A
3-11已知16位二进制数的高8位和低8位分别存放在20H和21H单元,请编写将其右移一们的程序。
CLRC
MOVA,20H
RRCA
MOV20H,A
MOVA,21H
RRCA
MOV21H,A
3-12编程实现内部RAMR0~R7勺内容传递到20H~27H单元。
3-13试编程进行两个16位数的减法,6F5DH-13B4H结果存入内部RAM的30H和31H单元,30H存放差的低8位。
CLRC
MOVA,#5DH
SUBBA,#B4H
MOV30H,A
MOVA,#6FH
SUBBA,13H
MOV31H,A
3-14编写程序,若累加器A的内容分别满足下列条件时,程序则至LABEL
存储单元,设A中存放的是无符号数。
①A>=10②A>0
CJNEA,#10H,LABJNZLABEL
LAB:
JNCLABEL
LABEL:
3-15已知(SP=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.问此时执行“RET指令后,(SP)=?
(PC)=?
答:
(SP)=23H,(PC)=3412H
执行RET时,PCH-(SP),SPJSP-1,PCL^(SP),SPJSP-1
3-16若(sp)=25H,(PC)=2345H,标号LABEL所在的地址为3456H,问执行调用指令“LCALLLABEL后,堆栈指针和堆栈内容发生什么变化?
(PC)的值等于什么?
答:
最后堆栈指针SP=27H堆栈指针SP=26H处SP内容为45H,指针SP=27H处内容为23Ho最后程序计数器指针PC=3456H
执行LCALL后,PC-PC+3SP^SP+1,(SP)—PCL,SP-SP+1,(SF)—PCH,PCJaddr16。
3-17试编写程序,查找在内部RAM的20H~50H单元中是否有OAAH这一数据。
若有,则将51H单元置01H,若未找到,则将51H单元置00H
MOV51H,#00H
MOVR0,#20H
LOOP:
MOVA,@R0
CJNEA,#0AAH,NEXT
INC51H
SJMPEEE
NEXT:
INCR0
CJNER0,#51H,LOOP
EEE:
SJMP$
;先设没找到
;起始地址
;取出数字
;不相等就跳转
;相等将51单元置1
;找到转去结束
;下一个地址
;地址没找完就继续
;暂停
3-18试编写程序,统计在外部
并将统计结果丰收入内部RAM50H单元
MOVR0,#00H
MOVDPTR,#2000HMOVR1,#60H
LOOP:
MOVXA,@DPTR
JNZNEXT
INCR0
NEXT:
INCDPTR
DJNZR1,LOOP
MOV50H,R0
SJMP$
RAM2000H~205F单元中出现00H的次数,
;RO设为计数器,初始为0
;置片外RAM起始地址
;置传送数据个数
;外部RAM单元内容送A
;传送数据不为0跳转
;传送数据为0,计数器加1
;下一个地址
;地址没找完就继续
;统计结果存入50H单元
;暂停
3-19已知R3和R4中存有一个16位的二进制数,高位在R3中代位在R4
中。
请编程将其求补,并存回原处。
答:
首先假设R3R4中是原码,根据原码求补的方法当最高位(R3的D7位)为0时表示为正数,那么补码与原码相同,当最高位为1时,表明是负数,
负数的补码是最高位不变,其余位取反加1.
MOVA,R3MOVR4,A
JB,NEGMOVA,R3
SJMP$CPLA
ADDCA,#00H
SETB
NEG:
MOVA,R4
CLRC
CPLA
MOVR3,A
ADDA,#01HSJMP$
3-20编写一个程序,把片外RAM从2000H开始存放的10个数传送到片内
RAM301■开始单元。
START:
MOVR0,#30HINCR0
MOVR1,#10HINCDPTR
MOVDPTR,#2000HDJNZR1,LOOP
LOOP:
MOVXA,@DPTRSJMP$
MOV@R0,A
3-21试编程将内部RAM的30H至4FH单元的内容分别传送到外部RAM的
2040H~205FH单元。
INCDPTR
INCR0
DJNZR1,LOOP
START:
MOVR0,#30H
MOVR1,#20H
MOVDPTR,#2040H
LOOP:
MOVA,@R0SJMP$
MOVX@DPTR,A
3-22若外部RAM的(2000H)=X,(2001H=丫,编程实现Z=3X+2丫结果存入内部RAM的20H单元,设Z<=255o
ADDA,R0
MOVR0,AMOV20H,A
3-23试对内部RAM20H单元的内容进行判断,若为正数,转向2100H若为
负数,转向2200H;若为0,转向2300H
START:
MOVA,20H
JB,NEG;为负数
;为0
JNB,POSI
LJMP#2100H
SJMPEEE
NEG:
LJMP#2200H
SJMPEEE
POSI:
LJMP#2300H
SJMPEEE
EEE:
SJMP$
3-24已知30H31H中存有一个16位二进制数,高位在前低位在后。
试编程将它们乘2,再存回原单位中。
START:
MOVA,31H
ADDA,31H
MOV31H,A
MOVA,30H
3-25已知从外部RAM2000H开始的单元中有20个带符号的补码数,试编
程把正数和0取出来存放到内部RAM20开始的存储单元中(负数为作处理)
;需处理的数的个数
;需处理数的起始地址
;用于存储的目标地址
START:
MOVR0,#20HMOVDPTR,#2000HMOVR1,#20H
LOOP:
MOVXA,@DPTR
JB,NEG;负数不需处理
MOV@R1,A
INCR1
NEG:
INCDPTR
DJNZR0,LOOP
SJMP$
第四章汇编语言程序设计
4-1什么叫伪指令?
伪指令与指令有什么区别?
答:
伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码,不影响程序的执行,仅指明在汇编时执行一些特定的操作。
如为程序指定一个存储区、将一些数据、表格常数存放在指定的存储单元、对地址赋用户名等。
指令是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。
51单片机单片机的指令有二种表达方式:
机器码指令和汇编语言指令。
4-2循环程序由哪几部分组成?
答:
由初始化部分、循环处理部分、循环控制部分、循环结束部分这四部分
组成
4-3什么是子程序?
对于子程序设计有什么要求?
答:
一段具有某一特定功能,能被其它程序所调用,调用结束后能自动返回到调用处的程序块就称为子程序。
对子程序设计的要求:
4-4试对下列程序进行人工汇编,并说明此程序的功能。
地址
指令码
ORG1000H
J
ACDL:
MOVR0,#25H
;1000H
78
25
MOVR1,#2BH
;1002H
79
2b
MOVR2,#06H
;1004H
7A
06
CLRC
;1006H
C3
CLRA
;1007H
E4
LOOP:
MOVA,@R0
;1008H
E6
ADDCA,@R1
;1009H
37
DECR0
;100AH
18
DECR1
;100BH
19
DJNZR2,LOOP
;100CH
DA
FA
SJMP$
;100EH
80
FE
END
J
1008H-100EH=-06H其补码为()
2—0FAH
功能:
将25H单及前5个数与2BH单元及前5个数分6组相加,结果丢弃
4-5从内部RAM勺20H单元开始,有15个数据。
试编一程序,把其中的正数、负数分别送到41H和61H开始的存储单元,并分别将正数、负
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 单片机 原理 应用 课后 习题 参考答案 16