单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx

上传人:b****5 文档编号:3953306 上传时间:2022-11-26 格式:DOCX 页数:29 大小:82.57KB
下载 相关 举报
单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx_第1页
第1页 / 共29页
单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx_第2页
第2页 / 共29页
单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx_第3页
第3页 / 共29页
单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx_第4页
第4页 / 共29页
单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx_第5页
第5页 / 共29页
点击查看更多>>
下载资源
资源描述

单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx

《单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx》由会员分享,可在线阅读,更多相关《单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx(29页珍藏版)》请在冰豆网上搜索。

单片机原理及应用课后习题参考答案16章DOCword文档良心出品.docx

单片机原理及应用课后习题参考答案16章DOCword文档良心出品

《单片机原理及应用》习题答案

第一章计算机基础知识

1-1微型计算机主要由哪几部分组成?

各部分有何功能?

答:

一台微型计算机由中央处理单元(CPU)、存储器、I/O接口及I/O设备等组成,相互之间通过三组总线(Bus):

即地址总线AB、数据总线DB和控制总线CB来连接。

CPU由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。

存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。

按其功能可分为RAM和ROM。

输入/输出(I/O)接口是CPU与外部设备进行信息交换的部件。

总线是将CPU、存储器和I/O接口等相对独立的功能部件连接起来,并传送信息的公共通道。

1-3什么叫单片机?

其主要由哪几部分组成?

答:

单片机(SingleChipMicrocomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O接口电路等主要部件集成在一块半导体芯片上的微型计算机。

1-4在各种系列的单片机中,片内ROM的配置有几种形式?

用户应根据什么原则来选用?

答:

单片机片内ROM的配置状态可分四种:

(1)片内掩膜(Mask)ROM型单片机(如8051),适合于定型大批量应用产品的生产;

(2)片内EPROM型单片机(如8751),适合于研制产品样机;

(3)片内无ROM型单片机(如8031),需外接EPROM,单片机扩展灵活,适用于研制新产品;

(4)EEPROM(或FlashROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。

1-5写出下列各数的另两种数制的表达形式(二、十、十六进制)

1100010

1001110

01000111

10

01001001

111111

01101100

11101

101

11010111

98

20039

585

16236

29

1495

62H

4E47H

249H

3F6CH

1D

5D7

1-6写出下列各数的BCD参与:

59:

01011001,1996:

0001100110010110,4859.2:

010*********

389.41:

001110001001.01000001

第二章MCS-51单片机的硬件结构

2-18052单片机片内包含哪些主要逻辑功能部件?

答:

8052单片机片内包括:

8位中央处理器CPU一个

片内振荡器及时钟电路

256B数据存储器RAM。

8KB片内程序存储空间ROM

21个特殊功能寄存器SFR

4个8位并行I/O端口(32条线)

1个可编程全双工串行口

可寻址64KB的外部程序存储空间和外部数据存储空间

3个16位的定时器/计数器

6个中断源、2个优先级嵌套中断结构

2-28052的存储器分哪几个空间?

如何区别不同空间的寻址?

答:

8052的存储器分为6个编址空间:

片内ROM的容量为8KB,其地址为0000H~1FFFH;

可扩展片外ROM的容量为64KB,其地址为0000H~FFFFH;

片内RAM的容量为256B,其地址为00H~FFH分为二块:

地址00H~7FH共128B为片内RAM低区,

另128B为片内RAM高区,其地址空间为80H`FFH,其地址空间与SFR功能寄存器地址重叠;

可扩展片外RAM的容量为64KB,其地址为0000H~1FFFH;

特殊功能寄存器SFR的空间为128B,其地址为80H~FFH,但实际只定义了26B单元,这26B单元分散在80H`F0H。

程序存储器和数据存储器在逻辑上是完全分开的。

CPU通过指令MOVC访问程序存储器。

当8052第31脚

接高电平时,CPU将从片内程序存储器0000H单元开始执行,当PC值超出片内程序存储空间,即大于1FFFH时,会自动转向片外程序存储空间。

接低电平时,CPU将从片外程序存储器ROM的0000H单元开始执行。

CPU通过MOV指令访问片内数据存储空间RAM,低区128B地址空间00H~7FH中地址为00H~1FH这32个单元分为4个工作寄存器组,分别用R0~R7表示,通过工作寄存器指令进行访问。

片内RAM中的20H~2FH单元除可作为一般字节寻址单元使用外,这16个单元共128位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范围为00H`7FH;对片内高区128B寻址只能用寄存器间接寻址,而对特殊功能寄存器建起必须使用直接寻址。

CPU通过指令MOVX访问片外数据存储器。

2-3DPTR的作用是什么?

它由哪几个寄存器组成?

答:

相对于地址指针,DPTR被称为数据指针,但实际上DPTR中存放的是一个16位的地址,作为访问程序存储器和外部数据存储器的地址指针。

当对64KB外部数据存储器空间寻址时,作为间址寄存器使用,而在访问程序存储器时,作为基址寄存器使用。

DPTR是一个16位的特殊功能寄存器,由两个8位寄存器DPH、DPL组成,使用SFR中的82H和83H单元。

2-4简述布尔处理存储器的空间分配。

答:

在单片机中位处理又称布尔处理,允许按位处理的存储器称为布尔处理存储器。

其地址空间由二部分构成:

一部分是片内RAM中字节地址为20H~2FH的16字节的128个位,这些位编址为00H`7FH;另一部分在特殊寄存器中,其地址码能被8整除的12个特殊功能寄存器可以按位寻址,但其中4个未定义,一共有92位可按位寻址。

这二部分结合起来形成一个具有220位的位寻址空间。

2-58052单片机设置4组工作寄存器,如何选择确定和改变当前工作寄存器?

答:

8052片内数据存储器的00H~1FH这32个单元分为4级作为4个工作寄存器第0组地址00H`07H,第一组08H~0FH,第二组10H~17H,第3组18H~1FH。

每个工作寄存器都有8个单元,分别用R0~R7表示。

4组寄存器中每一组都可能被选为CPU的工作寄存器,这是通过程序状态字PSW的PSW.3(RS0)和PSW.4(RS1)两位的状态来选择决定的。

见下表:

PSW.4(RS1)

PSW.3(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的作用是什么?

常用的状态标志位有哪些位?

作用分别是什么?

答:

PSW是一个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。

PSW.1:

保留位。

8051中未定义。

P:

奇偶校验标志位。

每条指令执行完后,该位始终跟踪累加器A中1的数目的奇偶性。

如果A中有奇数个1,则P=1;否则P=0。

2-78052单片机的

引脚有何功能?

在使用8032时,

引脚就如何处理?

答:

8052单片机的31脚为

为访问外部或内部程序存储器控制信号。

引脚接高电平且PC值小于1FFFH时,CPU访问内部程序存储器读取指令,当

引脚接低电平时,CPU只访问外部等量齐观存储器读取指令。

在8032芯片中没有内部程序存储器,因此,8032芯片的31脚

只能接地。

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`0FFH)128B只能采用寄存器间接寻址,而对特殊功能寄存器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个机器周期。

第三章MCS-51单片机指令系统

3-1指出下列每一条指令的寻址方式及其完成的操作。

MOV2FH,#40H;立即寻址,将40H移入片内2FH单元

MOVA,2FH;直接寻址,将片内2FH单元的数移入累加器A

MOVR1,#2FH;立即寻址,将2FH移入当前寄存器组的R1单元

MOVA,@R1;寄存器间接寻址,将寄存器R1中所存地址中的值移入累加器A

MOV2FH,A;隐含寻址,将累加器A中的值移入片内2FH单元

3-2内部RAM的4FH单元,可用哪几种寻址方式?

分别举例说明。

答:

直接寻址:

MOVR1,4FH

间接寻址:

MOVR1,#4FH

寄存器间接寻址:

MOVA,@R1

3-3指出下列各条指令中,45H代表什么?

MOVA,#45H;数值

MOVA,45H;源地址

MOV45H,46H;目标地址

MOV45H,#45H;目标地址和数值

MOVC,45H;源地址

3-4已知:

(A)=7AH,(R0)=30H,(30H)=0A5H,(PSW)=80H,请写出下列各条指令的执行结果:

答:

PSW的各位为11110000,即Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=0

(1)SUBBA,30H

结果:

(A)=D4H,CY=1,AC=0,OV=1,P=0

(2)SUBBA,#30H

结果:

(A)=49H,CY=0,AC=0,OV=0,P=1

(3)ADDA,R0

结果:

(A)=AAH,CY=0,AC=0,OV=1,P=0

(4)ADDA,30H

结果:

(A)=1FH,CY=1,AC=0,OV=0,P=1

(5)ADDA,#30H

结果:

(A)=AAH,CY=0,AC=0,OV=1,P=0

(6)ADDCA,30H

结果:

(A)=20H,CY=1,AC=1,OV=0,P=1

(7)SWAPA

结果:

(A)=A7H,对标志位无影响

(8)XCHDA,@R0

结果:

(A)=75H,(30H)=AAH,(R0)=AAH,P=1

(9)XCHA,30H

结果:

(A)=0A5H,(30H)=7AH,P=0

(10)XCHA,R0

结果:

(A)=30H,(R0)=7AH,P=0

(11)MOVA,@R0

结果:

(A)=0A5H,P=0

(12)XCHA,@R0

结果:

(A)=0A5H,(30H)=7AH,P=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)=52H01110101(753052H)

MOVA,#70H;(A)=70H01110100(7470H)

MOVA,30H;(A)=52H11100101(E530H)

MOVR0,#30H;(R0)=30H10101000(7830H)

MOVA,@R0;A=52H11100010(E6H)

3-7分析下列指令的执行结果,并写出每条指令的机器码。

MOVA,#70H;(A)=70H01110100(74H)

MOVDPTR,#2030H;(DPTR)=2030H10010000(90H)

MOVX@DPTR,A;(2030H)=70H11110000(F0H)

MOV30H,#40H;(30H)=40H01110101(75H)

MOVR0,#30H;(R0)=30H01111000(78H)

MOVA,@R0;(A)=40H11100110(E6H)

3-8设R0的内容为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的内容。

ANLA,#17H;(A)=00000001

ORL20H,A;(20H)=00110101

XRLA,@R0;(A)=00110100

CPLA;(A)=11001011

结果:

(A)=CBH

3-10用指令实现下述数据传送:

(1)内部RAM20H单元送内部RAM40H单元。

答:

MOV40H,20H

(2)外部RAM20H单元送R0寄存器。

答:

MOVR1,#20HMOVXA,@R1MOVR0,A

(3)外部RAM20H单元送内部RAM20H单元

答:

MOVR1,#20HMOVXA,@R1MOV20H,A

(4)外部RAM1000H单元送内部RAM20H单元

答:

MOVDPTR,#1000HMOVXA,@DPTRMOV20H,A

(5)外部ROM1000H单元送内部RAM20H单元。

答:

MOVDPTR,#1000HMOVA,#00HMOVCA,@A+DPTRMOV20H,A

(6)外部ROM1000H单元送外部RAM20H单元。

答:

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

(A)<=10

CJNEA,#10H,LABJNZLABELMOVR0,A

LAB:

JNCLABELMOVA,#10

............CJNEA,R0,LAB

LABEL:

LABEL:

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),SP←SP-1,PCL←(SP),SP←SP-1

3-16若(sp)=25H,(PC)=2345H,标号LABEL所在的地址为3456H,问执行调用指令“LCALLLABEL”后,堆栈指针和堆栈内容发生什么变化?

(PC)的值等于什么?

答:

最后堆栈指针SP=27H。

堆栈指针SP=26H处SP内容为45H,指针SP=27H处内容为23H。

最后程序计数器指针PC=3456H。

执行LCALL后,PC←PC+3,SP←SP+1,(SP)←PCL,SP←SP+1,(SP)←PCH,PC←addr16。

3-17试编写程序,查找在内部RAM的20H~50H单元中是否有0AAH这一数据。

若有,则将51H单元置01H,若未找到,则将51H单元置00H。

MOV51H,#00H;先设没找到

MOVR0,#20H;起始地址

LOOP:

MOVA,@R0;取出数字

CJNEA,#0AAH,NEXT;不相等就跳转

INC51H;相等将51单元置1

SJMPEEE;找到转去结束

NEXT:

INCR0;下一个地址

CJNER0,#51H,LOOP;地址没找完就继续

EEE:

SJMP$;暂停

3-18试编写程序,统计在外部RAM2000H~205FH单元中出现00H的次数,并将统计结果丰收入内部RAM50H单元。

MOVR0,#00H;RO设为计数器,初始为0

MOVDPTR,#2000H;置片外RAM起始地址

MOVR1,#60H;置传送数据个数

LOOP:

MOVXA,@DPTR;外部RAM单元内容送A

JNZNEXT;传送数据不为0跳转

INCR0;传送数据为0,计数器加1

NEXT:

INCDPTR;下一个地址

DJNZR1,LOOP;地址没找完就继续

MOV50H,R0;统计结果存入50H单元

SJMP$;暂停

3-19已知R3和R4中存有一个16位的二进制数,高位在R3中代位在R4中。

请编程将其求补,并存回原处。

答:

首先假设R3、R4中是原码,根据原码求补的方法当最高位(R3的D7位)为0时表示为正数,那么补码与原码相同,当最高位为1时,表明是负数,负数的补码是最高位不变,其余位取反加1.

MOVA,R3

JBACC.7,NEG

SJMP$

NEG:

MOVA,R4

CPLA

CLRC

ADDA,#01H

MOVR4,A

MOVA,R3

CPLA

ADDCA,#00H

SETBACC.7

MOVR3,A

SJMP$

3-20编写一个程序,把片外RAM从2000H开始存放的10个数传送到片内RAM30H开始单元。

START:

MOVR0,#30H

MOVR1,#10H

MOVDPTR,#2000H

LOOP:

MOVXA,@DPTR

MOV@R0,A

INCR0

INCDPTR

DJNZR1,LOOP

SJMP$

3-21试编程将内部RAM的30H至4FH单元的内容分别传送到外部RAM的2040H~205FH单元。

START:

MOVR0,#30H

MOVR1,#20H

MOVDPTR,#2040H

LOOP:

MOVA,@R0

MOVX@DPTR,A

INCDPTR

INCR0

DJNZR1,LOOP

SJMP$

3-22若外部RAM的(2000H)=X,(2001H)=Y,编程实现Z=3X+2Y,结果存入内部RAM的20H单元,设Z<=255。

START:

MOVDPTR,#2000H

MOVXA,@DPTR

MOVB,#03H

MULAB

MOVR0,A

INCDPTR

MOVXA,@DPTR

ADDA,A

ADDA,R0

MOV20H,A

3-23试对内部RAM20H单元的内容进行判断,若为正数,转向2100H若为负数,转向2200H;若为0,转向2300H。

START:

MOVA,20H

JBACC.7,NEG;为负数

JNBACC.7,POSI;为0

LJMP#2100H

SJMPEEE

NEG:

LJMP#2200H

SJMPEEE

POSI:

LJMP#2300H

SJMPEEE

EEE:

SJMP$

3-24已知30H、31H中存有一个16位二进制数,高位在前低位在后。

试编程将它们乘2,再存回原单位中。

START:

MOVA,31H

ADDA,31H

MOV31H,A

MOVA,30H

ADDCA,30H

MOV30H,A

SJMP$

3-25已知从外部RAM2000H开始的单元中有20个带符号的补码数,试编程把正数和0取出来存放到内部RAM20H开始的存储单元中(负数为作处理)。

START:

MOVR0,#20H;需处理的数的个数

MOVDPTR,#2000H;需处理数的起始地址

MOVR1,#20H;用于存储的目标地址

LOOP:

MOVXA,@DPTR

JBACC.7,NEG;负数不需处理

MOV@R1,A

INCR1

NEG:

INCDPTR

DJNZR0,LOOP

SJMP$

第四章汇编语言程序设计

4-1什么叫伪指令?

伪指令与指令有什么区别?

答:

伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码,不影响程序的执行,仅指明在汇编时执行一些特定的操作。

如为程序指定一个存储区、将一些数据、表格常数存放在指定的存储单元、对地址赋用户名等。

指令是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。

51单片机单片机的指令有二种表达方式:

机器码指令和汇编语言指令。

4-2

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 小学教育 > 数学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1