单片机课后习题答案(2)

2018-12-27 17:42

候,一个机器周期是多长时间?执行一条最长的指令需要多长时间?

时钟周期又称为振荡周期,由单片机内部振荡电路OSC产生,定义为OSC时钟频率的倒数。时钟周期又称为节拍(用P表示)。时钟周期是时序中的最小单位。一个状态有两个节拍,

机器周期定义为实现特定功能所需的时间。MCS-51的机器周期由12个时钟周期构成。 执行一条指令所需要的时间称为指令周期,指令周期是时序中的最大单位。由于机器执行不同指令所需的时间不同,因此不同指令所包含的机器周期数也不尽相同。MCS-51的指令可能包括1~4个不等的机器周期。

当MCS-51的主频为12MHz时,一个机器周期为1?s。执行一条指令需要的最长时间为4?s。

28. 8051单片机复位后,各寄存器的初始状态如何?复位方法有几种?

8051单片机复位后机器的初始状态,即各寄存器的状态:PC之外,复位操作还对其它一些特殊功能寄存器有影响,它们的复位状态如下:

寄存器 PC ACC B PSW SP DPTR P0—P3 TMOD 复位时内容 0000H 00H 00H 00H 07H 0000H FFH ××000000B 寄存器 TCON TL0 TH0 TH1 TH1 SCON SBUF PCON 复位时内容 0×000000B 00H 00H 00H 00H 00H 不确定 0×××0000B 单片机复位方法有:上电自动复位,按键电平复位和外部

脉冲三种方式。

1. 指令格式是由(操作码)和(操作数)所组成,也可能仅由(操作码)组成。

2. 在MCS-51中,PC和DPTR都用于提供地址,但PC是为访问(程序)存储器提供地址,而DPTR是为访问(数据)存储器提供地址。

3. 在变址寻址方式中,以( A )作变址寄存器,以( DPTR )或( PC )作基址寄存器。

4. 假定累加器A中的内容为30H,执行指令1000H:MOVC A,@A+PC后,把程序存储器( 1031H )单元的内容送入累加器A中。

5. 8051执行完MOV A,#08H后,PSW的( D )位被置位。

A:C B:F0 C:OV D:P

6. 指出下列指令中的源操作数的寻址方式

(1)MOV R0,#30H 立即寻址 (2)MOV A,30H 直接寻址

(3)MOV A,@R0 寄存器间接寻址 (4)MOVX A,@DPTR 寄存器间接寻址 (5)MOVC A,@A+DPTR 变址寻址 (6)MOV P1,P2 直接寻址 (7)MOV C,30H 位寻址 (8)MUL AB 寄存器寻址 (9)MOV DPTR,#1234H 立即寻址

(10)POP ACC 寄存器间接寻址

7. 指出下列各指令在程序存储器中所占的字节数

(1)MOV DPTR,#1234H 3字节 (2)MOVX A, @DPTR 1字节

6

(3)LJMP LOOP 3字节 (4)MOV R0,A 1字节 (5)AJMP LOOP 2字节 (6)MOV A,30H 2字节 (7)SJMP LOOP 2字节 (8)MOV B,#30H 2字节

8.8051单片机指令系统按功能可分为几类?具有几种寻址方式?它们的寻址范围如何?

MCS-51单片机指令系统按功能可分为5类: (1)数据传送指令 (2)算术运算指令

(3)逻辑运算和移位指令 (4)控制转移指令

(5)位操作指令

MCS-51单片机的指令系统提供了七种寻址方式,其对应的寻址范围如下表: 寻址方式 立即寻址 直接寻址 寄存器寻址 寄存器间接寻址 变址寻址 相对寻址 位寻址 使用的变量 R0~R7;A、B、DPTR、C @R0、@R1、SP @R0、@R1、@DPTR @A+PC、@A+DPTR PC+偏移量 寻址范围 立即数 程序存储器ROM; 内部RAM低128个字节;特殊功能寄存器SFR 位地址空间 四组通用寄存器,A、B、DPTR、C 内部RAM 外部RAM 程序存储器 程序存储器 内部RAM低128B位寻址区 可位寻址的特殊功能寄存器SFR位 9.访问特殊功能寄存器和外部数据存储器应采用哪种寻址方式? 访问特殊功能寄存器,应采用直接寻址、位寻址方式。 访问外部数据存储器,应采用寄存器间接寻址方式。 在0~255B范围内,可用寄存器R0、R1间接寻址:

MOVX A,@R0 或 MOVX A,@R1 MOVX @R0,A 或 MOVX @R1,A

在0~64KB范围内,可用16位寄存器DPTR间接寻址:

MOVX A,@DPTR MOVX @DPTR,A

10.“DA A”指令的作用是什么?怎样使用?

这条指令是在进行BCD码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对BCD码的加法运算结果自动进行修正的,使其仍为BCD码表达形式。

在计算机中,遇到十进制调整指令时,中间结果的修正是由ALU硬件中的十进制修正电路自动进行的。用户不必考虑何时该加“6”,使用时只需在上述加法指令后面紧跟一条“DA A”指令即可。

11.片内RAM 20H~2FH单元中的128个位地址与直接地址00H~7FH形式完全相同,如何在指令中区分出位寻址操作和直接寻址操作?

位寻址是直接寻址方式的一种。虽然内部RAM位寻址区的位地址范围00H~7FH与低128个单元的单元地址范围00H~7FH形式完全相同,但是在应用中可以通过以下的方法区分:

1. 通过指令操作码(指令的类型)区分:

位操作只有17条指令,位寻址的操作只适用于下列位指令,而直接寻址操作对这些指令是无效的。

MOV C,bit CPL bit (C) JB bit,rel

7

MOV bit,C ORL C,bit (/bit) JNB bit,rel CLR bit (C) ANL C,bit (/bit) JC rel SETB bit (C) JBC bit,rel JNC rel

位操作只有MOV、 CLR 、SETB、 CPL 、ORL、 ANL 、JB 、JNB、 JBC、 JC、 JNC几种操作码,其中:JB、JNB、JBC、JC、JNC是位寻址特有的。

2. 当指令操作码一样时,可通过操作数的表现形式来区分。直接位地址的表示方法有: (1)直接使用位地址形式。如:MOV 00H, C

(2)字节地址加位序号的形式。如:MOV 20H.0, C (3)位的符号地址(位名称)的形式。如:ANL C, P

(4)字节符号地址(字节名称)加位序号的形式。如:CPL PSW.6 3. 可通过指令中的累加器区分:

位操作中的累加器为C,单元操作中的累加器为A。 12.SJMP, AJMP 和LJMP指令在功能上有何不同?

指令的转移范围不同。

SJMP是256B范围内的相对转移指令,AJMP是2KB范围内的无条件短跳转指令,LJMP是64KB范围内的无条件长跳转指令。

13.在“MOVC A, @A+DPTR”和“MOVC A, @A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址? 使用中有何不同?

使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。

使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。

14.设片内RAM中的(40H)=50H,写出当执行下列程序段后寄存器A和R0,以及片内RAM中50H和51H单元的内容为何值?

MOV A, 40H MOV R0, A MOV A, #00 MOV @R0, A MOV A, #30H

MOV 51H, A

结果为:(A)=30H (R0)=50H (50H)=00H (51H)=30H 15.设堆栈指针(SP)=60H,片内RAM中的(30H)=24H,(31H)=10H。执行下列程序段后,61H, 62H, 30H, 31H, DPTR及SP中的内容将有何变化?

PUSH 30H PUSH 31H POP DPL POP DPH MOV 30H, #00H MOV 31H, #0FFH

解:

结果为: 61H、62H单元为堆栈单元,其内容已被弹出栈。 (30H)=00H (31H)=0FFH (DPTR)=2410H (SP)=60H 16.在8051的片内RAM中,已知(20H)=30H,(30H)=40H,(40H)=50H,(50H)=55H。分析下面各条指令,说明源操作数的寻址方式,分析按顺序执行各条指令后的结果。

MOV A, 40H MOV R0, A MOV P1, #0F0H MOV @R0, 20H MOV 50H, R0 MOV A, @R0 MOV P2, P1

8

解:

指令 源操作数的寻址方式 执行指令后的结果

MOV A,40H 直接寻址 (A)=50H MOV R0,A 寄存器寻址 (R0)=50H MOV P1,#80H 立即寻址 (P1)=80H MOV @R0,20H 寄存器间接寻址 (50H)=30H MOV DPTR,#2000H 立即寻址 (DPTR)=2000H MOV 40H,30H 直接寻址 (40H)=40H MOV R0,30H 直接寻址 (R0)=40H MOV D0H,R0 直接寻址 (D0H)=40H MOV 10H,#10H 立即寻址 (10H)=10H MOV A,@R0 寄存器间接寻址 MOV P2,P1 直接寻址 17.完成以下的数据传送过程

(1)R1的内容传送到R0。

(2)片外RAM 20H单元的内容送R0。

(3)片外 RAM 20H单元的内容送片内RAM 20H单元。 (4)片外RAM 1000H单元的内容送片内 RAM 20H单元。 (5)ROM 2000H单元的内容送R0。

(6)ROM 2000H单元的内容送片内RAM 20H单元。 (7)ROM 2000H单元的内容送片外RAM 20H单元。 解:

(1)R1的内容传送到R0 ; MOV A, R1 MOV R0, A

(2)片外RAM 20H单元内容送R0 ; MOV R1, #20H MOVX A, @R1 MOV R0, A

(3)片外 RAM 20H单元的内容送片内RAM 20H单元; MOV R0, #20H MOVX A, @R0 MOV 20H, A

(4)片外RAM 1000H单元的内容送片内 RAM 20H 单元; MOV DPTR, #1000H MOVX A, @DPTR MOV 20H, A (5)ROM 2000H单元的内容送R0单元; CLR A

MOV DPTR, #2000H MOVC A, @A+DPTR MOV R0, A

(6)ROM 2000H 单元的内容送片内RAM 20H单元; CLR A

MOV DPTR, #2000H MOVC A, @A+DPTR

MOV 20H, A

(7)ROM 2000H单元的内容送片外RAM 20H单元。 CLR A

MOV DPTR, #2000H MOVC A, @A+DPTR MOV R0, #20H MOVX @R0, A

(A)=50H (P2)=80H

9

18.设有两个4位BCD码,分别存放在片内RAM的23H, 22H单元和33H, 32H单元中,求它们的和,并送入43H, 42H单元中去。(以上均为低位在低字节,高位在高字节)。 解: ORG 0000H

LJMP START ORG 0030H START: MOV A,22H ADD A,32H DA A MOV 42H,A MOV A,23H ADDC A,33H DA A MOV 43H,A SJMP $

END

19.编程将片内RAM的40H~60H单元中内容送到片外RAM以3000H开始的单元中。并将原片内RAM数据块区域全部清0。 解: ORG 0000H MOVX @DPTR,A

LJMP MAIN CLR A ORG 0030H MOV @R1,A

INC R1 MAIN: MOV SP, #60H

INC DPTR MOV R7,#21H

DJNZ R7,LOOP MOV R1,#40H

SJMP $ MOV DPTR,#3000H

END

LOOP: MOV A,@R1

20.编程计算片内RAM区30H~37H 的8个单元中数的算术平均值,结果存放在3AH单元中。

解: ORG 0000H DJNZ R3,LP2

LJMP MAIN MOV R3,#03H ORG 0030H CLR C MAIN: MOV R0,#30H LP3:MOV A,R1 MOV R1,#00H RRC A MOV R2,#00H MOV R1,A MOV R3,#08H MOV A,R2

RRC A LP2: MOV A,@R0

MOV R2,A ADD A,R2

DJNZ R3,LP3 MOV R2,A

MOV 3AH,R2 JNC LP1

INC R1 SJMP $

END LP1: INC R0

21.编写计算下式的程序,设乘积的结果均小于255。A, B值分别存放在片外RAM的2001H和2002H单元中,结果存于2000H单元中。 (A+B)×(A+B)+10 若(A+B)×(A+B)<10

Y= (A+B)×(A+B) 若(A+B)×(A+B)=10

(A+B)×(A+B)-10 若(A+B)×(A+B)>10

解:

ORG 0000H MOV DPTR,#2002H

LJMP START MOVX A,@DPTR ORG 0030H ADD A,30H START: MOV DPTR,#2001H MOV B,A MOVX A,@DPTR MUL AB MOV 30H,A MOV R1,A

10


单片机课后习题答案(2).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:2013年申论热点

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: