1.何谓单片机?单片机与一般微型计算机相比,具有哪些特点?答:单片机是在一块集成电路上把CPU、存储器、定时器/计数器及多种形式的I/O接口集成在一起而构成的微型计算机。它与通用微型计算机相比,具有如下特点:(1)单片机的程序存储器和数据存储器是分工的,前者为ROM,后者为RAM;(2)采用面向控制的指令系统,控制功能强;(3)多样化的I/O接口,多功能的I/O引脚;(4)产品系列齐全,功能扩展性强;(5)功能是通用的,像一般微处理机那样可广泛地应用在各个方面。2.8051单片机存储器的组织结构是怎样的?答:8051存储器包括程序存储器和数据存储器,从逻辑结构上看,可以分为三个不同的空间:(1)64KB的程序存储器地址空间:0000H~FFFFH,其中0000H~0FFFH为片内4KB的ROM地址空间,1000H~FFFFH为外部ROM地址空间;(2)256B的内部数据存储器地址空间,00H~FFH,分为两大部分,其中00H~7FH(共128B单元)为内部静态RAM的地址空间,80H~FFH为特殊功能寄存器的地址空间,21个特殊功能寄存器离散地分布在这个区域;(3)64KB的外部数据存储器地址空间:0000H~FFFFH,包括扩展I/O地址空间。3.片内数据存储器分为哪几个性质和用途不同的区域?答:8051内部128B的数据RAM区,包括有工作寄存器组区、可直接位寻址区和数据缓冲区。各区域的特性如下:(1)00H~1FH为工作寄存器组区,共分4组,每组占用8个RAM字节单元,每个单元作为一个工作寄存器,每组的8个单元分别定义为8个工作寄存器R0~R7。当前工作寄存器组的选择是由程序状态字PSW的RS1、RS0两位来确定。如果实际应用中并不需要使用工作寄存器或不需要使用4组工作寄存器,不使用的工作寄存器组的区域仍然可作为一般数据缓冲区使用,用直接寻址或用Ri的寄存器间接寻址来访问。(2)20H~2FH为可位寻址区域,这16个字节的每一位都有一个地址,编址为00H~7FH。当然,位寻址区也可以用作字节寻址的一般数据缓冲区使用。(3)30H~7FH为堆栈、数据缓冲区。4.单片机有哪几个特殊功能寄存器?各在单片机的哪些功能部件中?答:8051单片机内部有21个特殊功能寄存器,在物理上是分散在片内各功能部件中,在数学上把它们组织在内部数据存储器地址空间80H~FFH中,以便能使用统一的直接寻址方式来访问。这些特殊功能寄存器颁在以下各个功能部件中:(1)CPU:ACC、B、PSW、SP、DPTR(由DPL和DPH两个8位寄存器组成);(2)中断系统:IP、IE;(3)定时器/计数器:TMOD、TCOM、TL0、TH0、TL1、TH1;(4)并行I/O口:P0、P1、P2、P3;(5)串行口:SCON、SBUF、PCON。5.PC是什么寄存器?是否属于特殊功能寄存器?它有什么作用?答:PC是16位程序计数器(ProgramCounter),它不属于特殊功能寄存器范畴,程序员不以像访问特殊功能寄存器那样来访问PC。PC是专门用于在CPU取指令期间寻址程序存储器。PC总是保存着下一条要执行的指令的16位地址。通常程序是顺序执行的,在一般情况下,当取出一个指令(更确切地说为一个指令字节)字节后,PC自动加1。如果在执行转移指令、子程序调用/返回指令或中断时,要把转向的地址赋给PC。6.DPTR是什么寄存器?它由哪些特殊功能寄存器组成?它的主要作用是什么?答:DPTR是16位数据指针寄存器,它由两个8位特殊功能寄存器DPL(数据指针低8位)和DPH(数据指针高8位)组成,DPTR用于保存16位地址,作间址寄存器用,可寻址外部数据存储器,也可寻址程序存储器。7.简述单片机程序存储器和数据存储器的区别与类别。(1)区别:程序存储器用来存放单片机的应用程序及运行中的常数数据,数据存储器用于暂存运行期间的数据、现场采集的原始数据、中间结果、运算结果、缓冲和标志位等临时数据。(2)程序存储器类别:1)掩膜ROM、2)可编程只读存储器PROM、3)紫外线擦除可编程只读存储器EPROM、4)电擦除可编程E2PROM、5)快闪存储器(3)数据存储器类别:RAM按器件制造工艺不同分为两类,分别为双极型RAM和MOS型RAM。MOS随机存储器按信息存储的方式又分为静态RAM和动态RAM两种8.MCS-51型单片机控制线有几根?每一根控制线的作用是什么?答:控制线有4条,功能如下:(1)ALE/PROG地址锁存控制信号。在系统扩展时,ALE输出的信号用于控制把P0口输出的低8位地址锁存器锁存起来,配合P0口引脚的第二功能使用,以实现低位地址和数据的隔离。正常操作时因能按晶振频率1/6的固定频率,从ALE端发出正脉冲信号,所以有时可以加以利用,但应注意,每次访问外部数据存储器时,会少输出一个ALE脉冲。此引脚第二功能PROG是对片内程序存储器固化程序时,作为编程脉冲输入端。(2)PSEN外部程序存储器读选通信号。在读外部程序存储器时PSEN有效,发出低电平,可以用作对外部程序存储器的读操作选通信号。(3)EA/Vpp访问程序存储控制信号。当EA信号为低电平时(EA=0),CPU只执行外部程序存储器指令;而当EA信号为高电平时(EA=1),则CPU优先从内部程序存储器执行指令,并可自动延至外部程序存储器单元。对于E2PROM型单片机(89C51)或EPROM型单片机(8751),在E2PROM或EPROM编程期间,第二功能Vpp引脚用于施加一个+12V或+21V电源。(4)RST/VpdRST是复位信号输入端当RST端输入的复位信号延续2个机器周期以上高电平,单片机完成复位初始化操作;第二功能Vpd是备用电源引入端,当电源发生故障电压降低到下限值时,备用电源经此端向内部RAM提供电压,以保护内部RAM中的信息不丢失。9.简述89C51的4个并行I/O端口的功能。答:89C51的并行I/O口为单片机与外部器件或设备进行信息交换提供了多功能的输入/输出通道,是单片机扩展外部功能、构成单片机应用系统的重要物理基础。4个I/O口都具有字节寻址和位寻址功能,每一位均可作为双向的通用I/O功能使用,具体如下:(1)P0口为双功能8位并行I/O口。可作通用数据I/O端口使用;在访问片外扩展的存储器时,又可作地址/数据总线分时传输低8位地址和8位数据。(2)P1口为单一功能的并行I/O口,只用作通用的数据I/O端口。(3)P2口为双功能8位并行I/O口。可作通用数据I/O端口使用,又可在访问片外扩展的存储器时用作高8位地址总线。(4)P3口为双功能8位并行I/O口,第一功能是通用数据I/O端口,还有第二功能。10.什么是堆栈?堆栈指示器SP的作用是什么?在堆栈中存取数据时的原则是什么?答:(1)堆栈是一个特殊的存储区,设在内部RAM中,用来暂存数据和地址,按“先进后出”的原则存取数据。堆栈有入栈和出栈两种操作,用SP作为堆栈指针。(2)系统复位后SP的内容为07H,使得堆栈实际上从08H单元开始。如果需要改变,用户可通过指令在00H-7FH中任意选择。但08H~1FH单元分别属于工作寄存器1~3区,如程序中要用到这些区,则最好把SP值改为1FH或更大的值,堆栈最好在内部RAM的30H~7FH单元中开辟。SP的内容一经确定,堆栈的底部位置即确定,由于SP可用指令初始化为不同值,因此堆栈底部位置是不确定的,栈顶最大可为7FH单元。11.在“MOVCA,@A+DPTR”和“MOVCA,@A+PC”中,分别使用了DPTR和PC作基址,请问这两个基址代表什么地址?使用中有何不同?答:使用@A+DPTR基址变址寻址时,DPTR为常数且是表格的首地址,A为从表格首址到被访问字节地址的偏移量。使用@A+PC基址变址寻址时,PC仍是下条指令首地址,而A则是从下条指令首地址到常数表格中的被访问字节的偏移量。12.MCS-51指令系统主要有哪几种寻址方式?试举例说明。答:MCS-51指令操作数主要有以下7种寻址方式:寻址方式举例立即寻址MOVA,#16直接寻址MOV20H,P1寄存器寻址MOVA,R0寄存器间接寻址MOVXA,@DPTR变址寻址MOVCA,@A+DPRT相对寻址SJMPLOOP位寻址ANLC,70H13.对访问内部RAM和外部RAM,各应采用哪些寻址方式?答:对内部RAM的寻址方式有直接寻址、寄存器间接寻址和可对位寻址的位寻址。对外部RAM的寻址方式只能用寄存器R0/R1(8位地址)或DPTR(16位地址)间接寻址。14.设内部RAM(30H)=5AH,(5AH)=40H,(40H)=00H,端口P1=7FH,问执行下列指令后,各有关存储单元(即R0,R1,A,B,P1,30H,40H及5AH单元)的内容如何?MOVR0,#30H;R0=30HMOVA,@R0;A=5AHMOVR1,A;R1=5AHMOVB,R1;B=5AHMOV@R1,P1;(5AH)=7FHMOVA,P1;A=7FHMOV40H,#20H;(40H)=20HMOV30H,40H;(30H)=20H解:每一条指令执行后的结果如注释字段所标。最后结果为:R0=30H,R1=5AH,A=7FH,B=5AH,P1=7FH,(30H)=20H,(40H)=20H,(5AH)=7FH。5SJMP(短转移)指令和AJMP(绝对转移)指令的主要区别。前者提供了以SJMP的下一条指令的起始地址为中心的256字节范围的转移(-128~+127),后者的转移目标地址必须在与AJMP的下一条指令的第一字节相同的2KB区的程序储存器中。短转移方便了可重定位编码。SJMP方便了PC可重定位编码,但转移范围小。而ASJMP转移范围大,但存在跳区的限制,AJMP指令只能位于2KB区的最后2个字节处时,才可跳到下一个区去。因此用AJMP指令来代替SJMP指令是有条件的,也就是目标地址必须与它下面的指令存放地址在同一个2KB区域内。10.说明无条件转移指令AJMP、SJMP、LJMP和JMP的功能和应用场合。答:AJMP为2KB地址范围内的的转移指令;SJMP为相对转移指令,本指令首地址加上偏移量加上2为跳转到的位置;LJMP为64KB程序存储空间的全范围转移指令,转移的地址可为16位地址中的任意值;JMP间接转移指令。11.何为伪指令?其作用是什么?答:伪指令不属于指令集之中的指令,在汇编过程中的用来控制汇编过程的命令,但具有和指令类似的形式,伪指令没有相应的机器代码产生。其作用是对汇编过程进行某种控制或提供某些汇编信息,不产生可执行的目标代码。12.在程序中出现如下两种指令排序,(1)MOVA,R1(2)ADDA,#18HMOVCA,@A+DPTRMOVCA,@A+PC试指出指令“MOVCA,@A+DPTR”,和“MOVCA,@A+PC”的异同之处,并说明执行指令“MOVA,R1”和“ADDA,#18H”后,A中的内容分别为何含义?答:1、“MOVCA,@A+DPTR”,和“MOVCA,@A+PC”均为查表指令。但DPTR中的内容是表的首地址,它可以是距本条指令64K范围内的一个表的首地址;而PC中的内容是取完本条指令后所得的下一条指令的地址,又A的内容是一个8位的数,所以后者只能寻址离本条指令256个字节范围内的表格。执行“MOVA,R1”后A中内容为欲查参数在表格中的序号;执行“ADDA,#18H”后,A中的内容为欲查表格与查表指令的相对偏移量与欲查参数在表格中的序号之和。13.AT89S51外扩的程序存储器和数据存储器可以有相同的地址空间,但不会发生数据冲突,为什么?答不发生数据冲突的原因是:AT89S51中访问程序存储器和数据存储器的指令不一样。选通信号也就不一样。前者为PSEN,后者为WR与RD。程序存储器访问指令为MOVCA,@DPTR;MOVCA,@A+pc。数据存储器访问指令为:MOVXA,@DPTR;MOVXA,@Ri;MOVX@DPTR,A。14.AT89S51采用6MHz的晶振,定时2ms,如用定时器方式1时的初值(