第01章单片机基础习题解答一、填空题1.MCS-51单片机有4个存储空间,它们分别是:片内程序存储器、片外程序存储器、片内数据存储器、片外数据存储器。2、MCS-51单片机的一个机器周期包括6个状态周期,12个振荡周期。设外接12MHz晶振,则一个机器周期为1μs。3.程序状态字PSW由8位组成,分别是CYACF0RS1RS0OV—P。4.在MCS-51单片机内部,其RAM高端128个字节的地址空间称为特殊功能寄存区/SFR区,但其中仅有21个字节有实际意义。5.通常MCS-51单片机上电复位时PC=0000H、SP=07H、通用寄存器采用第0组,这一组寄存器的地址范围是00~07H。6.MCS-51单片机堆栈遵循先进后出的数据存储原则。7.在MCS-51单片机中,使用P2、P0口传送地址信号,且使用P0口来传送数据信号,这里采用的是复用技术。8.MCS-51单片机位地址区的起始字节地址为20H。9.对于并行口在读取端口引脚信号时,必须先对端口写FFH。10.PC的内容是下一条要执行的指令地址。二、简答题1.MCS-51单片机的引脚按照功能分为几类?并说明各引脚的功能。答:MCS-51单片机的引脚按照功能分为电源和晶振、I/O引线、控制线三类。(1)电源和晶振:Vcc(40):接+5V电源正端。Vss(20):接电源地端。XTAL1(19):接外部石英晶体的一端。XTAL2(18):接外部石英晶体的另一端。(2)I/O引线:MCS-51单片机共有32条I/O引线,分成P0-P3四组,4组端口除了可以做普通I/O口之外,P0口既可以作为8位数据总线还可以分时输出低8位地址,经锁存器锁存形成A0-A7;P1口作为I/O用;P2口还可以输出作为高8位地址A8-A15;P3口具有第二功能,P3.0-P3.7第二功能分别依次为RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD。(3)控制线:ALE(30):地址锁存有效信号输出端。/PSEN(29):片外程序存储器读选通信号输出端,低电平有效。RST/VPD(9):上电复位或掉电保护端。/EA(31):片外程序存储器选用端。该引脚低电平时,只能选用片外程序存储器,否则单片机上电或复位后选用片外程序存储器。2.MCS-51单片机的位寻址区的字节地址范围是多少?位地址范围是多少?答:20H-2FH00H-7FH3.MCS-51单片机的三总线是由哪些口线构成的。答:P0口提供8位数据总线;P0口还可以分时输出低8位地址,经锁存器锁存形成A0-A7,P2口提供高8位地址A8-A15,合起来提供16位地址线。P3口和ALE、/PSEN、RST/VPD、/EA提供控制线。4.MCS-51单片机P0-P3端口在功能上各有什么用途和区别?当它们作为I/O口使用时,具有哪些应用特点?答:51单片机共有P0-P3四个端口,他们除了可以做普通I/O口之外,P0口既可以作为8位数据总线还可以分时输出低8位地址,经锁存器锁存形成A0-A7;P1口仅作为I/O用;P2口还可以输出作为高8位地址A8-A15;P3口具有第二功能,P3.0-P3.7第二功能分别依次为RXD、TXD、/INT0、/INT1、T0、T1、/WR、/RD。作为I/O口使用时的应用特点是:4个并行I/O口均由内部总线控制,端口的功能复用会自动识别,不用用户选择。P0是8位、漏极开路的双向I/O口,可分时复用为数据总线和低8位地址总线,可驱动8个LSTTL负载。作地址/数据总线口时,P0是一真正双向口,而作通用I/O口时,只是一个准双向口。P1是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载。P2是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载,可用作高8位地址总线。P3是8位、准双向I/O口,具有内部上拉电阻,可驱动4个LSTTL负载。P3口的所有口线都具有第二功能。单片机功能多,引脚数少,因而许多引脚都具有第二功能。单片机对外呈现三总线形式,由P2、P0口组成16位地址总线;由P0口分时复用为数据总线;由ALE、/PSEN、RST、/EA与P3口中的/INT0、/INT1、T0、T1、/WR、/RD共10个引脚组成控制总线。5.MCS-51单片机存储器在结构上有什么特点?在物理上和逻辑上各有那几个地址空间?答:MCS-51单片机的存储器采用的是程序存储器与数据存储器截然分开的哈佛结构,即程序存储器和数据存储器各有自己的寻址方式、寻址空间和控制系统。物理上分为4个存储器空间:片内程序存储器、片外程序存储器片内数据存储器、片外数据存储器逻辑上分为3个地址空间:片内、片外统一编址的64KB程序存储器空间片内256B的数据存储器地址空间片外64KB的数据存储器空间6.简述MCS-51单片机00H-7FH片内RAM的功能划分,写出它们的名称以及所占用的地址空间,并说明它们的控制方法和应用特性。答:(1)工作寄存器组(00H——1FH)这是一个用寄存器直接寻址的区域,内部数据RAM区的0—31,共32个单元。它是4个通用工作寄存器组,每个组包含8个8位寄存器,编号为R0——R7。(2)位寻址区(20H——2FH)16个字节单元,共包含128位,这16个字节单元既可以进行字节寻址,又可以实现位寻址。主要用于位操作。(3)堆栈与数据缓冲区(30H——7FH)用于设置堆栈、存储数据7.请写出MCS-51单片机的五个中断源的入口地址。答:MCS-51单片机的五个中断源的入口地址如下:名称入口地址外部中断/INTO0003H定时器T0中断000BH外部中断/INT10013H定时器T1中断001BH串行口接收/发送中断0023H8.MCS-51单片机的片内RAM用户区的字节地址范围是多少?主要用途是什么?答:30H-7FH,主要用于设置堆栈、存储数据9.单片机的复位电路有哪几种形式?试画图说明工作原理。答:MCS-51单片机通常采用上电自动复位、按键手动复位两种方式。如图所示。(a)(b)图复位电路图(a)是常用的上电复位电路,利用电容器充电来实现复位。当加电时,电容C充电,电路有电流流过,构成回路,在电阻R上产生压降,RST引脚为高电平;当电容C充满电后,电路相当于开路,RST的电位与地相同,复位结束。可见复位的时间与充电的时间有关,充电时间越长复位时间越长,增大电容或电阻都可以增加复位时间。图(b)是按键式复位电路。它的上电复位功能与图2-154(a)相同,但它还可以通过按键实现复位。按下按键后,通过两个电阻形成回路,使RST端产生高电平。按键的时间决定了复位的时间。10.试说明MCS-51单片机两种低功耗工作方式的异同。答:MCS-51单片机两种低功耗工作方式由电源控制寄存器PCON(97H)中的PD、IDL两位来控制。当PD=1时,进入掉电方式,振荡器停止工作,芯片所有功能均停止,但片内RAM和SFR内容保持不变。退出掉电方式的唯一方式是硬件复位。当IDL=1时,进入待机方式,CPU时钟被切断,但中断系统、定时器和串行口的时钟信号继续保持,所有SFR保持进入空闲工作方式前的状态。退出待机方式的方式有中断退出和硬件复位退出。三、Proteus仿真在Proteus下,改进、丰富1.3节内容。答:流水灯的流水方式、每个LED的闪烁方式、闪烁时间等都可以改变。如果加上按键,可以实现按键控制。第02章单片机指令系统与汇编语言程序设计习题解答一、填空题1.MCS-51单片机指令系统中有111条指令。2.MCS-51单片机指令中,Rn表示R0、R1、R2、R3、R4、R5、R6、R7中的一个。3.MCS-51单片机指令中,@表示间接寻址。4.MCS-51单片机指令中,$表示当前指令的首地址。5.MCS-51单片机寻址方式有立即数、直接地址、寄存器、寄存器间接、变址、相对、位寻址等七种寻址方式。6.指令MOVCA,@A+PC的功能是将A的内容与PC当前值相加作为程序存储器地址,再将该地址单元的内容传送到A。7.指令JBCCY,LOOP是3字节、2个机器周期指令。8.指令DAA的功能是对A中当前值进行十进制调整。9.调用子程序时,将PC当前值保存到堆栈。10.MCS-51单片机堆栈操作的基本原则是先进后出。二、简答题1.MCS-51单片机指令一般由哪几个部分组成?各部分的功能是什么?答:MCS-51单片机指令一般由标号、操作码助记符、操作数、注释四部分组成。标号是一条指令的标志,是可选字段,与操作码之间用“:”隔开;设置标号的目的是为了方便调用或转移。标号的选择应遵从下列规定:标号由1~8个字母或数字组成,也可以使用一个下划线符号“_”。第一个字符必须是字母。指令助记符或系统中保留使用的字符串不能作为标号。标号后面需要有一个冒号。一条语句可以有标号,也可以没有标号,取决于程序中其它语句是否需要访问这条语句。操作码规定指令的功能,是一条指令的必备字段,如果没有操作码,就不能成为指令。它与操作数之间用“空格”隔开。操作数是指令操作的对象。分为目的操作数和源操作数两类,它们之间用“,”分隔。操作数是可选字段。一条指令可以有0、1、2、3个操作数。注释是对指令功能的说明解释。以“;”开始。2.程序中,伪指令ORG和END的作用是什么?答:ORG用于定义汇编语言源程序或数据块存储的起始地址。END用于指示源程序到此全部结束。在汇编时,对END后面的指令不予汇编。因此,END语句必须放在整个程序的末尾,有且只能有一个。3.简述堆栈指令PUSH和POP的操作过程。答:执行PUSH指令时,先将SP的内容加1,指向新的堆栈栈顶单元,然后将指定地址单元的内容送到堆栈栈顶单元。执行POP指令时,先将SP指向的堆栈栈顶单元内容送到指定地址单元,然后将SP的内容减1,修改堆栈栈顶单元。4.若若SSPP==2255HH,,标标号号LLAABBEELL的的值值为为33445566HH。。指指令令““LLCCAALLLLLLAABBEELL””的的首首地地址址为为22334455HH,,问问执执行行长长调调用用指指令令““LLCCAALLLLLLAABBEELL””后后,,堆堆栈栈指指针针和和堆堆栈栈的的内内容容发发生生什什么么变变化化??PPCC的的值值等等于于什什么么??答答::PC当前值压入堆栈,并转向子程序,SP=27H,(26H)=48H,(27)=23H,PC=3456H5.已已知知SSPP==2255HH,,PPCC==22334455HH,,((2244HH))==1122HH,,((2255HH))==3344HH,,((2266HH))==5566HH。。问问执执行行““RREETT””指指令令以以后后,,SSPP==??PPCC==??答答::SP=23H,PC=3412H6.以下程序段执行后,A=,(30H)=。MOV30H,#0AHMOVA,#0D6HMOVR0,#30HMOVR2,#5EHANLA,R2ORLA,@R0SWAPACPLAXRLA,#0FEHORL30H,A答:答:A=E4H(30H)=EEH7.比较内部RAM中30H和40H单元的二个无符号数的大小,将大数存入20H单元,小数存入21H单元,若二数相等,则使位空间的7FH位置1。答:ORG0000HLJMPMAINORG0100HMAIN:MOVA,30HCJNEA,40H,LOOP1SETB7FHSJMPLOOP3LOOP1:JCLOOP2MOV20H,AMOV21H,40HSJMPLOOP3LOOP2:MOV20H,40HMOV21H,ALOOP3:SJMP$END8.设变量X存在内部RAM的20H单元中,其取值范围为0-5,编一查表程序求其平方值,并将结果存放在内部RAM21H单元。答:ORG0000HLJMPSTARTORG1000HSTART:MOVDPTR,#TABLEMOVA,20HMOVCA,@A+DPTRMOV21H,ASJMP$ORG2000HTABLE:DB0,1,4,9,16,25END9.编写程