分享
分享赚钱 收藏 举报 版权申诉 / 10

类型单片机原理部分课后习题解.doc

  • 上传人:精品资料
  • 文档编号:8350825
  • 上传时间:2019-06-21
  • 格式:DOC
  • 页数:10
  • 大小:352KB
  • 配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    单片机原理部分课后习题解.doc
    资源描述:

    1、3.16 8051芯片需要外扩 4KB程序存储器,要求地址范围为 10001FFFH,以便和内部程序存储器地址相衔接。所用芯片除了地址线和数据线外,只有一个片选控制端/CS,画出扩展系统的连接图。解:8051E A地P 2 . 4P 2 . 3P 2 . 2P 2 . 1P 2 . 0P 0 . 7 P 0 . 0A L E/ P S E N2 7 3 2/ C EA 1 1A 1 0A 9A 8A 7 A 0D 7 D 0/ O E7 4 L S 3 7 3G3.17 在图 3.13中,若因某种原因,P2.2、P2.1、P2.0 误接为 P2.5、P2.4、P2.3,这时所接的 EPROM寻

    2、址区是如何分布的?解:误接后,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.7P0.0* * 0 0 0 * * * 0000000011111111* * 0 0 1 * * * 0000000011111111* * 0 1 0 * * * 0000000011111111* * 0 1 1 * * * 0000000011111111* * 1 0 0 * * * 0000000011111111* * 1 0 1 * * * 0000000011111111* * 1 1 0 * *

    3、 * 0000000011111111* * 1 1 1 * * * 0000000011111111所以地址分布为:0000H00FFH, 0800H08FFH, 1000H10FFH, 1800H18FFH, 2000H20FFH,2800H28FFH, 3000H30FFH, 3800H38FFH4.8 编写程序,进行两个 16位数的减法:6F5DH13B4H,结果存至内部 RAM的 30H和 31H单元。30H 单元存差的低 8位。解:MOV A, #5DHCLR CSUBB A, #0B4HMOV 30H, AMOV A, #6FHSUBB A, #13HMOV 31H, ASJMP

    4、 $4.9 编写程序,若累加器内容分别满足一下条件,则程序转至 LABEL存储单元。(1)A10 (2) A10 (3) A10 (4) A10解:(1) CLR CCJNE A, #10, LOOPSJMP LABELLOOP: JNC LABELSJMP $(2) CJNE A, #10, LOOPSJMP $LOOP: JNC LABELSJMP $(3) CJNE A, #10, LOOPSJMP LABELLOOP: JC LABELSJMP $(4) CJNE A, #10, LOOPSJMP $LOOP: JC LABELSJMP $4.10 已知 SP=25H,PC=2345H

    5、,(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=3412H4.11 若 SP=25H,PC=2345H,标号 LABEL所在的地址为 3456H,问执行长调用指令 LCALL LABEL 之后,堆栈指针和堆栈内容发生什么

    6、变化?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位应该是相同的。或

    7、者说,在执行 ACALL指令时,子程序入口地址的高 5位是不能任意定的,只能由 ACALL指令所在的位置来确定,例如 4.11在调用子函数之前的地址为2345H,即高 5位是 00100,所以 ACALL调用的地址范围为:2000H27FFH,而 LABEL所在的地址为 3456H已经超出调用范围,所以不能替换。4.13 试编写程序,查找在内部 RAM的 20H50H单元中是否有 0AAH这一数据,若有这一数据,则将 51H单元置为 01H,若未找到,则使 51H单元置 0。解:参考程序如下:M0V R0,#31HM0V R1,#20HLOOP: MOV A,R1CLR CCJNE A,#0A

    8、AH,LOOP1SJMP L00P2LOOP1: INC R1DJNZ R0,LOOPM0V A,#00HSJMP LOOP3LOOP2: MOV A,#01HLOOP3: MOV 51H,ASJMP $4.14 试编写程序,查找在内部 RAM的 20H50H单元内部出现 00H的次数,并将查找的结果存入 51H单元。解:参考程序如下:MOV R0,#31HMOV R1,#20HMOV R2,#00HLOOP: MOV A,R1CJNE A,#00H,LOOP1INC R2LOOP1: INC R1DJNZ R0,LOOPM0V 51H,R2SJMP $5.6 从 20H单元开始存放一组带符号

    9、数,其数目已经存在 1FH单元。要求统计出其中大于0,等于 0和小于 0的数的个数,并把统计结果分别存入 ONE,TWO,THREE 三个单元。解:参考程序如下:ONE DATA #1CHTWO DATA #1DHTHREE DATA #1EHMOV ONE,#00HMOV TWO,#00HMOV THREE,#00HMOV R0,#20HMOV R1,1FHMOV A,R1 /*判断是否存有数*/JZ FINISHILOOP: MOV A,R0CLR CCJNE A,#00H,LOOP1INC TWOSJMP LOOP3LOOP1: JNC LOOP2 /*A0时*/INC THREE /*

    10、A9)LOOP1: ADD A,#30HMOV 20H,ASJMP $REL: MOV 20H,#0FFHSJMP $7.1 用 8031单片机的 P1口和微型打印机连接以输出数据。数据传送采用中断方式。现要把外部数据 RAM中从 20H单元开始的 100个数据送到打印机中去打印。试写出有关的程序,包括主程序和中断服务程序。解:本题采用中断方式,用 ACK加到 INTO作为中断请求信号,用一个 4输入译码器进行部分地址译码,系统的硬件连接图如下图所示:D 0.D 7Q 0.Q 4Q 5Q 6Q 7译码器Y 0.Y 1 5P 0 . 0.P 0 . 7/ S T B/ A C KD B 0.D

    11、B 7微型打印机E/ W R/ I N T 08 0 3 1A L EE A 1地锁存器主程序:SETB EASETB EX0SETB PX0SETB IT0MOV RO,#20HMOV R1,#0F0HMOV R2,#99MOVX A,R0MOVX R1,ALOOP: SJMP $中断服务程序:ORG 0003HLJMP INT0INT0: PUSH PSWPUSH ACCINC R0MOVX A,R0MOVX R1,ADEC R2MOV A,R2JNZ NEXTCLR EXONEXT: POP ACCPOP PSWRETI7.3 用 8255芯片扩展单片机的 I/0口。8255 的 A口用

    12、做输入,A 口的每一位接一个开关,用 B口作为输出,输出的每一位接一个显示发光二极管。现要求某个开关接 1时,相应位上的发光二极管就亮(输出为 0) ,试编写相应的程序。/ R D/ W RR E S E T8031P 0 . 7.P 0 . 0A L E/ E A7 4 L S 3 7 3D 7.D 0Q 7.Q 1Q 0G E/ R D/ W RR E S E T/ C SA 1A 0D 7.D 0P A 7.P A 0P B 7.P B 0V C C地8 2 5 5解:设 8255的 A口地址为 70H, B口地址为 71H, C口地址为 72H, 控制寄存器地址为73H。8255的工作

    13、方式为:A口:方式 0,输入B口:方式 0,输出C口:无关由此可以确定 8255的工作方式控制字为 10010000H,即 90H。有关程序如下:MOV RO,#73HMOV A,#90HMOVX R0,ALOOP: MOV RO,#70HMOVX A,R0CPL AINC ROMOVX R0,ASJMP LOOP7.8 外部 RAM以 DAT1开始的数据区中有 100个数,现要求每隔 150ms向内部 RAM以 DAT2开始的数据区中传送 10个数。通过 10次传送把数据全部传送完。以定时器 1作为定时,8155作为接口芯片。试编写有关的程序。单片机时钟频率为 6MHz。解:/ R D/ W

    14、 RR E S E T8031P 0 . 7.P 0 . 0A L E/ E A/ R D/ W RR E S E TA D 7.A D 0P A 7.P A 0P B 7.P B 0地8 1 5 5/ C EI O / M8现要求定时值为 150ms,在单片机时钟频率为 6MHz的情况,这个值已超过定时器可能提供的最大定时值。为了能够实现 150ms的定时值,可采用定时器定时和软件计数器相结合的方法。本题可设定时器的定时值为 50ms,另设一个软件计数器,初值为 3。每 50ms定时时间到时,产生中断,在中断服务程序中使软件计数器减 1,这样到软件计数器减到 0时,就获得了 150ms的定时

    15、。先计算 50ms定时所需的定时初始值。这时需采用定时器方式 1,即 16位计数器方式。故定时器初值为:X=216-(50*10-3/(2*10-6)= 65536-25000 = 40536 = 95E8H本题采用定时器 1定时,工作方式为 1,TH1 初值为 9EH,TL1初值为 58H。中断服务程序入口为 001BH。相关程序如下:ORG 001BHLJMP BRT1START: ORG 2000HMOV TMOD,#01HMOV TH1,#9EHMOV TL1,#58HMOV IE,#88HSETB TR1MOV DPTR,#DAT1MOV RO,#DAT2MOV R1,#10MOV R2,#10MOV R3,#3LOOP: SJMP $中断服务程序:BRT1: MOV TH1,#9EHMOV TL1,#58HDJNZ R3,NEXT2NEXT1: MOVX A,DPTRMOV RO,AINC DPTRINC R0DJNZ R2,NEXT1MOV R3,#3DJNZ R1,NEXT2CLR TR1NEXT2: RETI

    展开阅读全文
    提示  道客多多所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:单片机原理部分课后习题解.doc
    链接地址:https://www.docduoduo.com/p-8350825.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    道客多多用户QQ群:832276834  微博官方号:道客多多官方   知乎号:道客多多

    Copyright© 2025 道客多多 docduoduo.com 网站版权所有世界地图

    经营许可证编号:粤ICP备2021046453号    营业执照商标

    1.png 2.png 3.png 4.png 5.png 6.png 7.png 8.png 9.png 10.png



    收起
    展开