绪论习题参考答案0-1什么是单片机?它与一般微型计算机在结构上何区别?答:单片微型计算机简称为单片机(SingleChipComputer),又称为微控制器(MCU即Micro-ControllerUnit)。它是在一块芯片上集成了中央处理器(CPU)、存储器(RAM、ROM)、定时器/计数器、中断控制、各种输入/输出(I/O)接口(如并行I/O口、串行I/O口和A/D转换器)等为一体的器件。微型计算机的基本结构由CPU(运算器、控制器)、存储器、输入设备和输出设备五大部分组成,各部分通过外部总线连接而成为一体。单片机的结构是在一块芯片上集成了中央处理器(CPU)、存储器、定时器/计数器、中断控制、各种输入/输出接口(如并行I/O口、串行I/O口和A/D转换器)等,它们通过单片机内部部总线连接而成为一体。0-2MCS-51系列单片机内部资源配置如何?试举例说明8051与51兼容的单片机的异同。答:MCS-51系列单片机内部资源配置型号程序存储器片内RAM定时/计数器并行I/O口串行口中断源/中断优先级8031/80C31无128B2×164×815/28051/80C514KBROM128B2×164×815/28751/87C514KBEPROM128B2×164×815/28032/80C32无256B3×164×816/28052/80C524KBROM256B3×164×816/28051与51兼容的单片机的异同厂商型号程序存储器片内RAM定时/计数器并行I/O口串行口中断源/优先级其它特点Intel8051/80C514KBROM128B2×164×815/2ATMELAT89C20512KBFlashROM128B2×161516/2直接驱动LED输出,片上模拟比较器AT89S5312KBFlashROM256B3×163219/2SPI,WDT,2个数据指针W77E5832KBFlashROM256B+1024B3×1636212/2扩展了4位I/O口,双数据指针,WDT。AnalogDevicesADuC8128KBEEPROM256B+640B2×163219/2WDT,SPI,8通道12位ADC,2通道12位DAC,片上DMA控制器。.飞利浦80C552无256B3×1648115/4CMOS型10位ADC,捕捉/比较单元,PWM83/87C5528KBEEPROM256B3×1648115/4CMOS型10位ADC,捕捉/比较单元,PWM83/89CE55832KBEEPROM256B+1024B3×1640115/48通道10位ADC,捕捉/比较单元,PWM,双数据指针,I2C总线,PLL(32kHz)。83C59216KBEEPRO256B+3×1648215/2CMOS型CAN微控制器M256BSSTSST89E55432KB+8KBFlashROM1KB3×163228/440MHz,SPI,双数据指针,WDT。TIMSC1210Y24KB+2KBFlashROM1280B3×163222132位累加器,WDT,SPI,低电压检测,16位PWM。英特尔87C5416KBEPROM256B3×163217/4具有帧错误检测的可编程串口。83/87C51GB8KBEPROM256B3×1648115/4PWM,WDT,8通道8位ADC,具有帧检测和识别的串口。第1章MCS-51单片机的结构与原理1-1MCS-51系列单片机内部有哪些主要的逻辑部件?答:一个8位CPU;一个片内振荡器及时钟电路;4K字节ROM程序存储器;128字节RAM数据存储器;两个16位定时器/计数器;可寻址64K外部数据存储器和64K外部程序存储器空间的控制电路;32条可编程的I/O线(四个8位并行I/O端口);一个可编程全双工串行口;具有五个中断源、两个优先级嵌套中断结构1-2MCS-51设有4个8位端口(32条I/O线),实际应用中8位数据信息由哪一个端口传送?16位地址线怎样形成?P3口有何功能?答:实际应用中8位数据信息由P1口传送。16位地址线由P0口输出低8位地址A7~A0,P2口输出高8位地址A15~A8。P3口是一个多用途的端口,也是一个准双向口,作为第一功能使用时,其功能同P1口;当作第二功能使用时,P3.0—RXD串行输入(数据接收)口,P3.1—TXD串行输出(数据发送)口,P3.2—0INT外部中断0输入线,P3.3—1INT外部中断1输入线,P3.4—T0定时器0外部输入,P3.5—T1定时器1外部输入,P3.6—WR外部数据存储器写选通信号输出,P3.7—RD外部数据存储器读选通信号输入。1-3MCS-51的存储器结构与一般的微型计算机有何不同?程序存储器和数据存储器各有何作用?答:MCS-51存储器结构与常见的微型计算机的配置方式不同,它把程序存储器和数据存储器分开,各有自已的寻址系统、控制信号和功能。程序存储器用来存放程序和始终要保留的常数,如经汇编后所编程序的机器码。数据存储器通常用来存放程序运行中所需要的常数或变量,例如模/数转换时实时采集的数据等。1-4MCS-51内部RAM区功能结构如何分配?4组工作寄存器使用时如何选用?位寻址区域的字节地址范围是多少?答:MCS-51系列单片机内部数据存储器:00H~7FH单元组成的低128字节地址空间的RAM区,又分为为工作寄存器区(00H~1FH)、位寻址区(20H~2FH)和数据缓冲区(30H~7FH)。80H~FFH(128~255)单元组成的高128字节地址空间的特殊功能寄存器(又称SFR)区。对于8032、8052、8752的单片机还有80H~FFH单元组成的高128字节地址空间的RAM区。4组工作寄存区是由程序状态字PSW(特殊功能寄存器,字节地址为0D0H)中的D4、D3位(RS1和RS0)来决定的。PSW.4(RS1)PSW.3(RS0)当前使用的工作寄存器区R0~R7000区(00~07H)011区(08~0FH)102区(10~17H)113区(18~1FH)位寻址区域的字节地址范围是20H~2FH(对应的位地址范围是00H~7FH)。1-5特殊功能寄存器中哪些寄存器可以位寻址?它们的字节地址是什么?答:P0字节地址80H,TCON字节地址88H,P1字节地址90H,SCON字节地址98H,P2字节地址A0H,IE字节地址A8H,P3字节地址B0H,IP字节地址B8H,PSW字节地址D0H,ACC字节地址E0H,B字节地址F0H。1-6简述程序状态字PSW中各位的含义。答:CY(PSW·7)进位标志,AC(PSW·6)辅助进位标志,F0(PSW·5)用户标志位RS1、RS0(PSW·4、PSW·3)寄存器区选择控制位,OV(PSW·2)溢出标志,P(PSW.0)奇偶标志,每个指令周期都由硬件来置位或清“0”,以表示累加器A中1的位数的奇偶数1-7一个时钟频率为6MHz的单片机应用系统,它的时钟周期、机器周期、指令周期分别是多少?答:时钟周期=1/3us、机器周期=2us、指令周期=2us。1-8单片机有几种主要的工作方式?其特点各是什么?答:有复位、程序执行、低功耗三种主要工作方式。复位操作是单片机的初始化操作,单片机在进入运行前和在运行过程中程序出错或操作失误使系统不能正常运行时,需要进行复位操作,复位操作后,程序将从0000H开始重新执行。单片机的程序的执行过程分为取指令、译码、执行三个过程。待机方式,也称为空闲工作。系统进入待机工作方式时,振荡器继续工作,中断系统、串行口以及定时器模块由时钟驱动继续工作,但时钟不提供给CPU。单片机进入掉电工作方式,只有内部RAM单元的内容被保存,其它一切工作都停止。1-9堆栈有何功能?堆栈指针的作用是什么?二者的关系?为什么在程序设计时,要对SP重新赋值?答:堆栈的主要功能:保护断点和程序现场,保存用户数据。堆栈指针的作用是:堆栈指针SP是一个8位特殊功能寄存器,指示出堆栈顶部在内部RAM中的位置。两者的关系:堆栈指针SP给定当前的栈顶,SP的初始值越小,堆栈深度就越深。系统复位后,SP初始化为07H,使得堆栈事实上由08H单元开始。考虑到08H~1FH单元分属于工作寄存器区1~3,若程序设计中要用到这些区,则最好把SP值改置为1FH或更大的值如60H,SP的初始值越小,堆栈深度就越深,堆栈指针的值可以由软件改变,因此堆栈在内部RAM中的位置比较灵活。第2章MCS-51指令系统习题参考答案2-1判断下列指令的正误:1)MOV28H,@R22)DECDPTR3)INCDPTR4)CLRR05)CPLR56)MOVR0,R17)PUSHDPTR8)MOVF0,C9)MOVF0,ACC.310)MOVXA,@R111)MOVC,30H12)RLCR0答:错、错、对、错错、错、错、对错、对、对、错2-2判断下列说法是否正确。A、立即寻址方式是被操作的数据本身在指令中,而不是它的地址在指令中。B、指令周期是执行一条指令的时间。C、指令中直接给出的操作数称为直接寻址。答:对、对、错2-3在基址加变址寻址方式中,以()作变址寄存器,以()或()作基址寄存器。答:累加器A,DPTR、PC2-4指令格式是由()和()所组成,也可能仅由()组成。答:操作码、操作数、操作码2-5设内部RAM中59H单元的内容为50H,写出当执行下列程序段后寄存器A,R0和内部RAM中50H,51H单元的内容为何值?MOVA,59H;A=50HMOVR0,A;R0=50HMOVA,#00H;A=00HMOV@R0,A;50H=00HMOVA,#25H;A=25HMOV51H,A;51H=25HMOV52H,#70H;52H=70H答:A=25HR0=50H50H=00H51H=25H2-6访问外部数据存储器和程序存储器可以用哪些指令来实现?举例说明。答:访问外部数据存储器指令有:MOVX@DPTR,AMOVDPTR,#0100HMOV@DPTR,AMOVXA,@DPTRMOVDPTR,#0200HMOVA,@DPTRMOVXA,@RiMOVXA,@R0MOVX@Ri,AMOVX@R1,A访问程序存储器指令有:MOVA,@A+PCMOVCA,@A+DPTR2-7设堆栈指针SP中的内容为60H,内部RAM中30H和31H单元的内容分别为24H和10H,执行下列程序段后,61H,62H,30H,31H,DPTR及SP中的内容将有何变化?PUSH30H;61H=24HPUSH31H;62H=10HSP=62HPOPDPL;DPL=10HPOPDPH;DPH=24HSP=60HMOV30H,#00H;30H=00HMOV31H,#0FFH;31H=0FFH2-8设(A)=40H,(R1)=23H,(40H)=05H。执行下列两条指令后,累加器A和R1以及内部RAM中40H单元的内容各为何值?XCHA,R1;A=23HR1=40HXCHDA,@R1;A=25H40H=03H2-9两个四位BCD码数相加,被加数和加数分别存于50H,51H和52H,53H单元中(千位、百位在低地址中,十位、个位在高地址中),和存放在54H,55H和56H中(56H用来存放最高位的进位),试编写加法程序。ORG0000HLJMPSTARTORG0100HSTART:MOVA,53HADDA,51HDAAMOV55H,AMOVA,52HADDCA,50HDAAMOV56H,CSJMP$END2-10设(A)=01010101B,(R5)=10101010B,分别写出执行下列指令后结果。ANLA,R5;00000000BORLA,R5;11111111BXRLA,R5;11111111B2-11指令SJMPrel中,设rel=60H,并假设该指令存放在2114H和2115H单元中。当该条指令执行后,程序将跳转到何地址?答:2116H+60H=2176H2-12简述转移指令AJMPaddr11、SJMPrel、LJMPaddr16及JMP@A+DPTR的