单片机原理及应用习题答案第三版 联系客服

发布时间 : 星期五 文章单片机原理及应用习题答案第三版更新完毕开始阅读f8104c1ae65c3b3567ec102de2bd960590c6d981

(IE)=00H:复位后屏蔽所有中断

(IP)=00H:复位后所有中断源都直指为低优先级

P0~P3:锁存器都是全1状态,说明复位后4个并行接口设置为输入口

2-23 51单片机串行口有几种工作方式?这几种工作方式有何不同?各用于什么场合?

●有4种工作方式:方式0、方式1、方式2、方式3

工作方式:方式0移位寄存器方式;方式1、方式2、方式3都是异步通信方式

场合:方式0不用于通信,而是通过外接移位寄存器芯片实现扩展I/O口的功能;方式1用于双机通信;方式2、3主要用于多机通信,也可用于双机通信

第三章参考答案

3-1 何谓寻址方式?51单片机有哪几种寻址方式?这几种方式是如何寻址的?

●所谓寻址方式,就是CPU执行那个一条指令时怎样找到该指令所要求的操作数的方式。

●1)立即寻址:操作数直接出现在指令中,紧跟在操作码的后面,作为指令的一部分与操作码一起存放在程序存储器中,可以立即得到并执行,例如:MOV A,#30H指令中30H就是立即数。这一条指令的功能是执行将立即数30H传送到累加器A中的操作。

2)寄存器寻址:操作数放在寄存器中,在指令中直接以寄存器的名字来表示操作数的地址。例如MOV A,R0,即将R0寄存器的内容送到累加器A中。

3)寄存器间接寻址方式:由指令指出某一寄存器的内容作为操作数地址的寻址方法,例如:MOV A,@R1,将以工作寄存器R1中的内容为地址的片内RAM单元的数据传送到A中去。

4)直接寻址: 指令中直接给出操作数所在的存储器地址,以供取数或存数的寻址方式称为 直接寻址。例如:MOV A,40H指令中的源操作数就是直接寻址,40H为操作数的地址。该指令的功能是把片内RAM地址为40H单元的内容送到A中 5)变址寻址:基地址寄存器加变址寄存器间接寻址

6)相对寻址:相对寻址是以当前程序计数器PC值加上指令中给出的偏移量rel,而构成实际操作数地址的寻址方法。它用于访问程序存储器,常出现在相对转移指令中。 7)位寻址:位寻址是在位操作指令中直接给出位操作数的地址,可以对片内RAM中的128 位和特殊功能寄存器SFR中的93位进行寻址。

3-2 访问片内、片外程序存储器有哪几种寻址方式? ●采用基址寄存器加变址寄存器间接寻址方式 MOVC A,@A+DPTR MOVC A,@A+PC

3-3 访问片内RAM单元和特殊功能寄存器各有哪几种寻址方式?

●访问片内RAM有:立即寻址,寄存器寻址,寄存器间接寻址,直接寻址 ● 特殊功能有:直接寻址

3-4若要完成以下的数据传送,应如何用51的指令来完成。 (1)R0的内容送到R1中。

MOV A, R1

5 / 12

MOV R0,A

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

MOV DPTR,#0020H MOVX A,@DPTR MOV R0,A

3-5 试比较下列每组两条指令的区别 1)MOV A,#24与MOV A,24H 2)MOV A,R0与MOV A,@R0 3)MOV A,@R0与MOVX A,@R0 4)MOV A,@R1与MOVX A,@DPTR

●1)前者为立即寻址,将立即数24H单元的内容送到A中;后者为直接寻址,将24H单元的片内RAM内容送到A中。

2)前者为直接寻址,将R0单元的内容送到A中,后者为寄存器间接寻址,将R0中的内容为地址的片内RAM单元的数据送到A中。

3)前者为寄存器间接寻址,将R0中的内容为地址的片内RAM单元的数据送到A;后者为寄存器间接寻址,将R0中的内容为地址的片外RAM单元的数据送到A中。 4)用R1做地址指针可寻址片内RAM的256个单元,但能访问SFR块,也可8位地址访问片外RAM的低256个地址单元(00~ffH);用DPTR做地址指针,用于访问片外RAM的64KB范围(0000~ffffH)(16位)。 3-6已知(A)= 7AH,( B)= 02H,( R0)= 30H,( 30H)= A5H,( PSW)=80H,写出以下各条指令执行后A和PSW的内容。

(1)XCH A, R0 (A)=30H,(PSW)=00H, (R0)= 7AH, (2)XCH A, 30H (A)=A5H,(PSW)=00H (3)XCH A, @R0 (A)=A5H,(PSW)=00H (4)XCHD A, @R0 (A)=75H,(PSW)=01H (5)SWAP A (A)=A7H,(PSW)=01H (6)ADD A, R0 (A)=AAH,(PSW)=00H (7)ADD A, 30H (A)=1FH,(PSW)=81H (8)ADD A, #30H (A)=AAH,(PSW)=00H (9)ADDC A, 30H (A)=20H,(PSW)=01H (10)SUBB A, 30H (A)=D5H,(PSW)=85H (11)SUBB A, #30H (A)=4AH,(PSW)=01H (12)INC @R0 (A)=7AH,(PSW)=80H; (13)MUL AB (14)DIV AB

3-7 已知(A)=02H,(R1)=7FH,(DPTR)=2FFCH,(SP)=30H,

片内RAM(7FH)=70H,片外RAM(2FFEH)=11H,ROM(2FFEH)=64H,试分别写出以下指令执行后目标单元的结果。 1)MOVX @DPTR,A 2)MOVX A,@R1

3)MOVC A,@A+DPTR 4)PUSH ACC

●1)(2FFEH)=02H 2)(A)=70H

6 / 12

3)(A)=(02H+2FFCH)=(2FFEH)=64H 4)(31H)=02H

3-9 DA A指令有什么作用?怎样使用?

? 这条指令是进行BCD码运算时,跟在ADD或ADDC指令之后,将相加后存放在

累加器中的结果进行修正。 修正的条件和方法为:

若(A0~3)>9或(AC)=1,则(A0~3)+06H→(A0~3); 若(A4~7)>9或(CY)=1,则(A4~7)+06H→(A4~7)。

若以上二条同时发生,或高4位虽等于9 ,但低4位修正后有进位,则应加66H修正。

3-9 设(A)=83H,(R0)=17H,(17H)=34H,分析当执行下面的每条指令后目标单元的内容,及4条指令组成的程序段执行后A的内容是什么? ANL A,#17H ;与 ORL 17H,A ;或 XRL A,@R0 ;异或 CPL A ;取反

ANL A,#17H 10000011与00010111 = 0000 0011 ORL 17H,A 00110100或00000011 = 0011 0111 XRL A,@R0 00110111异或 0000 0011 = 0011 0100 CPL A ~A 1100 1000 CBH

3-10 请写出达到下列要求的逻辑操作的指令,要求不得改变未涉及位的内容 1)使累加器A的低位置‘1’ 2)清累加器A的高4位 3)使A.2和A.3置‘1’ 4)清除A.3、A.4、A.5、A.6 SETB ACC.1; ANL A,#0FH;

ORL A,#00001100B ANL A,#10000111B

3-11 指令LJIMP addr16与AJMP addr11的区别是什么?

? LJIMP addr16是长转移, LCALL的作用就是将addr16直接赋给PC ? AJMP addr11,在当前PC的2KB范围跳转(因为addr11就是2KB), 即PC高

五位不变,低十一位等于addr11。

3-12试说明指令CJNE @R1, #7AH, 10H的作用。若本条指令地址为2500H,其转移地址是多少?

当前地址 2500H。执行该指令后PC为2503H,加上10H后,目标地址是2513H。

3-13下面执行后(SP)=42H, (A) = 40H, (B) =40H ,并解释每条指令的作用。 ORG 2000H ;起始地址为2000H MOV SP,#40H ;(SP)=40H MOV A,#30H ;(A)=30H

LCALL 2500H ;调用2500H子程序 ADD A,#10H ;(A)<—(A)+10,(A)=40H MOV B,A ;(B)=40H HERE:SJMP HERE

7 / 12

ORG 2500H ;起始地址为2500H MOV DPTR,#2009H ;(DPTR)=2009H PUSH DPL ;(SP)=40H+1=41H PUSH DPH ; (SP)=41H+1=42H RET ;返回

3-14已知P1.7= 1, A.0= 0, C= 1, FIRST=1000H, SECOND=1020H,试写出下列指令的执行结果。

(1)MOV 26H, C 1 (2)CPL A.0 1 (3)CLR P1.7 0 (4)ORL C, /P1.7 1 (5)FIRST: JC SECOND

(6)FIRST: JNB A.0, SECOND (7)SECOND: JBC P1.7, FIRST

3-15经汇编后,下列各条语句标号将是什么值? ORG 2000H TABLE: DS 5

WORD: DB 15, 20, 25, 30 (2005H)=15, FANG: EQU 1000H FANG=1000H BEGIN: MOV A, R0

3-16 设fosc=12MHZ,定时器/计数器0的初始化程序和中断服务程序如下: MOV TH0,#0DH MOV TL0,#0D0H MOV TMOD,#01H SETB TR0 :

;中断服务程序 ORG 000BH MOV TH0,#0DH MOV TL0,#0D0H : RETI

问:1)该定时器/计数器工作于什么方式? 2)相应的定时时间或计数值是多少?

3)为什么在中断服务程序中药重置定时器/计数器的初值? ●1)方式1

2)定时时间为:fosc=12MHZ Tcy=1us T=N*Tcy

=(65536-x)*Tcy 定时范围:1~65536

计数值为:N=216 -x=65536-x

计数范围为:1~65536

3)定时器T0的溢出对外无脉冲信号,重置定时器/计数器的初值可以再形成计数脉冲

8 / 12