好文档 - 专业文书写作范文服务资料分享网站

单片机课后重要习题答案

天下 分享 时间: 加入收藏 我要投稿 点赞

3.16 8051芯片需要外扩4KB程序存储器,要求地址范围为1000~1FFFH,以便和内部程序存储器

地址相衔接。所用芯片除地址线和数据线外,只有一个片选操纵端/CS,画出扩展系统的连接图。

解:

P2.4P2.3P2.2P2.1P2.0/CEA11A10A9A88051P0.7~P0.0ALE273274LS373GA7~A0D7~D0/OE

EA地/PSEN3.17 在图3.13中,假设因某种缘故,P2.二、P2.一、P2.0误接为P2.五、P2.4、P2.3,这时所接的EPROM寻址区是如何散布的? 解:

误接后,A10,A9,A8那么别离与P2.5,P2.4,P2.3相接,

P2.7 P2.6 P2.5 P2.4 P2.3 P2.2 P2.1 P2.0 P0.7~P0.0

* * 0 0 0 * * * 00000000—11111111 * * 0 0 1 * * * 00000000—11111111 * * 0 1 0 * * * 00000000—11111111 * * 0 1 1 * * * 00000000—11111111 * * 1 0 0 * * * 00000000—11111111 * * 1 0 1 * * * 00000000—11111111 * * 1 1 0 * * * 00000000—11111111 * * 1 1 1 * * * 00000000—11111111 因此地址散布为:

0000H~00FFH, 0800H~08FFH, 1000H~10FFH, 1800H~18FFH, 2000H~20FFH, 2800H~28FFH, 3000H~30FFH, 3800H~38FFH

4.8 编写程序,进行两个16位数的减法:6F5DH~13B4H,结果存至内部RAM的30H和31H单元。

30H单元存差的低8位。 解:

MOV A, #5DH

CLR C

SUBB A, #0B4H MOV 30H, A MOV A, #6FH SUBB A, #13H MOV 31H, A SJMP $

4.9 编写程序,假设累加器内容别离知足一下条件,那么程序转至LABEL存储

单元。

(1)A≥10 (2) A>10 (3) A≤10 (4) A<10 解:

(1) CLR C

CJNE A, #10, LOOP SJMP LABEL

LOOP: JNC LABEL SJMP $

(2) CJNE A, #10, LOOP

SJMP $

LOOP: JNC LABEL SJMP $

(3) CJNE A, #10, LOOP

SJMP LABEL

LOOP: JC LABEL SJMP $

(4) CJNE A, #10, LOOP

SJMP $

LOOP: JC LABEL SJMP $

4.10 已知SP=25H,PC=2345H,(24H)=12H,(25H)=34H,(26H)=56H,问在这种条件下执行RET指令以后,SP,PC别离是多少? 解:

在执行RET指令后说明是一个子函数执行终止,那么进行POP操作,于是SP在执行RET指令后变成23H,因为(25H)=34H, (24H)=12H,因此PC=3412H,因为在进入堆栈的时候是先压入低8位,然后进入堆栈的是高8位,出堆栈的时候正好相反。因此最后结果是:SP=23H,PC=3412H

4.11 假设SP=25H,PC=2345H,标号LABEL所在的地址为3456H,问执行长挪用指令 LCALL LABEL 以后,堆栈指针和堆栈内容发生什么转变?PC是多少? 解:

在进行长挪用指令 LCALL

LABEL,那么要进行堆栈爱惜,而LCALL指令是三字节的指令,因此PC在进入堆栈之前变成2348H,在执行完长指令LCALL以后,PC进入子函数程序,那么进入之前的地址要第一爱惜起来,因此SP=27H,堆栈的内容(26H)=48H,(27H)=23H,现在PC将要指向子函数LABEL的入口地址,即PC=3456H。

4.12 在4.11中的LCALL指令可否直接换成“ACALL LABEL”指令?什么缘故? 解:

不能,因为ACALL是短挪用指令,子程序挪用的范围为围绕挪用指令的2KB内,即它们的地址高5位应该是相同的。或说,在执行ACALL指令时,子程序入口地址的高5位是不能任意定的,只能由ACALL指令所在的位置来确信,例如4.11在挪用子函数之前的地址为2345H,即高5位是00100,因此ACALL挪用的地址范围为:2000H——27FFH,而LABEL所在的地址为3456H已经超出挪用范围,因此不能替换。

4.13 试编写程序,查找在内部RAM的20H~50H单元中是不是有0AAH这一数据,假设有这一数据,那么将51H单元置为01H,假设未找到,那么使51H单元置0。 解:

参考程序如下:

M0V R0,#31H M0V R1,#20H

LOOP: MOV A,@R1

CLR C

CJNE A,#0AAH,LOOP1 SJMP L00P2

LOOP1: INC R1

DJNZ R0,LOOP

M0V A,#00H SJMP LOOP3

LOOP2: MOV A,#01H LOOP3: MOV 51H,A SJMP $

4.14 试编写程序,查找在内部RAM的20H~50H单元内部显现00H的次数,并将查找的结果存入51H单元。 解:

参考程序如下:

MOV R0,#31H MOV R1,#20H MOV R2,#00H

LOOP: MOV A,@R1

CJNE A,#00H,LOOP1 INC R2

LOOP1: INC R1

DJNZ R0,LOOP

单片机课后重要习题答案

3.168051芯片需要外扩4KB程序存储器,要求地址范围为1000~1FFFH,以便和内部程序存储器地址相衔接。所用芯片除地址线和数据线外,只有一个片选操纵端/CS,画出扩展系统的连接图。解:P2.4P2.3P2.2P2.1P2.0/CEA11A10A9A88051P0.7~P0.0ALE273274LS373GA7~A0D7~D0/OE
推荐度:
点击下载文档文档为doc格式
26wxh7muyt6zh7s4eqk6667gj1yjjc01chl
领取福利

微信扫码领取福利

微信扫码分享