单片机课后习题解答.doc

上传人:h**** 文档编号:866716 上传时间:2018-11-03 格式:DOC 页数:26 大小:217.01KB
下载 相关 举报
单片机课后习题解答.doc_第1页
第1页 / 共26页
单片机课后习题解答.doc_第2页
第2页 / 共26页
单片机课后习题解答.doc_第3页
第3页 / 共26页
单片机课后习题解答.doc_第4页
第4页 / 共26页
单片机课后习题解答.doc_第5页
第5页 / 共26页
点击查看更多>>
资源描述

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 如何确定和改变当前工作寄存器组?答:开机复位后,CPU 使用的

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

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

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

6、位置?答:字节地址 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 口(高 8 位)输出,片外控

7、制总线(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型集成电路输入端。)(2)P1 口为 8 位准双向 I/O 口,内部具有上拉电阻,一般作通用 I/O 口使用,它的每一位都可以分别定义为输入线或输出线,作为输入时,锁存器必须置 1。每个引脚可驱动 4 个 TTL 负载。(3)P2 口为 8

9、 位准双向 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 单片机有哪几种寻址方式?这几种寻址方式是如何寻址的?- 2 -答:共 7 种寻址方式,分别为:寄存器寻址,直接寻址,寄存器间接寻址,立即寻址,变址寻址,位寻址和相对寻址。寄存器寻址方式:由指令指出某一寄存器的内容做为操作数。直接寻址方式:指令中操作数直接以单元地址的形式给出。寄存器间接寻址方式 :寄存器间接

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

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

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

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

15、据存储器 60H 中的内容传送到片内 RAM54H 单元中。答: MOV R0,#60HMOVX A,R0MOV 54H,A10、试编程将寄存器 R7 的内容传送到 R1 中去。答: MOV A,R7MOV R1,A11、已知当前 PC 值为 210H,请用两种方法将程序存储器 2F0H 中的常数送入累加器 A 中。答:(1)以程序计数器 PC 作为基址寄存器MOV A,#0E0HMOVC A,A+PC(2)以数据指针 DPTR 作为基址寄存器MOV DPTR,#02F0HMOV A,#00HMOVC A,A+DPTR12、试说明下段程序中每条指令的作用,并分析当指令执行完后,R0 中的内容是

16、什么?MOV R0,#0A7H ;R0=A7H,立即数送寄存器 R0XCH A,R0 ;A=A7H,累加器 A 中的数据与 R0 中的数据进行交换SWAP A ;A=7AH,累加器 A 中的高低四位进行交换XCH A,R0 ;R0=7AH,数据交换回 R013、请用两种方法实现累加器 A 与寄存器 B 的内容交换。答:(1)MOV R0,AMOV A,BMOV B,R0(2)MOV R0,BXCH A,R014、试编程将片外 RAM 中 40H 单元的内容与 R1 的内容交换。答: MOV R0,#40HMOVX A,R0XCH A,R1MOVX R0,A15、已知:A=0C9H,B=8DH,

17、CY=1。执行指令 ADDC A,B 结果如何? A=57H,CY=1,OV=1,AC=1,P=1执行指令 SUBB A,B 结果如何? A=3BH,CY=0,AC=1,OV=116、试编程将片外 RAM 中 30H 和 31H 单元中的内容相乘,结果存放在 32H(低位)和 33H(高位)单元中。答: MOV R0,#30HMOVX A,R0MOV B,AINC R0MOVX A,R0- 4 -MUL ABINC R0MOVX R0,AMOV A,BINC R0MOVX R0,A17、试用 3 种方法将累加器 A 中的无符号数乘 2.答:(1)MOV R0,AADD A,R0(2)MOV B

18、,#2MUL AB(3)RL A18、分析依次执行下列指令的结果:MOV 30H,#0A4H ;(30H)=A4HMOV A,#0D6H ;A=D6HMOV R0,#30H ;R0=30HMOV R2,#47H ;R2=47HANL A,R2 ;A=46HORL A,R0 ;A=E6HSWAP A ;A=6EHCPL A ;A=91HXRL A,#0FFH ;A=6EHORL 30H,A ;(30H)=EEH19、求下列指令执行后,累加器 A 及 PSW 中进位 CY、奇偶位 P 和溢出位 OV 的值。(1)当 A=5BH 时 ;ADD A,#8CH(2)当 A=5BH 时 ;ANL A,#7

19、AH(3)当 A=5BH 时 ;XRL A,#7FH(4)当 A=5BH,CY=1 时 ;SUBB A,#0E8H答:(1)A=E7H,CY=1,P=0,OV=0 (2)A=5AH ,P=0 (3)A=24H ,P=0(4)A=72H,CY=1,P=0,OV=020、把累加器 A 中的低 4 位数据送到外部数据存储器的 2000H 单元。答: ANL A,#OFHMOV DPTR,#2000HMOVX DPTR,A21、试说明指令 CJNE R1,#7AH,10H 的作用,若本指令地址为 250H,其转移地址是多少?答:指令作用:如果以 R1 内容为地址的单元中的数据等于 7AH,则程序顺序执

20、行,否则转移后继续执行。若本指令地址为 250H,则转移地址为 250H03H10H= 263H。22、将累加器 A 中的数据由 0 递增,加到 50,结果在累加器 A 中。答: CLR AMOV R0,#50L1: INC ADJNZ R0,L1- 5 -23、试说明压栈指令和弹栈指令的作用及执行过程。答:压栈(入栈或进栈)指令的作用是将数据存入堆栈中,其执行过程是先将堆栈指针 SP 的内容加 1,然后将直接地址单元中的数据压入 SP 指向的单元中。若数据已推入堆栈,则 SP 指向最后推入数据所在的存储单元(即指向栈顶)。弹栈(出栈)指令的作用是将数据从堆栈中取出,其执行过程为先将堆栈指针

21、SP 所指出单元的内容送入直接寻址单元中,然后将 SP 的内容减 1,此时 SP 指向新的栈顶。24、下述程序执行后,SP=?,A=?,B=?。ORG 2000HMOV SP,#40HMOV A,#30HLCALL 250H ;下条指令地址 2008H 送 41H、42H,SP=42HADD A,#10HMOV B,A ;地址为 200AHL1: SJMP L1ORG 250HMOV DPTR,#200AHPUSH DPL ;SP+1=43H,DPL(43H)PUSH DPH ;SP+1=44H,DPH(44H)RET ;200AHPC答:上述程序执行后,SP=42H,A=30H,B=30H。

22、25、发光二极管点亮规律:先是第 1 和第 8 个亮,延时一段时间后,第 2 和第 7 个亮,延时后,再是第 3 和第 6 个亮,延时后,最后是第 4 和第 5 个点亮,延时后循环。26、若系统晶振频率为 6MHz,求子程序 DELAY 的延时时间,若想加长或缩短时间,应该怎样修改?答: DELAY: MOV R2,#0FAHL1: MOV R3,#0FAHL2: DJNZ R3,L2DJNZ R2,L1RET总时间计算:T=4s(2504s4s)2504s=251.008ms估算:T=2504s250=250ms若想加长延时时间,可以增加循环次数或再加一重循环;若想减小延时时间,可以减少循环

23、次数或较少一重循环。27、P1 口连接 8 个共阳极连接的发光二极管,是编制灯亮移位程序。答: MOV A,#0FEHL1: MOV P1,ARL ALCALL DELAY ;DELAY 子程序同上题SJMP L128、试编一程序,将外部数据存储器 2100H 单元中的高 4 位置“1” ,其余位清“0” 。答: MOV DPTR,#2100HMOVX A,DPTRORL A,#0F0HANL A,#0F0H- 6 -MOVX DPTR,A29、试编程将片内数据存储器 40H 单元的第 0 为和第 7 位置 1,其余取反。答: MOV A,40HCPL ASETB ACC.0SETB ACC.

24、7MOV 40H,A30、将 A.5 与 80H 位相与的结果,通过 P1.4 输出。MOV C,80HANL C,ACC.5MOV P1.4,C31、请用位操作指令,求下列逻辑方程。(1) 2.3)1.0.(7. PBAPMOV C,B.0ORL C,P2.1ANL C,ACC.0ORL C,/P3.2MOV P1.7,C(2) 1.52.3.15. PBAPSWMOV C,P1.3ANL C,ACC.2MOV 20H,CMOV C,B.5ANL C,/P1.1ORL C,20HMOV PSW.5,C(3) 0.17.4.51.2PABPMOV C,B.4ANL C,/P1.5MOV 20H

25、,CMOV C,P1.0ANL C,/ACC.7ORL C,20H ( 下一行)MOV P2.3,C第四章 汇编语言程序设计1、编程将片内 40H60H 单元中的内容送到以 3000H 为首的存储区内。答: MOV R1,#40HMOV R2,#21HMOV DPTR,#3000HL1: MOV A,R1MOVX DPTR,AINC R1INC DPTR- 7 -DJNZ R2,L12、编程计算下列算式的程序(1)23H+45H+ABH+03H=MOV A,#23HADD A,#45HADD A,#0ABHXCH A,B ;溢出处理ADDC A,#00HXCH A,BADD A,#03H ;A

26、 中为结果低位,B 中为高位(2)CDH+15H-38H-46H=MOV A,#0CDHADD A,#15HSUBB A,#38HSUBB A,#46H(3)1234H+8347H=MOV A,#34HADD A,#47HMOV 30H,AMOV A,#12HADDC A,#83HMOV 31,A ;30H 存结果低位,31H 存结果高位(4)AB123H-43ADCH=CLR CMOV A,#23HSUBB A,DCHMOV 30H,AMOV A,#0B1HSUBB A,#3AHMOV 31H,AMOV A,#0AHSUBB A,#04HMOV 32H,A ;30H 为低位,32H 为高位3

27、、设有两个 4 位 BCD 码,分别存放在 23H、22H 单元和 33H、32H 单元中,求他们的和,并送入43H、42H 单元中(低位在低字节,高位在高字节) 。答: MOV A,22HADD A,32HMOV 42H,AMOV A,23HADDC A,33HMOV 43H,A4、略5、编程计算片内 RAM 区 50H59H 单元中数的平均值,结果存放在 5AH 中。答: MOV R0,#8MOV R1,#50H- 8 -MOV A,#00HL1: ADD A,R1INC R1DJNZ R0,L1MOV B,#8DIV ABMOV 5AH,A6、编写计算下式的程序。设乘积和平方结果均小于

28、255。a 、b 值分别存在片外 3001H 和 3002H单元中,结果存于片外 3000H 单元中。(1) baY25ba,MOV DPTR,#3001HMOVX A,DPTRMOV 30H,A ;a 暂存 30H 单元INC DPLMOVX A,DPTRCJNE A,30H,L1 ;是否 a=bMOV A,#25SJMP SAVEL1: JNC L2MOV B,30HMUL ABSJMP SAVEL2: MOV B,AMOV A,30HDIV ABSAVE: MOV DPTR,#3000HMOVX DPRT,A(2) 10)(22baY10)(,22baMOV DPTR,#3001HMOV

29、X A,DPTRMOV 30H,AINC DPTRMOVX A,DPTRADD A,30HMOV B,AMUL AB ; (ab) 2MOV 31H,ACJNE A,#10,L1SJMP SAVE- 9 -L1: JC L2CLR CSUBB A,#10SJMP SAVEL2: ADD A,#10SAVE: MOV DPTR,#3000HMOVC DPTR,A7、设有两个长度均为 15 的数组,分别存放在以 200H 和 210H 为首地址的存储区中,试编程求其对应项之和,结果存放到以 220H 为首地址的存储区中。答: MOV DPH,#02HMOV R1,#15MOV R2,#00H ;

30、数组 1 首地址低位MOV R3,#10H ; 数组 2 首地址低位MOV R4,#20H ; 和首地址低位L1: MOV DPL,R2MOVX A,DPTRMOV R1,AMOV DPL,R3MOVX A,DPTRADD A,R1MOV DPL,R4MOVX DTPR,AINC R2INC R3INC R4DJNZ R1,L1SJMP $8、设有 100 个无符号数,连续存放在以 2000H 为首地址的存储区中,试编程统计正数、负数和零的个数。答: MOV 30H,#00H ;正数计数器MOV 31H,#00H ;负数计数器MOV 32H,#00H ;零计数器MOV DPTR,#2000HMOV R1,#100L4: MOVX A,DPTRINC DPTRCJNE A,#0,L1INC 32HSJMP L2L1: JC L3INC 30HSJMP L2L3: INC 31HL2: DJNZ R1,L4SJMP $

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

当前位置:首页 > 教育教学资料库 > 参考答案

Copyright © 2018-2021 Wenke99.com All rights reserved

工信部备案号浙ICP备20026746号-2  

公安局备案号:浙公网安备33038302330469号

本站为C2C交文档易平台,即用户上传的文档直接卖给下载用户,本站只是网络服务中间平台,所有原创文档下载所得归上传人所有,若您发现上传作品侵犯了您的权利,请立刻联系网站客服并提供证据,平台将在3个工作日内予以改正。