单片机学习资料-课后习题解答.doc

上传人:一*** 文档编号:813498 上传时间:2019-07-17 格式:DOC 页数:49 大小:216KB
返回 下载 相关 举报
单片机学习资料-课后习题解答.doc_第1页
第1页 / 共49页
单片机学习资料-课后习题解答.doc_第2页
第2页 / 共49页
点击查看更多>>
资源描述

《单片机学习资料-课后习题解答.doc》由会员分享,可在线阅读,更多相关《单片机学习资料-课后习题解答.doc(49页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、练习练习练习练习练习练习第二章 单片机结构及原理1、MCS-51 单片机内部包含哪些主要功能部件?它们的作用是什么?答:(1)一个 8bit CPU 是微处理器的核心,是运算和逻辑计算的中心。(2)片内震荡器及时钟电路:提供标准时钟信号,所有动作都依据此进行。(3)4K ROM 程序存贮器:存贮程序及常用表格。(4)128B RAM 数据存贮器:存贮一些中间变量和常数等。(5)两个 16bit 定时器/计数器:完全硬件定时器(6)32 根可编程 I/O 口线:标准 8 位双向(4 个)I/O 接口,每一条 I/O 线都能独立地作输入或输出。(7)一个可编程全双工串行口。(8)五个中断源。2、什

2、么是指令?什么是程序?答:指令是规定计算机执行某种操作的命令。程序是根据任务要求有序编排指令的集合。3、如何认识 89S51/52 存储器空间在物理结构上可以划分为 4 个空间,而在逻辑上又可以划分为 3 个空间?答:89S51/52 存储器空间在物理结构上设有个存储器空间:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。在逻辑上有个存储器地址空间:片内、片外统一的 64KB 程序存储器地址空间,片内 256数据存储器地址空间,片外 64的数据存储器地址空间。4、开机复位后,CPU 使用的是哪组工作寄存器?他们的地址是多少?CPU 如何确定和改变当前工作寄存器组?- 1 -答:

3、开机复位后,CPU 使用的是第 0 组工作寄存器,地址为 00H07H,CPU 通过改变状态字寄存器 PSW 中的 RS0 和 RS1 来确定工作寄存器组。5、什么是堆栈?堆栈有何作用?在程序设计时,有时为什么要对堆栈指针 SP 重新赋值?如果CPU 在操作中要使用两组工作寄存器,SP 应该多大?答:堆栈是一个特殊的存储区,主要功能是暂时存放数据和地址,通常用来保护断点和现场。堆栈指针 SP 复位后指向 07H 单元,00H1FH 为工作寄存器区,20H2FH 为位寻址区,这些单元有其他功能,因此在程序设计时,需要对 SP 重新赋值。如果 CPU 在操作中要使用两组工作寄存器,SP 应该至少设

4、置为 0FH。6、89S51/52 的时钟周期、机器周期、指令周期是如何分配的?当振荡频率为 8MHz 时,一个单片机周期为多少微秒?答:时钟周期为时钟脉冲频率的倒数,他是单片机中最基本的、最小的时间单位。机器周期是指完成一个基本操作所需要的时间,一个机器周期由 12 个时钟周期组成。指令周期是执行一条指令所需要的时间,由若干个机器周期组成。 若 fosc=8MHz,则一个机器周期=1/812s=1.5s7、89S51/52 扩展系统中,片外程序存储器和片外数据存储器共处同一地址空间为什么不会发生总线冲突?答:访问片外程序存储器和访问数据存储器使用不同的指令用来区分同一地址空间。8、程序状态字

5、寄存器 PSW 的作用是什么?常用状态标志有哪些位?作用是什么?答:程序状态字 PSW 是 8 位寄存器,用于存放程序运行的状态信息,PSW 中各位状态通常是在指令执行的过程中自动形成的,但也可以由用户根据需要采用传送指令加以改变。各个标志位的意义如下:PSW.7(Cy):进位标志位。PSW.6(AC):辅助进位标志位,又称为半进位标志位。PSW.5(F0):用户标志位。- 2 -PSW.4、PSW.3(RS1 和 RS0):寄存器组选择位。PSW.2(OV):溢出标志位。PSW.1(空缺位):此位未定义。PSW.0(P):奇偶校验位。9、位地址 7CH 和字节地址 7CH 有何区别?位地址

6、7CH 具体在内存中什么位置?答:字节地址 7CH 是片内数据存储器中的一个地址单元,该地址单元中可以存放 8 位二进制数,位地址 7CH 是内部数据存储器中位寻址区中的一位,该地址单元中可以存放 1 位二进制数。位地址 7CH 具体在片内数据存储器字节地址为 2FH 中的第 4 位(2FH.4) 。10、89S51/52 中 4 个 I/O 端口的作用是什么?89S51/52 的片外三总线是如何分配的?答:I/O 端口是单片机与外界联系的重要通道,实现与外部设备的信息的传输。总线分配:片外数据总线(8 根)通过 P0 口输出,片外地址总线(16 根)通过 P0 口(低 8 位)和 P2 口(

7、高 8位)输出,片外控制总线(PSEN ,ALE , RD ,WR ,EA)主要通过 P3 口。11、89S51/52 中 4 个 I/O 端口在结构上有何异同?89S51/52 单片机的个 I/O 口在结构上是基本相同的,但又各具特点。这四个端口都是位双向口,每个端口都包括一个锁存器、一个输出驱动器和输入缓冲器。在无片外扩展存储器的系统中,这四个端口的每一位都可以作为双向通用 I/O 端口使用。在作为一般的通用 I/O 输入时,都必须先向锁存器写入“” ,使输出驱动场效应管 FET 截止,以免误读数据。各自特点如下:(1)P0 口为双向 8 位三态 I/O 口,它既可作为通用 I/O 口,又

8、可作为外部扩展时的数据总线及低 8 位地址总线的分时复用口。作为通用 I/O 口时,输出数据可以得到锁存,不需外接专用锁存器;输入数据可以得到缓冲,增加了数据输入的可靠性。每个引脚可驱动 8 个 TTL 负载。(数字电路按工艺有肖特基双极晶体管和 CMOS 工艺两种,使用双极晶体管的数字电路称 TTL 数字电路, 单片机输出端带负载能力,意思就是单片机的 P3 端口只能并联 4 个 TTL 型集成电路输入端。)- 3 -(2)P1 口为 8 位准双向 I/O 口,内部具有上拉电阻,一般作通用 I/O 口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置 1。每个引脚可驱动

9、 4 个 TTL 负载。(3)P2 口为 8 位准双向 I/O 口,内部具有上拉电阻,可直接连接外部 I/O 设备。它与地址总线高 8 位复用,可驱动 4 个 TTL 负载。一般作为外部扩展时的高 8 位地址总线使用。(4)P3 口为 8 位准双向 I/O 口,内部具有上拉电阻,它是双功能复用口,每个引脚可驱动 4 个TTL 负载。作为通用 I/O 口时,功能与 P1 口相同,常用第二功能。12、复位的作用是什么?有几种复位方法?复位后单片机的状态如何?答:复位是单片机的初始化操作。单片机在 RST 引脚产生两个机器周期(即 24 个时钟周期)以上的高电平即可实现复位。主要的复位方法有上电自动

10、复位和按键手动复位两种。按键手动复位又分:按键电平复位和按键脉冲复位。第三章 指令系统1、简述下列名词术语的基本概念:指令、指令系统、程序、汇编语言指令答:指令:规定单片机进行某种操作的命令称为指令。指令系统:单片机能够执行的各种指令的集合。程序:一系列指令的有序集合称为程序。汇编语言指令:用助记符形式来表示机器指令。2、80C51 单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?答:共 7 种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,位寻址和相对寻址。寄存器寻址方式:由指令指出某一寄存器的内容做为操作数。直接寻址方式:指令中操作数直接以单元地址的形式给出

11、。- 4 -寄存器间接寻址方式 :寄存器间接寻址方式,寄存器中存放的则是操作数的地址,即操作数是通过寄存器间接得到的。立即寻址方式:操作数在指令中直接给出。变址寻址方式:变址寻址是为了访问程序存储器中的数据和表格。MCS51 的变址寻址是以DPTR 或 PC 作基址寄存器,以累加器 A 作变址寄存器,并以两者内容相加形成的 16 位地址做为操作数地址,以达到访问数据和表格的目的。位寻址方式:指对片内 RAM 的位寻址区和某些可寻址的特殊功能寄存器进行位操作的寻址方式。相对寻址方式:相对寻址方式是为解决程序转移而专门设置的,为转移指令所采用。3、要访问特殊功能寄存器和片外数据寄存器,应采用哪些寻

12、址方式?答:访问特殊功能寄存器可以采用直接寻址、寄存器寻址和位寻址(针对可以进行位寻址的特殊功能寄存器)方式。访问片外数据存储器可采用寄存器间接寻址方式。4、80C51 单片机的指令系统可以分为哪几类?说明各指令的功能。答:51 单片机指令系统按功能可分为 5 类:(1)数据传送指令 主要进行数据的传送、交换等;(2)算术运算指令 主要进行基本的加减乘除运算;(3)逻辑运算指令 主要实现逻辑运算与移位运算; (4)控制转移指令 主要是实现对程序流程的控制;(5)位操作指令 5、外部数据传送指令有哪几条?有和区别?答:外部数据传送指令有读指令和写指令两类,每类指令的寻址范围不同,分别为:读外部存

13、储器指令:MOVXA,Ri;寻址范围为 256 字节MOVXA,DPTR ;寻址范围为 64K 字节写外部存储器指令:MOVXRi,A;寻址范围为 256 字节MOVXDPTR,A ;寻址范围为 64K 字节- 5 -6、在 89S51 片内 RAM 中,已知(30H)=38H, (38H)=40H, (40H)=48H, (48H)=90H,请分别分析下段程序按序执行后的结果。MOVA,40H;A=48HMOV R0,A;R0=48HMOVP1,#0FFH;P1=FFHMOVR0,30H;(48H)=38HMOVDPTR,#1246H;DPTR=1246HMOV40H,38H;(40H)=4

14、0HMOVR0,30H;R0=38HMOV90H,R0;(90H)=38HMOV 48H,#30H;(48H)=30HMOVA,R0;A=40HMOVP2,P1;P2=38H7、略8、DAA 指令的作用是什么?怎样使用?答:对十进制 BCD 数作加法时进行调整,当结果的低 4 位 A0A39,或半进位 AC=1,则A0A36,否则不加;当结果的高 4 位 A4A79,或进位 CY=1,则 A4A76,否则不加;这条指令是在进行 BCD 码加法运算时,跟在“ADD”和“ADDC”指令之后,用来对 BCD 码的加法运算结果自动进行修正,使其仍为 BCD 码表示形式。9、试编程将片外数据存储器 60

15、H 中的内容传送到片内 RAM54H 单元中。答:MOVR0,#60HMOVXA,R0MOV54H,A- 6 -10、试编程将寄存器 R7 的内容传送到 R1 中去。答:MOVA,R7MOVR1,A11、已知当前 PC 值为 210H,请用两种方法将程序存储器 2F0H 中的常数送入累加器 A 中。答:(1)以程序计数器 PC 作为基址寄存器MOVA,#0E0HMOVCA,A+PC(2)以数据指针 DPTR 作为基址寄存器MOVDPTR,#02F0HMOVA,#00HMOVCA,A+DPTR12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0 中的内容是什么?MOVR0,#0A7H

16、;R0=A7H,立即数送寄存器 R0XCHA,R0;A=A7H,累加器 A 中的数据与 R0 中的数据进行交换SWAPA;A=7AH,累加器 A 中的高低四位进行交换XCHA,R0;R0=7AH,数据交换回 R013、请用两种方法实现累加器 A 与寄存器 B 的内容交换。答:(1)MOVR0,AMOVA,BMOVB,R0(2)MOVR0,B- 7 -XCHA,R014、试编程将片外 RAM 中 40H 单元的内容与 R1 的内容交换。答:MOVR0,#40HMOVXA,R0XCHA,R1MOVXR0,A15、已知:A=0C9H,B=8DH,CY=1。执行指令 ADDC A,B 结果如何? A=

17、57H,CY=1,OV=1,AC=1,P=1执行指令 SUBBA,B 结果如何? A=3BH,CY=0,AC=1,OV=116、试编程将片外 RAM 中 30H 和 31H 单元中的内容相乘,结果存放在 32H(低位)和33H(高位)单元中。答:MOVR0,#30HMOVXA,R0MOVB,AINCR0MOVXA,R0MULABINCR0MOVXR0,AMOVA,BINCR0MOVXR0,A17、试用 3 种方法将累加器 A 中的无符号数乘 2.- 8 -答:(1)MOVR0,AADD A,R0(2)MOVB,#2MULAB(3)RLA18、分析依次执行下列指令的结果:MOV30H,#0A4H

18、;(30H)=A4HMOVA,#0D6H;A=D6HMOVR0,#30H;R0=30HMOVR2,#47H;R2=47HANLA,R2;A=46HORLA,R0 ;A=E6HSWAPA;A=6EHCPLA;A=91HXRLA,#0FFH;A=6EHORL30H,A;(30H)=EEH19、求下列指令执行后,累加器 A 及 PSW 中进位 CY、奇偶位 P 和溢出位 OV 的值。(1)当 A=5BH 时;ADD A,#8CH(2)当 A=5BH 时;ANLA,#7AH(3)当 A=5BH 时;XRLA,#7FH(4)当 A=5BH,CY=1 时;SUBB A,#0E8H答:(1)A=E7H,CY

19、=1,P=0,OV=0 - 9 -(2)A=5AH ,P=0 (3)A=24H ,P=0(4)A=72H,CY=1,P=0,OV=020、把累加器 A 中的低 4 位数据送到外部数据存储器的 2000H 单元。答:ANLA,#OFHMOVDPTR,#2000HMOVXDPTR,A21、试说明指令 CJNE R1,#7AH,10H 的作用,若本指令地址为 250H,其转移地址是多少?答:指令作用:如果以 R1 内容为地址的单元中的数据等于 7AH,则程序顺序执行,否则转移后继续执行。若本指令地址为 250H,则转移地址为 250H03H10H= 263H。22、将累加器 A 中的数据由 0 递增

20、,加到 50,结果在累加器 A 中。答:CLRAMOV R0,#50L1:INCADJNZR0,L123、试说明压栈指令和弹栈指令的作用及执行过程。答:压栈(入栈或进栈)指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针 SP 的内容加 1,然后将直接地址单元中的数据压入 SP 指向的单元中。若数据已推入堆栈,则 SP 指向最后推入数据所在的存储单元(即指向栈顶)。弹栈(出栈)指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针 SP 所指出单元的内容送入直接寻址单元中,然后将 SP 的内容减 1,此时 SP 指向新的栈顶。- 10 -24、下述程序执行后,SP=?,A=?,B=?。O

21、RG2000HMOVSP,#40HMOVA,#30HLCALL250H;下条指令地址 2008H 送 41H、42H,SP=42HADDA,#10HMOVB,A;地址为 200AHL1:SJMPL1ORG250HMOVDPTR,#200AHPUSHDPL;SP+1=43H,DPL(43H)PUSHDPH;SP+1=44H,DPH(44H)RET;200AHPC答:上述程序执行后,SP=42H,A=30H,B=30H。25、发光二极管点亮规律:先是第 1 和第 8 个亮,延时一段时间后,第 2 和第 7 个亮,延时后,再是第 3 和第 6 个亮,延时后,最后是第 4 和第 5 个点亮,延时后循环

22、。26、若系统晶振频率为 6MHz,求子程序 DELAY 的延时时间,若想加长或缩短时间,应该怎样修改?答:DELAY: MOVR2,#0FAHL1:MOVR3,#0FAHL2:DJNZR3,L2DJNZ R2,L1RET- 11 -总时间计算:T=4s(2504s4s)2504s=251.008ms估算:T=2504s250=250ms若想加长延时时间,可以增加循环次数或再加一重循环;若想减小延时时间,可以减少循环次数或较少一重循环。27、P1 口连接 8 个共阳极连接的发光二极管,是编制灯亮移位程序。答:MOVA,#0FEHL1:MOVP1,ARLALCALLDELAY;DELAY 子程序

23、同上题SJMPL128、试编一程序,将外部数据存储器 2100H 单元中的高 4 位置“1” ,其余位清“0” 。答:MOVDPTR,#2100HMOVXA,DPTRORLA,#0F0HANLA,#0F0HMOVXDPTR,A29、试编程将片内数据存储器 40H 单元的第 0 为和第 7 位置 1,其余取反。答:MOVA,40HCPLASETBACC.0SETBACC.7MOV40H,A30、将 A.5 与 80H 位相与的结果,通过 P1.4 输出。- 12 -MOVC,80HANLC,ACC.5MOVP1.4,C31、请用位操作指令,求下列逻辑方程。(1)2 . 3) 1 . 20 .(0

24、 .7 . 1PPBACCPMOVC,B.0ORLC,P2.1ANLC,ACC.0ORLC,/P3.2MOVP1.7,C(2)1 . 15 .2 .3 . 15 .PBACCPPSWMOVC,P1.3ANLC,ACC.2MOV20H,CMOVC,B.5ANLC,/P1.1ORLC,20HMOVPSW.5,C(3)0 . 17 .4 .5 . 13 . 2PACCBPPMOVC,B.4ANLC,/P1.5MOV20H,CMOVC,P1.0- 13 -ANLC,/ACC.7ORLC,20H (下一行)MOVP2.3,C第四章 汇编语言程序设计1、编程将片内 40H60H 单元中的内容送到以 300

25、0H 为首的存储区内。答:MOVR1,#40HMOVR2,#21HMOVDPTR,#3000HL1:MOVA,R1MOVXDPTR,AINCR1INCDPTRDJNZR2,L12、编程计算下列算式的程序(1)23H+45H+ABH+03H=MOVA,#23HADDA,#45HADDA,#0ABHXCHA,B;溢出处理ADDCA,#00HXCHA,BADDA,#03H;A 中为结果低位,B 中为高位(2)CDH+15H-38H-46H=MOVA,#0CDH- 14 -ADDA,#15HSUBBA,#38HSUBBA,#46H(3)1234H+8347H=MOVA,#34HADDA,#47HMOV

26、30H,AMOVA,#12HADDCA,#83HMOV31,A;30H 存结果低位,31H 存结果高位(4)AB123H-43ADCH=CLRCMOVA,#23HSUBBA,DCHMOV30H,AMOVA,#0B1HSUBBA,#3AHMOV31H,AMOVA,#0AHSUBBA,#04HMOV32H,A;30H 为低位,32H 为高位3、设有两个 4 位 BCD 码,分别存放在 23H、22H 单元和 33H、32H 单元中,求他们的和,并送入 43H、42H 单元中(低位在低字节,高位在高字节) 。- 15 -答:MOVA,22HADDA,32HMOV42H,AMOVA,23HADDCA,

27、33HMOV43H,A4、略5、编程计算片内 RAM 区 50H59H 单元中数的平均值,结果存放在 5AH 中。答:MOVR0,#8MOVR1,#50HMOVA,#00HL1:ADDA,R1INCR1DJNZR0,L1MOVB,#8DIVABMOV5AH,A6、编写计算下式的程序。设乘积和平方结果均小于 255。a 、b 值分别存在片外 3001H 和3002H 单元中,结果存于片外 3000H 单元中。(1) babaY25bababa,MOVDPTR,#3001HMOVXA,DPTR- 16 -MOV30H,A;a 暂存 30H 单元INCDPLMOVXA,DPTRCJNEA,30H,L

28、1;是否 a=bMOVA,#25SJMPSAVEL1:JNCL2MOVB,30HMULABSJMPSAVEL2:MOVB,AMOVA,30HDIVABSAVE:MOVDPTR,#3000HMOVXDPRT,A(2) 10)()(10)(222bababaY10)( ,10)( ,10)( ,222bababaMOVDPTR,#3001HMOVXA,DPTRMOV30H,AINCDPTRMOVXA,DPTRADDA,30H- 17 -MOVB,AMULAB; (ab)2MOV31H,ACJNEA,#10,L1SJMPSAVEL1:JCL2CLRCSUBBA,#10SJMPSAVEL2:ADDA,

29、#10SAVE:MOVDPTR,#3000HMOVCDPTR,A7、设有两个长度均为 15 的数组,分别存放在以 200H 和 210H 为首地址的存储区中,试编程求其对应项之和,结果存放到以 220H 为首地址的存储区中。答:MOVDPH,#02HMOVR1,#15MOVR2,#00H; 数组 1 首地址低位MOVR3,#10H; 数组 2 首地址低位MOVR4,#20H; 和首地址低位L1:MOVDPL,R2MOVXA,DPTRMOVR1,AMOVDPL,R3- 18 -MOVXA,DPTRADDA,R1MOVDPL,R4MOVXDTPR,AINCR2INCR3INCR4DJNZR1,L1

30、SJMP$8、设有 100 个无符号数,连续存放在以 2000H 为首地址的存储区中,试编程统计正数、负数和零的个数。答:MOV30H,#00H;正数计数器MOV31H,#00H;负数计数器MOV32H,#00H;零计数器MOVDPTR,#2000HMOVR1,#100L4:MOVXA,DPTRINCDPTRCJNEA,#0,L1INC32HSJMPL2L1:JCL3INC30H- 19 -SJMPL2L3:INC31HL2:DJNZR1,L4SJMP$9、将片外数据存储器地址为 1000H1030H 的数据块,全部搬迁到片内 RAM 30H60H 中,并将原数据块区域全部清零。答:MOV R

31、0,#30HMOV R2,#31HMOV DPTR ,#1000HLP:MOVX A,DPTRMOV R0,AAND A,#00HMOVX DPTR,AINC R0INC DPTRDJNZ R2,LPSJMP$10、试编写一子程序,是 R1、R0 指向的两个片外 RAM 连续单元中的高 4 位二进制数,合并成一个字节,装入累加器 A 中。已知 R0 指向低地址,并要求该单元高四位放在 A 中高四位。答:MOVXA,R1ANLA,#0F0H- 20 -SWAPAMOVR2,AMOVXA,R0ANLA,#0F0HORLA,R211、试编程把以 2040H 为首地址的连续 50 个单元的无符号数按降

32、序排列,存放到以 3000H 为首地址的存储区中。答:MOVR2,#50MOVR3,#20HMOVR4,#40H;源地址MOVR5,#30HMOVR6,#00H;目的地址SEND:MOVDPH,R3;SEND 将 2040H 数据块移入 3000H 存储区MOVDPL,R4MOVXA,DPTRINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTR- 21 -MOVR5,DPHMOVR6,DPLDJNZR2,SENDMOVR2,#49;重复次数CMP1:MOVDPTR,#3000HMOVR3,#49;比较次数CMP2:MOVXA,

33、DPTRMOVB,AINCDPTRMOVXA,DPTRCJNEA,B,L1L1:JCNOMOVEMOV30H,ACLRCMOVA,DPLSUBBA,#01HMOVDPL,AMOVA,30HMOVXDPTR,AINCDPTRMOVA,BMOVXDPTR,ANOMOVE:DJNZR3,CMP2;50 个数重复一遍?- 22 -DJNZR2,CMP1;排序结束?LJMP$12、试编一查表程序,从首地址为 2000H,长度为 100 的数据块中找出 ASCII 码为 A,将其地址送到 20A0H 和 20A1H 单元中。答:MOVDPTR,#2000HMOVR2,#100GO_ON:MOVXA,DPT

34、RCJNEA,#41H,IFENDMOVA,DPHMOVB,DPLMOVDPTR,#20A0HMOVXDPTR,AINCDPTRXCHA,BMOVXDPTR,ASJMPOVERIFEND:INCDPTRDJNZR2,GO_ONOVER:SJMPOVER13、设在 200H204H 单元中,存放 5 个压缩 BCD 码,编程将他们转换成 ASCII 码,存放到以 205H 单元为首地址的存储区。答:MOVR2,#05HMOVR3,#02H- 23 -MOVR4,#00HMOVR5,#02HMOVR6,#05HCHLP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRINCDPTRMOVR

35、3,DPHMOVR4,DPLMOVB,ASWAPAANLA,#0FHORLA,#30HMOVDPH,R5MOVDPL,R6MOVXDPTR,AINCDPTRMOVA,BANLA,#0FHORLA,#30HMOVXDPTR,AMOVR5,DPHMOVR6,DPL- 24 -DJNZR2,CHLP14、有一无符号数据块长度在 30H 单元中,其首地址为 31H 单元,求出数据块中最大值,并存入 40H 中。答:MOVR0,#31HMOVR1,30HMOV40H,#00HLOOP:MOVA,R0CJNEA,40H,L1SJMPAGAINL1:JNCL2SJMPAGAINL2:MOV40H,AAGAI

36、N: INCR0DJNZR1,LOOPSJMP$15、略16、在以 2000H 为首地址的存储区内,存放 20 个用 ASCII 码表示的 09 之间的数,试编程,将它们转换成 BCD 码,并以压缩 BCD 码的形式存在 3000H3009H 单元中。答:MOVR2,#10MOVR3,#20HMOVR4,#00HMOVR5,#30HMOVR6,#00H- 25 -LP:MOVDPH,R3MOVDPL,R4MOVXA,DPTRANLA,#0FHSWAPAXCHA,BINCDPTRMOVXA,DPTRANLA,#0FHORLA,BINCDPTRMOVR3,DPHMOVR4,DPLMOVDPH,R5

37、MOVDPL,R6MOVXDPTR,AINCDPTRMOVR5,DPHMOVR6,DPLDJNZR2,LPSJMP$17、试编程实现下列逻辑表达式功能。设 P1.7P1.0 为 8 个变量的输入端,而其中 P1.7 又作为变量的输出端。- 26 -;输入端定义X0EQUP1.0X1EQUP1.1X2EQUP1.2X3EQUP1.3X4EQUP1.4X5EQUP1.5X6EQUP1.6X7EQUP1.7(1)76543210XXXXXXXXYMOVC,X0ANLC,X1ANLC,/X2ORLC,X3MOV00H,CMOVC,X4ANLC,X5ANLC,X6ORLC,/X7ORLC,00HMOVP

38、1.7,C(2)76543210XXXXXXXXYMOVC,X0- 27 -ANLC,X1CPLCMOV00H,CMOVC,X2ANLC,X3ANLC,X4CPLCMOV01H,CMOVC,X5ANLC,X6ANLC,X7CPLCORLC,O1HCPLCORLC,00HMOVP1.7,C18、略 19、略20、试编写延时 1s、1min、1h 子程序。;单片机时钟 fosc=12MHz,计算为近似值;1s 延时子程序DLY_1S: MOVR0,#10L3:MOVR1,#200- 28 -L2:MOVR2,#250L1:DJNZR2,L1DJNZR1,L2DJNZR0,L3RET;延时 1min

39、DLY_1M:MOVR3,#60L4:LCALLDLY_1SDJNZR3,L4RET;延时 1hDLY_1H:MOVR4,#60L5:LCALLDLY_1MDJNZR4,L5RET21、用程序实现 c=a2+b2。设 a、b 均小于 10,a 存在 31H 单元中,b 存在 32H 单元中,c存 33H 单元。答:ORG1000HSR:MOVA,31HACALLSQRMOVR1,A- 29 -MOVA,32HACALLSQRADDA,R1MOV33H,ASJMP$;求平方子程序如下(采用查平方表的方法)SQR:INCAMOVCA, A+PC RETTABLE: DB 0, 1, 4, 9, 1

40、6DB 25,36,49,64,81END22、如何实现将内存单元 40H60H 的数逐个对应传到片外 2540H2560H 单元中?答:MOVR0,#40HMOVDPTR,#2540HMOVR2,#21HL1:MOVA,R0MOVXDPTR,AINCR0INCDPTRDJNZR2,L1SJMP$- 30 -23、参考 21 题24、参考 21 题25、参考实验程序26、参考实验程序第五章 定时/计数器1、89S51 单片机内部有几个定时/计数器,他们有哪些专用寄存器组成?答:89S51 单片机内部有两个 16 位定时/计数器,为定时器 0(T0)和定时器 1(T1)。在定时器/计数器的 16

41、 位的计数器是由两个 8 位的专用寄存器 TH0、TL0,TH1、TL1 组成。2、89S51 单片机的定时/计数器有哪几种工作方式,各有什么特点?答:定时器/计数器有四种工作方式:方式 0,方式 1,方式 2,方式 3。其中,方式 3 只适用于T0。以 T0 为例:方式 0,16 位寄存器只用了 13 位,TL0 的高三位未用。由 TH0 的 8 位和TL0 的低 5 位组成一个 13 位计数器;方式 1,和方式 0 的工作相同,唯一的差别是 TH0 和TL0 组成一个 16 位计数器;方式 2,把 TL0 配置成一个可以自动恢复初值的 8 位计数器,TH0作为常数缓冲器。TH0 由软件预置

42、值。当 TL0 产生溢出时,一方面使溢出标志 TF0 置 1,同时把TH0 中的 8 位数据重新装入 TL0 中;方式 3,将使 TL0 和 TH0 成为两个相互独立的 8 位计数器,TL0 利用 T0 本身的一些控制,它的操作与方式 0 和方式 1 类似。而 TH0 被规定为只用作定时器功能,对机器周期计数,并借用了 T1 的控制位 TR1 和 TF1。在这种情况下 TH0 控制了 T1- 31 -的中断。这时 T1 还可以设置为方式 02,用于任何不需要中断控制的场合,或者用作串行口的波特率发生器。3、定时/计数器用作定时方式时,其定时时间与哪些因素有关?作为计数时,对外界计数频率有何限制

43、?答:定时/计数器作定时时,其计数脉冲由系统振荡器产生的内部时钟信号 12 分频后提供。定时时间与时钟频率和定时初值有关。定时/计数器作计数时,由于确认 1 次负跳变要花 2 个机器周期,即 24 个振荡周期,因此外部输入的计数脉冲的最高频率为系统振荡器频率的 1/24。4、当定时器 T0 用作方式 3 时,由于 TR1 位已被 T0 占用,如何控制定时器 T1 的开启和关闭?答:定时器 T0 用作方式 3 时,由于 TR1 位已被 T0 占用,此时通过控制位 C/T 切换其定时或计数器工作方式。当设置好工作方式时,定时器 T1 自动开始运行,若要停止,只需送入一个置定时器 T1 为方式 3

44、的方式字。5、已知 89S51 单片机系统时钟频率为 24MHz,请利用定时器 T0 和 P1.2 输出矩形脉冲。矩形波高电平宽度 50 s,低电平宽度 350 s。答:ORG 1000HMOV TMOD,02H ;设置工作方式MOV TH0,09CH;设置定时器初值MOV TL0,09CHSETB TR0;启动定时器LOOP: SETBP1.2;P1.0 输出高电平MOVR0,07HDEL:JBC TF0 ,REP;定时是否到?AJMP DEL- 32 -REP:SETBP1.2;P1.0 输出低电平DJNZR0,DELAJMP LOOPEND6、在 89S51 单片机中,已知时钟频率为 1

45、2MHz,请编程使 P1.0 和 P1.1 分别输出周期为 2ms和 500s 的方波。答:选择方式 2,用定时器 T1MOVTMOD,#20HMOVTH1,#06HMOVTL1,#06HSETBTR1L1:MOVR2,#04HL2:JNBTF1,$CLRTF1,CPLP1.1DJNZR2,L2CPLP1.0LJMPL17、设系统时钟为 24MHz,试用定时器 T0 做外部计数器,编程实现每计到 1000 个脉冲,是 T1开始 2ms 定时,定时时间到后,T0 又开始计数,循环往复。答:MOVTMOD,#15H;T1 定时方式 1,T0 计数方式 1L1:MOVTH0,#0FCHMOVTL0,

46、#18H- 33 -SETBTR0JNBTF0,$CLRTR0CLRTF0MOVTH1,# HMOVTL1,# HSETBTR1JNBTF1,$CLRTR1CLRTF1LJMPL18、略9、略第六章 80C51 的串行接口1、什么是串行异步通信?他有哪些特点?有哪几种帧格式?答:串行通信即所传输数据的各位按顺序一位一位的发送或接收。串行通信分为同步和异步两种方式。- 34 -在异步通信中数据或字符是一帧一帧地传送的。帧定义为一个字符的完整的通信格式,通常也称为帧格式。它的主要特点:由于异步通信每传送一帧有固定的格式,通信双方只需按约定的帧格式来发送和接收数据,所以硬件结构比同步通信方式简单;此

47、外它还能利用校验位检测错误。帧格式的一般形式是先用一个起始位“0”表示字符的开始,然后是数据位,其后是奇偶校验位,最后是停止位,用以表示字符结束。2、某异步通信接口按方式 3 传送,已知其每分钟传送 3600 个字符,计算其传送波特率。答:设每个字符由 1 个起始位、8 个数据位、1 个可编程位和 1 个结束位组成,其传送波特率为:11b3600/60s=660bps3、80C51 单片机的串行口由哪些基本功能部件组成?答: 80C51 单片机的串行口基本功能部件主要有:两个数据缓冲寄存器 SBUF,一个串行口控制寄存器 SCON,一个输入移位寄存器。4、80C51 单片机的串行口有几种工作方

48、式?几种帧格式?如何设置不同方式的波特率?答:80C51 单片机的串行口有四种工作方式,由串行口控制寄存器中的 SM0、SM1 控制。80C51 单片机的串行通信有 8 位、10 位、11 位三种帧格式。波特率设置:4 种工作方式波特率的计算方法不同,其中方式 0 和方式 2 的波特率是固定的,方式 1 和方式 3 的波特率是可变的,均由定时器 T1 的溢出率控制。具体计算如下:方式 0:波特率固定为时钟频率的 1/12,不受 SMOD 的影响。(SMOD 为波特率倍增位)方式 1 的波特率=2SMOD/32定时器 T1 的溢出率 方式 2 的波特率=2SMOD/64fosc方式 3 的波特率

49、=2SMOD/32定时器 T1 的溢出率5、为什么定时器 T1 用作串行口波特率发生器时,常采用工作方式 2?- 35 -答:在串行通信中,收发双方对发送或接收的数据速率(即波特率)要有一定的约定。串口有四种工作方式,其中方式 0 和方式 2 的波特率是固定的,而方式 1 和方式 3 的波特率是可变的,有定时器 T1 的溢出率控制。定时器 T1 用作串行口波特率发生器时,因为工作方式 2 是自动重装载方式,因而定时器 T1 作波特率发生器常采用工作方式 2.6、已知定时器 T1 设置成方式 2,用作波特率发生器,系统时钟频率为 24MHz,求可能产生的最高和最低的波特率是多少?答:最高波特率:TH1=0FFH,TL1=0FFH波特率最高=2/3224M/(12(256255)bps=0.

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com