2022年单片机原理及应用课后习题参考答案章 .pdf

上传人:C****o 文档编号:40342921 上传时间:2022-09-09 格式:PDF 页数:21 大小:505.99KB
返回 下载 相关 举报
2022年单片机原理及应用课后习题参考答案章 .pdf_第1页
第1页 / 共21页
2022年单片机原理及应用课后习题参考答案章 .pdf_第2页
第2页 / 共21页
点击查看更多>>
资源描述

《2022年单片机原理及应用课后习题参考答案章 .pdf》由会员分享,可在线阅读,更多相关《2022年单片机原理及应用课后习题参考答案章 .pdf(21页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、单片机原理及应用习题答案第一章计算机基础知识1-1 微型计算机主要由哪几部分组成?各部分有何功能?答:一台微型计算机由中央处理单元(CPU)、存储器、I/O 接口及 I/O 设备等组成,相互之间通过三组总线(Bus):即地址总线 AB、数据总线 DB和控制总线 CB来连接。CPU 由运算器和控制器组成,运算器能够完成各种算术运算和逻辑运算操作,控制器用于控制计算机进行各种操作。存储器是计算机系统中的“记忆”装置,其功能是存放程序和数据。按其功能可分为 RAM 和 ROM。输入/输出(I/O)接口是 CPU 与外部设备进行信息交换的部件。总线是将 CPU、存储器和 I/O 接口等相对独立的功能部

2、件连接起来,并传送信息的公共通道。1-3 什么叫单片机?其主要由哪几部分组成?答:单片机(Single Chip Microcomputer)是指把CPU、RAM、ROM、定时器/计数器以及I/O 接口电路等主要部件集成在一块半导体芯片上的微型计算机。1-4 在各种系列的单片机中,片内 ROM 的配置有几种形式?用户应根据什么原则来选用?答:单片机片内 ROM 的配置状态可分四种:(1)片内掩膜(Mask)ROM 型单片机(如 8051),适合于定型大批量应用产品的生产;(2)片内 EPROM 型单片机(如 8751),适合于研制产品样机;(3)片内无 ROM 型单片机(如 8031),需外接

3、 EPROM,单片机扩展灵活,适用于研制新产品;(4)EEPROM(或 Flash ROM)型单片机(如89C51),内部程序存储器电可擦除,使用更方便。1-5 写出下列各数的另两种数制的表达形式(二、十、十六进制)1100010 1001110 10 111111 11101 101 98 20039 585 16236 29 1495 62H 4E47H 249H 3F6CH 1D 5D7 1-6 写出下列各数的 BCD 参与:59:01011001,1996:0001100110010110,4859.2:0100100001011001.0010 名师资料总结-精品资料欢迎下载-名师精

4、心整理-第 1 页,共 21 页 -389.41:001110001001.01000001 第二章MCS-51 单片机的硬件结构2-1 8052 单片机片内包含哪些主要逻辑功能部件?答:8052 单片机片内包括:8 位中央处理器 CPU一个片内振荡器及时钟电路256B数据存储器 RAM。8KB片内程序存储空间 ROM 21 个特殊功能寄存器SFR 4 个 8 位并行 I/O 端口(32 条线)1 个可编程全双工串行口可寻址 64KB的外部程序存储空间和外部数据存储空间3 个 16 位的定时器/计数器6 个中断源、2 个优先级嵌套中断结构2-2 8052 的存储器分哪几个空间?如何区别不同空间

5、的寻址?答:?8052 的存储器分为 6 个编址空间:片内 ROM 的容量为 8KB,其地址为 0000H1FFFH;可扩展片外 ROM 的容量为 64KB,其地址为 0000HFFFFH;片内 RAM 的容量为 256B,其地址为 00HFFH分为二块:地址00H7FH 共128B为片内 RAM 低区,另 128B为片内 RAM 高区,其地址空间为80HFFH,其地址空间与 SFR功能寄存器地址重叠;可扩展片外 RAM 的容量为 64KB,其地址为 0000H1FFFH;特殊功能寄存器SFR的空间为 128B,其地址为 80HFFH,但实际只定义了26B单元,这 26B单元分散在 80HF0

6、H。?程序存储器和数据存储器在逻辑上是完全分开的。CPU 通过指令 MOVC 访问程序存储器。当8052第 31 脚EA接高电平时,CPU将从片内程序存储器0000H单元开始执行,当PC值超出片内程序存储空间,即大于 1FFFH时,会自动转向片外程序存储空间。当EA接低电平时,CPU将从片外程序存储器 ROM 的 0000H单元开始执行。CPU 通过 MOV 指令访问片内数据存储空间RAM,低区 128B地址空间 00H7FH中地址为 00H1FH 这 32 个单元分为 4 个工作寄存器组,分别用R0R7 表示,通过工作寄存器指令进行访问。片内 RAM 中的 20H2FH 单元除可作为一般字节

7、寻址单元使用外,这16 个单元共 128 位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范围为00H7FH;对片内高区128B 寻址只能用寄存名师资料总结-精品资料欢迎下载-名师精心整理-第 2 页,共 21 页 -器间接寻址,而对特殊功能寄存器建起必须使用直接寻址。CPU 通过指令 MOVX 访问片外数据存储器。2-3 DPTR 的作用是什么?它由哪几个寄存器组成?答:相对于地址指针,DPTR 被称为数据指针,但实际上DPTR 中存放的是一个 16 位的地址,作为访问程序存储器和外部数据存储器的地址指针。当对64KB外部数据存储器空间寻址时,作为间址寄存器使用,而在访问程序

8、存储器时,作为基址寄存器使用。DPTR 是一个 16位的特殊功能寄存器,由两个 8位寄存器 DPH、DPL组成,使用 SFR中的 82H和 83H单元。2-4 简述布尔处理存储器的空间分配。答:在单片机中位处理又称布尔处理,允许按位处理的存储器称为布尔处理存储器。其地址空间由二部分构成:一部分是片内RAM中字节地址为20H2FH的 16 字节的 128 个位,这些位编址为00H7FH;另一部分在特殊寄存器中,其地址码能被 8 整除的 12 个特殊功能寄存器可以按位寻址,但其中4 个未定义,一共有 92 位可按位寻址。这二部分结合起来形成一个具有220 位的位寻址空间。2-5 8052 单片机设

9、置 4 组工作寄存器,如何选择确定和改变当前工作寄存器?答:8052 片内数据存储器的00H1FH 这 32 个单元分为 4 级作为 4 个工作寄存器第 0 组地址 00H07H,第一组 08H0FH,第二组 10H17H,第 3 组 18H1FH。每个工作寄存器都有8 个单元,分别用 R0R7 表示。4 组寄存器中每一组都可能被选为 CPU 的工作寄存器,这是通过程序状态字PSW 的 PSW.3(RS0)和 PSW.4(RS1)两位的状态来选择决定的。见下表:PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器组R0R7 0 0 0 组(00H07H)0 1 1 组(08H0FH)1

10、 0 2 组(10H17H)1 1 3 组(18H1FH)通过程序改变 RS1和 RS0的状态,就可方便地更换工作寄存器组。2-6 程序状态字寄存器PSW的作用是什么?常用的状态标志位有哪些位?作用分别是什么?答:PSW 是一个 8 位的特殊功能寄存器,由一些标志位组成,用于存放程序运行中的各种状态信息。它可以进行位寻址。各位的作用如下:Cy:进位标志位。在进行加(或减)法运算时,若操作结果的最高位(D7位)有进位(或借位)时,Cy由硬件置 1,否则 Cy 清 0。在进行位操作时,Cy又是位累加器,指令助记符用C表示。名师资料总结-精品资料欢迎下载-名师精心整理-第 3 页,共 21 页 -A

11、C:辅助进位标志位。在进行加(或减)运算时,若操作结果的低半字节(D3位)向高半字节产生进位(或借位)时,AC位将由硬件自动置1,否则 AC位清0。F0:用户标志位。用户根据需要对F0 置位或复位,作为软件标志。RS1和 RS0:工作寄存器组选择控制位。由用户用软件改变RS1和 RS0的状态,以选择内 RAM 中的哪组工作寄存器为当前工作寄存器组。OV:溢出标志位。当进行补码运算时,运算结果超出128127 范围时,产生溢出,则 OV自动置 1,否则 OV清 0。PSW.1:保留位。8051中未定义。P:奇偶校验标志位。每条指令执行完后,该位始终跟踪累加器A中 1 的数目的奇偶性。如果A中有奇

12、数个 1,则 P1;否则 P0。2-7 8052单片机的EA引脚有何功能?在使用8032 时,EA引脚就如何处理?答:8052单片机的 31脚为EA,EA为访问外部或内部程序存储器控制信号。当EA引脚接高电平且 PC值小于 1FFFH时,CPU 访问内部程序存储器读取指令,当EA引脚接低电平时,CPU 只访问外部等量齐观存储器读取指令。在 8032 芯片中没有内部程序存储器,因此,8032 芯片的 31 脚EA只能接地。2-8 8052 内部 RAM 中低 128 B 单元划分为哪几个主要部分?各部分主要功能是什么?答:8052 内部数据存储器 RAM 中低 128B单元地址空间 00H7FH

13、 被划分为三个部分。第一部分地址为00H1FH 这 32 个单元分为 4 个工作寄存器组,分别用R0R7表示,通过工作寄存器指令进行访问。片内RAM 中的第二部分 20H2FH 单元除可作为一般字节寻址单元使用外,这16 个单元共 128 位中的每一位又可单独作为软件触发器使用,具有位寻址功能,其位地址范围为00H7FH;第三部分地址 30H7FH,这部分存储区域可作为8位数据缓冲区使用,一般地,用户把堆栈就设置在这部分区域。2-9 8052 内部 RAM 中高 128B单元与特殊功能寄存器区地址空间重叠,使用中是如何区分这两个空间的?答:对 8052 片内高区(80H0FFH)128B 只能

14、 采用寄存器间接寻址,而对特殊功能寄存器 SFR建起必须采用直接寻址。2-10 什么叫堆栈?堆栈指针SP的作用是什么?答:堆栈是按照“先进后出,后进先出”的原则来存取数据的一个内部RAM区域,这个存储器区域的一端是固定的(栈底),另一端是活动的(栈顶),每个存储单元是不能按字节任意访问的。名师资料总结-精品资料欢迎下载-名师精心整理-第 4 页,共 21 页 -堆栈指针 SP始终指向栈顶单元,栈顶随着数据入栈和出栈上下浮动。2-12 什么是时钟周期、机器周期和指令周期?答:(1)时钟周期(又称为振荡周期)是指振荡器产生一个振荡脉冲信号所用的时间,是振荡频率的倒数,称为拍节。(2)机器周期是指

15、CPU 完成某一个规定操作所需的时间,8051 单片机的一个机器周期包含6 个状态,并依次表示为S1S6,每个状态分为2 个节拍。因此一个机器周期包含12 个时钟周期(振荡周期),依次表示为:S1P1、S1P2、S2P1、,、S6P1、S6P2。(3)指令周期是指 CPU执行一条指令所需要的时间称为指令周期。MCS-51单片机指令周期根据指令的不同,可包含有1 或 2 或 4 个机器周期。第三章MCS-51 单片机指令系统3-1 指出下列每一条指令的寻址方式及其完成的操作。MOV 2FH,#40H;立即寻址,将 40H移入片内 2FH单元MOV A,2FH;直接寻址,将片内2FH单元的数移入累

16、加器A MOV R1,#2FH;立即寻址,将 2FH移入当前寄存器组的R1单元MOV A,R1;寄存器间接寻址,将寄存器R1中所存地址中的值移入累加器 A MOV 2FH,A;隐含寻址,将累加器A中的值移入片内 2FH单元3-2 内部 RAM 的 4FH单元,可用哪几种寻址方式?分别举例说明。答:直接寻址:MOV R1,4FH 间接寻址:MOV R1,#4FH 寄存器间接寻址:MOV A,R1 3-3 指出下列各条指令中,45H代表什么?MOV A,#45H;数值MOV A,45H;源地址MOV 45H,46H;目标地址MOV 45H,#45H;目标地址和数值MOV C,45H;源地址3-4

17、已知:(A)=7AH,(R0)=30H,(30H)=0A5H,(PSW)=80H,请写出下列各条指令的执行结果:答:PSW 的各位为 11110000,即 Cy=1,AC=1,F0=1,RS1=1,RS0=0,OV=0,P=0(1)SUBB A,30H 结果:(A)=D4H,CY=1,AC=0,OV=1,P=0(2)SUBB A,#30H 名师资料总结-精品资料欢迎下载-名师精心整理-第 5 页,共 21 页 -结果:(A)=49H,CY=0,AC=0,OV=0,P=1(3)ADD A,R0 结果:(A)=AAH,CY=0,AC=0,OV=1,P=0(4)ADD A,30H 结果:(A)=1F

18、H,CY=1,AC=0,OV=0,P=1(5)ADD A,#30H 结果:(A)=AAH,CY=0,AC=0,OV=1,P=0(6)ADDC A,30H 结果:(A)=20H,CY=1,AC=1,OV=0,P=1(7)SWAP A 结果:(A)=A7H,对标志位无影响(8)XCHD A,R0 结果:(A)=75H,(30H)=AAH,(R0)=AAH,P=1(9)XCH A,30H 结果:(A)=0A5H,(30H)=7AH,P=0(10)XCH A,R0 结果:(A)=30H,(R0)=7AH,P=0(11)MOV A,R0 结果:(A)=0A5H,P=0(12)XCH A,R0 结果:(A

19、)=0A5H,(30H)=7AH,P=0 3-5 试分析以下程序段的执行结果:MOV SP,#3AH MOV A,#20H MOV B,#30H PUSH ACC PUSH B POP ACC POP B 结果:(SP)=3AH,(A)=30H,(B)=20H,(3BH)=20H,(3CH)=30H 3-6 指出下列指令的执行结果,并写出每条指令的机器码。MOV 30H,#52H;(30H)=52H 01110101(753052H)MOV A,#70H;(A)=70H 01110100(7470H)MOV A,30H;(A)=52H 11100101(E530H)名师资料总结-精品资料欢迎下

20、载-名师精心整理-第 6 页,共 21 页 -MOV R0,#30H;(R0)=30H 10101000(7830H)MOV A,R0;A=52H 11100010(E6H)3-7 分析下列指令的执行结果,并写出每条指令的机器码。MOV A,#70H;(A)=70H 01110100(74H)MOV DPTR,#2030H;(DPTR)=2030H 10010000(90H)MOVX DPTR,A;(2030H)=70H 11110000(F0H)MOV 30H,#40H;(30H)=40H 01110101(75H)MOV R0,#30H;(R0)=30H 01111000(78H)MOV

21、A,R0;(A)=40H 11100110(E6H)3-8 设 R0的内容为 32H,A的内容为 48H,内部 RAM 的 32H单元内容为 80H,40 单元内容为 08H,指出在执行下列程序段后上述各单元内容的变化。MOV A,R0 MOV R0,40H MOV 40H,A MOV R0,#35H 结果:(R0)=35H,(A)=80,(32H)=08H,(40H)=80H 3-9 已知:(A)=81H,(R0)=20H,(20H)=35H,指出执行完下列程序段后A 的内容。ANL A,#17H;(A)=00000001ORL 20H,A;(20H)=00110101 XRL A,R0;(

22、A)=00110100 CPL A;(A)=11001011 结果:(A)=CBH 3-10 用指令实现下述数据传送:(1)内部 RAM20H 单元送内部 RAM40H 单元。答:MOV 40H,20H(2)外部 RAM20H 单元送 R0寄存器。答:MOV R1,#20H MOVX A,R1 MOV R0,A(3)外部 RAM20H 单元送内部 RAM20H 单元答:MOV R1,#20H MOVX A,R1 MOV 20H,A(4)外部 RAM1000H 单元送内部 RAM20H 单元答:MOV DPTR,#1000H MOVX A,DPTR MOV 20H,A(5)外部 ROM1000H

23、 单元送内部 RAM20H 单元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV 20H,A 名师资料总结-精品资料欢迎下载-名师精心整理-第 7 页,共 21 页 -(6)外部 ROM1000H 单元送外部 RAM20H 单元。答:MOV DPTR,#1000H MOV A,#00H MOVC A,A+DPTR MOV R1,#20H MOVX R1,A 3-11 已知 16 位二进制数的高8 位和低 8 位分别存放在 20H和 21H单元,请编写将其右移一们的程序。CLR C MOV A,20H RRC A MOV 20H,A MOV A,21

24、H RRC A MOV 21H,A3-12 编程实现内部 RAM R0R7 的内容传递到 20H27H单元。3-13 试编程进行两个16 位数的减法,6F5DH-13B4H,结果存入内部RAM 的30H和 31H单元,30H存放差的低 8 位。CLR C MOV A,#5DH SUBB A,#B4H MOV 30H,A MOV A,#6FH SUBB A,13H MOV 31H,A 3-14 编写程序,若累加器A的内容分别满足下列条件时,程序则至LABEL存储单元,设 A中存放的是无符号数。A=10 A0(A)=10 CJNE A,#10H,LAB JNZ LABEL MOV R0,A LAB

25、:JNC LABEL MOV A,#10.CJNE A,R0,LAB LABEL:LABEL:LAB:JNC LABEL.LABEL:3-15 已知(SP)=25H,(PC)=2345H,(24H)=12H,(25H)=34H,(26H)=56H.问此时执行“RET”指令后,(SP)=?,(PC)=?答:(SP)=23H,(PC)=3412H 名师资料总结-精品资料欢迎下载-名师精心整理-第 8 页,共 21 页 -执行 RET时,PCH(SP),SPSP-1,PCL(SP),SPSP-1 3-16 若(sp)=25H,(PC)=2345H,标号 LABEL所在的地址为 3456H,问执行调用

26、指令“LCALL LABEL”后,堆栈指针和堆栈内容发生什么变化?(PC)的值等于什么?答:最后堆栈指针 SP=27H。堆栈指针 SP=26H 处 SP内容为 45H,指针 SP=27H处内容为 23H。最后程序计数器指针PC=3456H。执行 LCALL后,PC PC+3,SP SP+1,(SP)PCL,SP SP+1,(SP)PCH,PCaddr16。3-17 试编写程序,查找在内部RAM 的 20H50H单元中是否有0AAH这一数据。若有,则将51H单元置 01H,若未找到,则将 51H单元置 00H。MOV 51H,#00H;先设没找到MOV R0,#20H;起始地址LOOP:MOV

27、A,R0;取出数字CJNE A,#0AAH,NEXT;不相等就跳转INC 51H;相等将 51 单元置 1 SJMP EEE;找到转去结束NEXT:INC R0;下一个地址CJNE R0,#51H,LOOP;地址没找完就继续EEE:SJMP$;暂停3-18 试编写程序,统计在外部RAM 2000H205FH 单元中出现 00H的次数,并将统计结果丰收入内部RAM 50H 单元。MOV R0,#00H;RO设为计数器,初始为0 MOV DPTR,#2000H;置片外 RAM 起始地址MOV R1,#60H;置传送数据个数LOOP:MOVX A,DPTR;外部 RAM 单元内容送 A JNZ NE

28、XT;传送数据不为 0 跳转INC R0;传送数据为 0,计数器加 1 NEXT:INC DPTR;下一个地址DJNZ R1,LOOP;地址没找完就继续MOV 50H,R0;统计结果存入 50H单元SJMP$;暂停3-19 已知 R3和 R4中存有一个 16 位的二进制数,高位在R3中代位在 R4中。请编程将其求补,并存回原处。答:首先假设R3、R4 中是原码,根据原码求补的方法当最高位(R3的 D7名师资料总结-精品资料欢迎下载-名师精心整理-第 9 页,共 21 页 -位)为 0 时表示为正数,那么补码与原码相同,当最高位为1 时,表明是负数,负数的补码是最高位不变,其余位取反加1.MOV

29、 A,R3 JB ACC.7,NEG SJMP$NEG:MOV A,R4 CPL A CLR C ADD A,#01H MOV R4,A MOV A,R3 CPL A ADDC A,#00H SETB ACC.7 MOV R3,A SJMP$3-20 编写一个程序,把片外RAM 从 2000H开始存放的 10 个数传送到片内RAM 30H 开始单元。START:MOV R0,#30H MOV R1,#10H MOV DPTR,#2000H LOOP:MOVX A,DPTR MOV R0,A INC R0 INC DPTR DJNZ R1,LOOP SJMP$3-21 试编程将内部RAM 的 3

30、0H至 4FH单元的内容分别传送到外部RAM 的2040H205FH 单元。START:MOV R0,#30H MOV R1,#20H MOV DPTR,#2040H LOOP:MOV A,R0 MOVX DPTR,A INC DPTR INC R0 DJNZ R1,LOOP SJMP$3-22 若外部 RAM 的(2000H)=X,(2001H)=Y,编程实现 Z=3X+2Y,结果存入内部 RAM 的 20H单元,设 Z=255。START:MOV DPTR,#2000H MOVX A,DPTR MOV B,#03H MUL AB MOV R0,A INC DPTR MOVX A,DPTR

31、ADD A,A ADD A,R0 MOV 20H,A 3-23 试对内部 RAM 20H 单元的内容进行判断,若为正数,转向2100H若为负数,转向 2200H;若为 0,转向 2300H。START:MOV A,20H JB ACC.7,NEG;为负数名师资料总结-精品资料欢迎下载-名师精心整理-第 10 页,共 21 页 -JNB ACC.7,POSI;为 0 LJMP#2100H SJMP EEE NEG:LJMP#2200H SJMP EEE POSI:LJMP#2300H SJMP EEE EEE:SJMP$3-24 已知 30H、31H中存有一个 16 位二进制数,高位在前低位在后

32、。试编程将它们乘 2,再存回原单位中。START:MOV A,31H ADD A,31H MOV 31H,A MOV A,30H ADDC A,30H MOV 30H,A SJMP$3-25 已知从外部 RAM 2000H开始的单元中有20 个带符号的补码数,试编程把正数和 0 取出来存放到内部RAM20H 开始的存储单元中(负数为作处理)。START:MOV R0,#20H;需处理的数的个数MOV DPTR,#2000H;需处理数的起始地址MOV R1,#20H;用于存储的目标地址LOOP:MOVX A,DPTR JB ACC.7,NEG;负数不需处理MOV R1,A INC R1 NEG:

33、INC DPTR DJNZ R0,LOOP SJMP$第四章 汇编语言程序设计4-1 什么叫伪指令?伪指令与指令有什么区别?答:伪指令不属于单片机指令集中的指令,在汇编时不产生目标代码,不影响程序的执行,仅指明在汇编时执行一些特定的操作。如为程序指定一个存储区、将一些数据、表格常数存放在指定的存储单元、对地址赋用户名等。指令是计算机所能执行的一种基本操作的描述,是计算机软件的基本单元。51 单片机单片机的指令有二种表达方式:机器码指令和汇编语言指令。名师资料总结-精品资料欢迎下载-名师精心整理-第 11 页,共 21 页 -4-2 循环程序由哪几部分组成?答:由初始化部分、循环处理部分、循环控

34、制部分、循环结束部分这四部分组成。4-3 什么是子程序?对于子程序设计有什么要求?答:一段具有某一特定功能,能被其它程序所调用,调用结束后能自动返回到调用处的程序块就称为子程序。对子程序设计的要求:4-4 试对下列程序进行人工汇编,并说明此程序的功能。地址指令码ORG 1000H;ACDL:MOV R0,#25H;1000H 78 25 MOV R1,#2BH;1002H 79 2b MOV R2,#06H;1004H 7A 06 CLR C;1006H C3 CLR A;1007H E4 LOOP:MOV A,R0;1008H E6 ADDC A,R1;1009H 37 DEC R0;100

35、AH 18 DEC R1;100BH 19 DJNZ R2,LOOP;100CH DA FA SJMP$;100EH 80 FE END;1008H-100EH=-06H,其补码为(11111010)20FAH 功能:将 25H单及前 5 个数与 2BH单元及前 5 个数分 6 组相加,结果丢弃。4-5 从内部 RAM 的 20H单元开始,有 15 个数据。试编一程序,把其中的正数、负数分别送到41H 和 61H开始的存储单元,并分别将正数、负数的个数送40H单元和 60H单元。MOV R0,#41H;存放正数的起始地址MOV R1,#61H;存放负数的起始地址MOV SP,#2EH;指明栈顶

36、地址MOV R3,#00H;正数个数MOV R4,#00H;负数个数MOV R7,#15;需判断数的个数LOOP:POP ACC;出栈放入 A 名师资料总结-精品资料欢迎下载-名师精心整理-第 12 页,共 21 页 -JB ACC.7,NEG;负数跳转CJNE A,#00H,LOOP1;非负非零转正数处理SJMP LOOP;零不处理,取下一个数LOOP1:MOV R0,A ;正数保存INC R0;正数存放地址加 1 INC R3;正数个数加 1 SJMP LOOP2;未结束就继续NEG:MOV R1,A;将负数送负数保存地址INC R1;负数地址加 1 INC R4;负数个数加 1 LOOP

37、2:DJNZ R7,LOOP;未结束就继续MOV 40H,R3;正数个数送 40H单元MOV 60H,R4;负数个数送 60H单元SJMP$END 4-6 设内部 RAM 的 30H和 31H单元中有二个带符号数求出其中的大数存放在32H单元中。MOV A,30H XRL A,31H JB ACC.7,LOOP MOV A,30H SUBB A,31H JC LOOP1 MOV 32H,30H SJMP$LOOP1:MOV 32H,31H SJMP$LOOP:MOV A,30H JB ACC.7,LOOP1 MOV 32H,A SJMP$4-7 试编制实现 ASCII 码转十进制数的程序。在8

38、032 单片机内 RAM 的 40H单元中存放一个代码。若此代码为十进制数的ASCII 码,则将其相应的十进制数送片内 RAM 的 50H单元,否则将此单元置成0FFH。MOV A,40H CLR C SUBB A,#30H;数字比其 ASCII 码值小 30H JC LOOP;存的 ASCII 值小于 0 的 ASCII 码值跳转MOV R0,A MOV A,#09H;减 30H后差大于 0,是否不SUBB A,R0;大于 9?名师资料总结-精品资料欢迎下载-名师精心整理-第 13 页,共 21 页 -JC LOOP;差大于 9,跳转MOV 50H,R0;将数字存入 50H单元SJMP$LO

39、OP:MOV 50H,#0FFH;不是数字,存入 0FFH SJMP$END 4-8 试编程将存放在8032 单片机内部 RAM 中首址为 20H、长度为 50H的数据快传送到片外RAM 以 20H为首址的连续单元中。MOV R0,#20H MOV R1,#20H MOV R7,#50H LOOP:MOV A,R0 MOVX R1,A INC R0 INC R1 DJNZ R7,LOOP SJMP$4-9 设一个字符串存放在8032单片机内部 RAM 以 20H为首址的连续单元中,字符串以回车结束。要求统计该字符串中字符C(C=43H)的个数,并将其存入外部 RAM 的 40H单元。试编写实现

40、上述要求的程序。MOV R0,#20H MOV R2,#00H LOOP:MOV A,R0 XRL A,#0DH;判断是否是回车符JZ EXIT MOV A,R0 XRL A,#43H JNZ LOOP2 INC R2 LOOP2:INC R0 SJMP LOOP EXIT:MOV DPTR,#0040H MOV A,R2 MOVX DPTR,A SJMP$END 4-10 设有一长度为20H的字符串,它存放在片外RAM1000H 为首地址的连续单元中。试编制将其中数字与字母分开并将它们送到片内RAM以 30H 和 50H为首地址的连续单元中的程序。MOV DPTR,#1000H MOV R7

41、,#20H MOV R0,#30H MOV R1,#50H LOOP:MOVX A,DPTR CJNE A,#30H,LOOP1 SJMP ISNUM LOOP1:JNC LOOP2 SJMP ISCHAR LOOP2:CJNE A,#3AH,LOOP3 LOOP3:JC ISNUM SJMP ISCHAR 名师资料总结-精品资料欢迎下载-名师精心整理-第 14 页,共 21 页 -ISCHAR:MOV R1,A INC R1 SJMP NEXT ISNUM:CLR C SUBB A,#30H MOV R0,A INC R0 SJMP NEXT NEXT:INC DPTR DJNZ R7,LO

42、OP SJMP$END 4-11 试编程将片内 RAM 区 DATA1 单元开始的 20H个单字节依次与DATA2 单元为起始地址的20H个单字节进行交换。MAIN:MOV R7,#20H DATA1 EQU 20H DATA2 EQU 40H MOV R0,#DATA1 MOV R1,#DATA2 LOOP:MOV A,R0 XCH A,R1 MOV R0,A INC R0 INC R1 DJNZ R7,LOOP SJMP$END 4-13 设片内 RAM 的 20H4FH 单元中有若个无符号数,试编程求出其中的最大值及所在单元地址,将最大值存入片内RAM 的 50H单元,最大值所在单元地址

43、存入片内 RAM 的 51H单元。MOV R0,#20H MOV R7,#20H MOV A,R0 MOV R2,A MOV A,R0 MOV R1,A LOOP:INC R0 CLR C SUBB A,R0 JNC LOOP1 MOV A,R0 MOV R2,A MOV A,R0 MOV R1,A LOOP1:MOV A,R1 DJNZ R7,LOOP MOV 50H,R1 MOV 51H,R2 SJMP$END 4-14 设片外 RAM 从 1000H单元开始存放 100 个无符号 8 位二进制数。试编程将它们从大到小依次入片内RAM 从 10H开始的单元中。MOV R7,#100 MOV

44、 DPTR,#1000H MOV R0,#10H LOOP:MOVX A,DPTR MOV R0,A INC DPTR INC R0 DJNZ R7,LOOP 名师资料总结-精品资料欢迎下载-名师精心整理-第 15 页,共 21 页 -MOV R7,#99 MOV R6,#99 NEXT:MOV R0,#10H MOV A,R0 MOV R1,A LOOP2:INC R0 MOV A,R0 CLR C SUBB A,R1 JNZ LOOP3 SJMP LOOP4 LOOP3:JC LOOP4 MOV A,R0 DEC R0 MOV R0,A MOV A,R1 INC R0 MOV R0,A L

45、OOP4:MOV A,R0 MOV R1,A DJNZ R7,LOOP2 DEC R6 MOV A,R6 MOV R7,A INC R6 DJNZ R6,NEXT SJMP$END 4-15 设有 2 个 4B 的 BCD数:X=24350809,Y=12450379。X 从片内 RAM 的25H单元开始存放,Y从片内 RAM 的 35H单元开始存放,求两数的和。设数据在内存中按照低字节在前,高字节在后的顺序存放。MOV 25H,#24H MOV 26H,#35H MOV 27H,#08H MOV 28H,#09H MOV 35H,#12H MOV 36H,#45H MOV 37H,#03H

46、MOV 38H,#79H MOV R7,#04H MOV R0,#25H MOV R1,#35H CLR C LOOP:MOV A,R0 ADDC A,R1 DA A MOV R0,A INC R0 INC R1 DJNZ R7,LOOP SJMP$END4-16 设晶振频率为 6MHz,试编一能延时 20ms的子程序答:一个机器周期T=12/6*106=2 s,延时 20ms需要 20000/2=10000 个机器周期。拟用以下程序:工作需要机器周期数START:MOV R6,#data1;1 LOOP1:MOV R7,#data2;1 名师资料总结-精品资料欢迎下载-名师精心整理-第 16

47、 页,共 21 页 -NOP;1 NOP;1 LOOP:NOP;1 NOP;1 NOP;1 DJNZ R7,LOOP;2 DJNZ R6,LOOP;2 RET;2 延时周期数为 1+(5*data2+5)*data1+2,选择最合适的 data1 和 data2 Data1=200,data2=99,延时机器周期数为10003个,延时 20.006ms 4-17 利用查表技术将累加器A中的一位 BCD码转换成相应的十进制数的七段码,结果仍放在A 中(设显示管09 的七段码分别是40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH)。SUB1:INC A MOVC A,

48、A+PC RET DB 40H,79H,24H,30H,19H,12H,02H,78H,00H,1BH 4-18 试编一采用查表法求120的二次方数的子程序。要求:X在累加器 A中,1X20,二次方高位存放在R6中,低位存放在R7中。SUB:MOV DPTR,#0100H MOV R0,A ADD A,R0 MOV R0,A MOVC A,A+DPTR MOV R7,A INC DPTR MOV A,R0 MOVC A,A+DPTR MOV R6,A RET ORG 102H DB 01H,00H,04H,00H,09H,00H,10H,00H,19H,00H DB 24H,00H,31H,0

49、0H,40H,00H,51H,00H,64H,00H DB 79H,00H,90H,00H,0A9H,00H,0C4H,00H,0E1H,00H 名师资料总结-精品资料欢迎下载-名师精心整理-第 17 页,共 21 页 -DB 00H,01H,21H,01H,44H,01H,69H,01H,90H,01H 第五章 MCS-51 单片机中断系统5-1 MCS-51 单片机的中断系统由哪些功能部件组成?分别有什么作用?答:51 单片机的中断系统由与中断有关的特殊功能寄存器(中断允许控制寄存器 IE、中断优先等控制寄存器IP、定时器/计数器控制寄存器 TCON、T2CON、串行口控制寄存器SCON)

50、和 6 个中断源(2 个外部中断源0INTP3.2、1INT P3.3,3个定时器/计数器中断源 T0P3.4、T1P3.5、T2P1.0),1 个串行接口中断源(RXDp3.0 接收数据中断、TXDpP3.1发送数据中断)组成。中断允许控制寄存器IE 由七个控制位构成,其中D7位 EA是所有中断的总开关,若 EA=1,CPU 中断允许,EA=0时,CPU 屏蔽一切中断请求。其余 6 位 D5D0分别控制 6 个中断源,置 1 为允许申请中断,清 0 为禁止申请中断。其字节地址是 A8H,位地址是 A8HADH 和 AFH,每位都可由软件来置1 或清 0。中断优先等控制寄存器IP 用于设置每个

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

当前位置:首页 > 教育专区 > 高考资料

本站为文档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