《单片机原理与应用技术》(高惠芳版)习题参考答案:第二章(p38)习题第(1)题:MCS-51单片机芯片包含哪些主要功能部件?8051单片机是个完整的单片微型计算机。芯片内部包括下列主要功能部件:1)8位CPU;2)4KB的片内程序存储器ROM。可寻址64KB程序存储器和64KB外部数据存储器;3)128B内部RAM;4)21个SFR;5)4个8位并行I/O口(共32位I/O线);6)一个全双工的异步串行口;7)两个16位定时器/计数器;8)5个中断源,两个中断优先级;9)内部时钟发生器。第(4)题:MCS-51单片机的四个I/O口在使用上各有什么功能和特点?1)P0口:8位双向三态端口,外接上拉电阻时可作为通用I/O口线,也可在总线外扩时用作数据总线及低8位地址总线。2)P1口:8位准双向I/O端口,作为通用I/O口。3)P2口:8位准双向I/O端口,可作为通用I/O口,也可在总线外扩时用作高8位地址总线。3)P3口:8位准双向I/O端口,可作为通用I/O口,除此之外,每个端口还有第二功能,比如有的端口用作串行通信口,有的端口用作外部中断信号输入口,有的端口用作计数脉冲输入引脚,有的端口用作读/写控制线。实际应用中常使用P3口的第二功能。第(5)题:MCS-51单片机的存储器分那几个空间?作用是啥?8051存储器包括程序存储器和数据存储器,从逻辑结构上看,可以分为三个不同的空间:1)64KB片内片外统一编址的程序存储器地址空间,地址范围:0000H~FFFFH,对于8051单片机,其中地址0000H~0FFFH范围为4KB的片内ROM地址空间,1000H~FFFFH为片外ROM地址空间;2)256B的内部数据存储器地址空间,地址范围为00H~FFH,对于8051单片机,内部RAM分为两部分,其中地址范围00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域;对于8052系列单片机还有地址范围为80H~FFH的高128B的静态RAM。3)64KB的外部数据存储器地址空间:地址范围为0000H~FFFFH,包括扩展I/O端口地址空间。第(6)题:RAM内包含哪些可位寻址单元?片内RAM中,20H~2FH是位寻址区,共16个单元,每个单元的每一位都有地址,位地址范围是00H~7FH,共128位可寻址位。第(7)题:堆栈?SP的作用?为何要对SP重新赋值?1)堆栈是一种数据结构,是只允许数据在其一端进出的一段存储空间;为程序调用和中断操作而设立,用作现场保护和断点保护。2)堆栈指针SP用来存放堆栈的栈顶地址。3)复位后,SP的初值为07H,由于片内RAM的07H单元的后继区域分别为工作寄存器区和位寻址区,通常这两个区域在程序中有其它重要用途,所以用户在设计程序时,一般都将堆栈设在内部RAM的30H~7FH地址空间的高端区域,而不设在工作寄存器区和位寻址区。第(10)题:振荡周期、时钟周期、机器周期、指令周期?1)振荡周期是指为单片机提供脉冲信号的振荡源的周期,是单片机最基本的时间单位。通常由外接晶振与内部电路来提供振荡脉冲信号,其频率记为OSCf,此频率的倒数即是振荡周期。2)振荡脉冲经过二分频后就是单片机的时钟信号,时钟信号的周期称为时钟周期,又定义为状态,用S表示。时钟周期是振荡周期的二倍。3)机器周期是指令执行过程中完成某一个基本操作所需的时间。一个机器周期等于12个振荡周期。即OSCMfT12。4)指令周期是指执行一条指令所需要的时间,根据指令不同,可包含1、2、4个机器周期。第(13)题:开机复位后,单片机使用的是哪组工作寄存器?其地址是啥?如何改变当前工作寄存器组?开机复位后,单片机使用的是第0组工作寄存器。它们的地址范围是00H~07H。对PSW寄存器的RS0、RS1两位的置位或复位即可改变单片机当前使用的工作寄存器组。第三章(p66)2、MCS-51单片机有哪几种寻址方式?各有什么特点?寻址范围是什么?MCS-51单片机有7种寻址方式。(1)立即寻址。操作数直接在指令中给出,它可以是二进制、十进制、十六进制数,也可以是带单引号的字符,通常把这种操作数称为立即数,它的寻址范围就是指令本身所在的程序存储单元。(2)直接寻址。在指令中直接给出存放操作数的内存单元的地址。寻址范围为:内部RAM低128字节单元,特殊功能寄存器。(3)寄存器寻址。指令中给出的是操作数所在的寄存器。寻址范围为:4组工作寄存器(R0~R7),部分特殊功能寄存器,如A、B、DPTR。(4)寄存器间接寻址。存放操作数的内存单元的地址放在寄存器中,指令只给出寄存器(包括Ri和DPTR),寄存器名称前加“@”前缀标志。寻址范围:地址范围从00~FFH的全部内部RAM单元,包括堆栈区,但不包括特殊功能寄存器,以及地址范围从0000~FFFFH的全部片外RAM。(5)变址寻址。将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。变址寻址主要用于查表操作。寻址范围:64KB的程序存储空间。(6)相对寻址。指令中给出的操作数是程序相对转移的偏移量。偏移量是一个带符号的单字节数,范围为-128~+127。(7)位寻址。操作数是位地址。寻址范围:内部RAM位寻址区共128位(位地址:00~7FH),11个特殊功能寄存器中的可寻址位(对于8051,有83位)。3、对片内RAM可以用哪几种寻址方式?对片外RAM可以用哪几种寻址方式?对片内RAM的工作寄存器区(00~1FH)可以用直接寻址、寄存器寻址和寄存器间接寻址;位寻址区(20~2FH)可以用直接寻址、寄存器间接寻址和位寻址;用户RAM区(30~7FH)可以用直接寻址、寄存器间接寻址;内部RAM的高128B(80~FFH)只能用寄存器间接寻址;内部RAM的特殊功能寄存器区(80~FFH)用直接寻址。对于片外RAM,可以通过寄存器Ri进行256B的分页间接寻址或通过DPTR进行64KB范围的寄存器间接寻址。4、对片外RAM单元的寻址中,用Ri间接寻址与用DPTR间接寻址有啥区别/对片外RAM单元寻址时,可用Ri进行分页间接寻址,亦即只能在当前页面内间接寻址,页面大小为256个字节,页面地址由特殊功能寄存器P2决定;也可用DPTR进行间接寻址,寻址范围为64K字节,即256个页面内的任一单元均可寻址。5、指出下列指令操作数的寻址方式?①立即寻址MOVA,#00H②直接寻址MOVA,50H③寄存器间接寻址MOVA,@R0④寄存器寻址MOVA,R5⑤变址寻址MOVA,@A+DPTR⑥相对寻址SJMP70H⑦直接寻址或寄存器寻址CLRA11、①ANLA,#0FCH累加器A的低2位清零,其余位不变;②ORLA,#0C0H累加器A的高2位置1,其余位不变;③XRLA,#0F0H累加器A的高4位取反,其余位不变;④XRLA,#55H累加器A的第0、2、4、6位取反,其余位不变;12、已知A=78,R1=78H,B=04H,CY=1,片内RAM78H=0DDH,80H=6CH,试分别写下列指令执行后单元的结果和相应标志位的值。①(A)=55H,CY=1,ADDA,@R1②(A)=0,CY=0,SUBBA,#77H③(B)=01H,(A)=0E0H,CY=0MULAB④(A)=1EH,(B)=0,CY=0,DIVAB⑤(78H)=58H,CY=1,ANL78H,#78H⑥(A)=7FH,CY=1,ORLA,#0FH⑦(80H)=14H,CY=1,XRL80H,A13、写出下列指令的执行成果。MOVA,#7FHCPLARRASWAPA(A)=4或4H或04H18、编程:在外部数据存储器首地址为TABLE的数据表中存有10B的数据,编程将每个字节的最高位置1,并返回原来的单元ORG0000HLJMPMAINORG0100HMAIN:MOVDPTR,#TABLEMOVR0,#10LOOP:MOVXA,@DPTRORLA,#80H或SETBACC.7MOVX@DPTR,AINCDPTRDJNZR0,LOOPSJMP$END第四章(p95)第(2)题编程:设内部RAM5AH单元中有一个变量X,轻编写计算下属函数式的程序,结果存入5BH单元。Y=X2+8X2-141ORG0000HLJMPSTARTORG0100HSTART:CLRCMOVA,5AHSUBBA,#10JCLOWER10CLRCMOVA,5AHCJNEA,#15,IFL15BE1015:MOVA,5AHMOVB,AMULABADDA,#8AJMPSAVEIFL15:JNCLARGE15SJMPBE1015LOWER10:MOVA,5AHMOVB,AMULABDECAAJMPSAVELARGE15:MOVA,#41SAVE:MOV5BH,ASJMP$END第(10)题编程在以2000H为首地址的存储区中,存放着20个用ASCII吗表示的0-9的数。试编程将他们转化为BCD吗,并以压所BCD吗的形式存放在3009H单元中。ORG0000HLJMPSTARTORG0100HSTART:MOVDPTR,#2000HMOVR2,#10MOVR0,#00HMOVP2,#30HLOOP:MOVXA,@DPTRSUBBA,#30HMOVR3,AINCDPTRMOVXA,@DPTRSUBBA,#30HSWAPAADDA,R3MOVX@R0,AINCDPTRINCR0DJNZR2,LOOPSJMP$END第6章(p195)第(1)题参考答案:①什么是中断?单片机正常工作时,按用户程序逐条执行指令,如果系统中出现某些急需处理的事件,CPU暂时终止当前的程序,转而去执行服务程序,以对发生的更紧迫的事件进行处理,待服务程序结束后,CPU自动返回原来的程序继续执行,这个过程就称为中断。②有几个中断源?MCS-51单片机有5个中断源:外部中断0、定时/计数器T0的溢出中断、外部中断1、定时/计数器T1的溢出中断、串行口收发中断,对应的中断请求标志为IE0、TF0、IE1、TF1、TI/RI。③如何提出中断?中断源产生中断信号后,中断系统把相应的中断标志置位,在中断允许的前提下,由中断标志触发中断请求。④单片机如何进行中断响应?中断响应过程:第一步,对于外部中断,需要由CPU采样外部中断请求信号,若采样到后,把相就的中断请求标志置位;第二步,查询各个中断标志位;第三步,进行中断响应,由硬件自动生成一条长调用指令“LCALL#addr16”进行断点保护后转向中断服务程序。第(2)题MCS51的中断源中,哪些中断请求信号在中断响应是可自动清除?那些不能?不能的如何处理?参考答案:在中断响应时,可以自动清除的中断请求信号有:①定时/计数器的溢出标志TF0/TF1;②脉冲方式的外部中断请求IE0/IE1;在中断响应时,不能自动清除的中断请求信号有:①电平方式的外部中断请求,处理方法:中断响应后通过软硬件结合的方法把输入端的低电平强制改成高电平,再软件清IE0/IE1。②串行中断,处理方法:中断响应后,在中断服务程序中查询RI/TI,以确定是接收中断还是发送中断,查询以后由指令(即软件方法)对RI/TI清零。第(3)题8051中断优先级有几级?在形成中断嵌套时各级有何规定?参考答案:8051单片机的中断优先级有高低两个优先级。在形成中断嵌套时,低优先级中断请求不能打断高优先级的中断服务。高优先级中断请求可以打断低优先级的中断服务,从而实现中断嵌套。如果一个中断请求已被响应,则同级的中断请求将被禁止,即同级中断不能嵌套。如果同级的多个中断请求同时出现,则由单片机内部硬件查询,按自然响应顺序确定响应哪个中断请求。各个中断源自然响应的先后顺序为:外部中断0,定时/计数器T0,外部中断1,定时/计数器T1中断,串行口中断。第(4)题MCS51响应中断后,各中断入口地址是啥?参考答案:外部中断0入口地址:0003H定时/计数器T0中断入口地址:000BH外部中断1入口地址:0013H定时/计数器T1中断入口地址:001BH串