单片机期末复习总结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位定时器/计数器;08)5个中断源,两个中断优先级;9)内部时钟发生器。2.MCS-51单片机的4个I/O口在使用上各有什么功能?1)P0口:8位双向三态端口,外接上拉电阻时可作为通用I/O口线,也可在总线外扩时用作数据总线及低8位地址总线。2)P1口:8位准双向I/O端口,作为通用I/O口。3)P2口:8位准双向I/O端口,可作为通用I/O口,也可在总线外扩时用作高8位地址总线。4)P3口:8位准双向I/O端口,可作为通用I/O口,除此之外,每个端口还有第二功能。实际应用中常使用P3口的第二功能。P3的第二功能:引脚第二功能第二功能信号名称P3.0RXD串行输入P3.1TXD串行输出P3.2INT0外部中断0请求输入端,低电平有效P3.3INT1外部中断1请求输入端,低电平有效P3.4T0定时/计数器0的计数脉冲输入端P3.5T1定时/计数器1的计数脉冲输入端P3.6WR外部RAM写选通信号输入端,低电平有效P3.7RD外部RAM写选通信号输出端,低电平有效【注】:P0口必须接上拉电阻;I/O口准双向:MCS-51单片机I/O口做输入之前要先输出1.这种输入之前要先输出1的I/O口线叫做准双向I/O口,以区别真正的输入,输出的双向I/O口。3.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端口地址空间。4.数据存储器MCS-51基本型单片机内部数据存储器有256B的存储空间,地址为00H~FFH;外部数据存储器的地址空间最大为64KB,编址为0000H~FFFFH。256B的内部存储器按功能划分为两部分:地址为00H~7FH的低128B的基本RAM区和地址为80H~FFH的高128B的特殊功能寄存器(SFR)区基本RAM区分为工作寄存器区,位寻址区,用户RAM区工作寄存区(00H~1FH):共分为4组,每组由8个工作寄存器,编号R0~R7位寻址区(20H~2FH):16个单元,既可以作为普通RAM单元使用,有可以对单元中的每一位进行位操作。用户RAM区(30H~7FH):用于存放随机数据及运算的中间结果。程序状态字寄存器(PSW):RS1,RS0(PSW.4,PSW.3):工作寄存器组选择控制位。可用软件对它们置1或清0,以选择当前工作寄存器的组号。堆栈指针寄存器SP:堆栈只允许在其一端进行数据插入和数据删除操作的线性表。PUSH,数据写入堆栈称为插入运算(入栈);POP,从堆栈中读出数据称为删除运算(出栈)。堆栈的特点:后进先出LIFO(Last-InFirt-Out)。堆栈有两种类型:向上生长型,向下生长型。进栈操作:先SP加1,后写入数据出栈操作:先读出数据,后SP减1MCS-51单片机复位后,SP的初值自动设为07H;5.什么是振荡周期,时钟周期,机器周期和指令周期?如何计算机器周期的确切时间?1)振荡周期是指为单片机提供脉冲信号的振荡源的周期,是单片机最基本的时间单位。通常由外接晶振与内部电路来提供振荡脉冲信号,其频率记为OSCf,此频率的倒数即是振荡周期。2)振荡脉冲经过二分频后就是单片机的时钟信号,时钟信号的周期称为时钟周期,又定义为状态,用S表示。时钟周期是振荡周期的二倍。3)机器周期是指令执行过程中完成某一个基本操作所需的时间。一个机器周期等于12个振荡周期。即OSCMfT12。4)指令周期是指执行一条指令所需要的时间,根据指令不同,可包含1、2、4个机器周期。常用符号说明:寻址方式:(1)立即寻址。操作数直接在指令中给出,它可以是二进制、十进制、十六进制数,也可以是带单引号的字符,通常把这种操作数称为立即数,它的寻址范围就是指令本身所在的程序存储单元。例:MOVA,#25H;MOVDPTR,#1234H;(2)直接寻址。在指令中直接给出存放操作数的内存单元的地址。寻址范围为:内部RAM低128字节单元,特殊功能寄存器。例:MOVA,25H;(3)寄存器寻址。指令中给出的是操作数所在的寄存器。寻址范围为:4组工作寄存器(R0~R7),部分特殊功能寄存器,如A、B、DPTR。例:MOVA,R7;(4)寄存器间接寻址。存放操作数的内存单元的地址放在寄存器中,指令只给出寄存器(包括Ri和DPTR),寄存器名称前加“@”前缀标志。寻址范围:地址范围从00~FFH的全部内部RAM单元,包括堆栈区,但不包括特殊功能寄存器,以及地址范围从0000~FFFFH的全部片外RAM。例:MOVA,@R7;(5)变址寻址。将基址寄存器与变址寄存器的内容相加,结果作为操作数的地址。变址寻址主要用于查表操作。寻址范围:64KB的程序存储空间。例:MOVCA,@A+DPTR;(6)相对寻址。指令中给出的操作数是程序相对转移的偏移量。偏移量是一个带符号的单字节数,范围为-128~+127。例:SJMP50H;(7)位寻址。操作数是位地址。寻址范围:内部RAM位寻址区共128位(位地址:00~7FH),11个特殊功能寄存器中的可寻址位(对于8051,有83位)。MCS-51单片机指令系统I.数据传送类(29条)1.普通传送指令MOV:内部ROM;MOVC:外部ROM;MOVX:程序存储器。1)片内数据存储器传送指令(16条)(1)以A为目的操作数指令(4条)MOVA,#data;MOVA,direct;MOVA,Rn;MOVA,@Ri;(2)以Rn为目的操作数的指令(3条)MOVRn,#data;MOVRn,direct;MOVRn,A;(3)以直接地址为目的操作数的指令(5条)MOVdirect,#data;MOVdirect,direct;MOVdirect,A;MOVdirect,Rn;MOVdirect,@Ri;(4)以寄存器间接寻址为目的操作数的指令(3条)MOV@Ri,#data;MOV@Ri,direct;MOV@Ri,A;(5)16位书库传送指令(1条)MOVDPTR,#data16;2)片外数据存储器传送指令(4条)(1)使用DPTR进行间接寻址MOVXA,@DPTR;A←((DPTR))MOVX@DPTR,A;(DPTR)←A(2)使用Ri进行间接寻址MOVXA,@Ri;A←((Ri))MOVX@Ri,A;(Ri)←A例3.6要求把外部RAM60H单元中的数据8BH传送到内部RAM50H中,试编程。解法1:MOVR0,#60H;(R0)=60HMOVXA,@R0;(A)=8BHMOV50H,A;(50H)=8BH解法2:MOVDPTR,#0060H;(DPTR)=0060HMOVXA,@DPTR;(A)=8BHMOV50H,A;(50H)=8BH3)程序存储器传送指令(2条)MOVCA,@A+DPTR;A←((A)+(DPTR))MOVCA,@A+PC;A←((A)+(PC))例3.7已知程序存储器中以TAB为起点地址的空间存放着0~9的ASCII码,累加器A中存放着一个0~9之间的BCD码数据。要求用查表的方法获得A中数据的ASCII码。解法1:MOVDPTR,#TABMOVCA,@A+DPTRRETTAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H解法2:INCAMOVCA,@A+PCRETTAB:DB30H,31H,32H,33H,34H,35H,36H,37H,38H,39H2.数据交换指令(5条)(1)整字节交换指令源操作数与累加器A进行8位数据交换,共有3条指令:XCHA,Rn;(A)←(Rn)XCHA,direct;(A)←(direct)XCHA,@Ri;(A)←((Ri))(2)半字节交换指令源操作数与累加器A进行低4位的半字节数据交换,只有1条指令:XCHDA,@Ri;(A)3~0((Ri))3~0(3)累加器高低半字节交换指令累加器A的高低半个字节进行数据交换,只有1条指令:SWAPA;(A)3~0(A)7~43.堆栈操作指令PUSHdirect;--SP+1,SP←(direct)POPdirect;--direct←(SP),SP←(SP-1)II.算术运算类指令1.加法指令1)不带进位的加法指令ADDA,#data;A←(A)+dataADDA,direct;A←(A)+(direct)ADDA,Rn;A←(A)+(Rn)ADDA,@Ri;A←(A)+((Ri))加法运算的结果会影响程序状态字寄存器PSW,其中包括:①如果运算结果的最高位第7位有进位,进位标志CY置“1”,反之,CY清“0”;②如果运算结果的第3位有进位,辅助进位标志AC置“1”,反之,AC清“0”;③如果运算结果的第6位有进位而第7位没有进位或者第7位有进位而第6位没有进位,则溢出标志OV置“1”(即OV=C7⊕C6),反之,OV清“0”;④奇偶标志P随累加器A中1的个数的奇偶性而变化。例3.10已知(A)=97H,(R0)=89H,执行指令:ADDA,R0解:10010111+100010011←00100000运算结果:(A)=20H,CY=1,AC=1,OV=1,P=1。若97H和89H是两个无符号数,则结果是正确的;反之,若97H和89H是两个带符号数(即负数),则由于有溢出而表明相加结果是错误的,因为两个负数相加结果不可能是正数。2)带进位的加法指令ADDCA,#data;A←(A)+data+(CY)ADDCA,direct;A←(A)+(direct)+(CY)ADDCA,Rn;A←(A)+(Rn)+(CY)ADDCA,@Ri;A←(A)+((Ri))+(CY)例3.11已知当前(CY)=1,(A)=97H,(R0)=89H,执行指令:ADDCA,R0解:1001011110001001+11←00100001运算结果:(A)=21H,CY=1,AC=1,OV=1,P=0。3)加1指令INCA;A←(A)+1INCRn;Rn←(Rn)+1INCdirect;direct←(direct)+1INC@Ri;(Ri)←((Ri))+1INCDPTR;DPTR←(DPTR)+1加1指令的操作不影响程序状态字PSW的状态,只有“INCA”指令可以影响奇偶标志位P例3.13已知:(A)=0FFH,(R3)=0FH,(30H)=0F0H,(R0)=40H,(40H)=00H,(DPTR)=1234H,执行如下指令:INCAINCR3INC30HINC@R0INCDPTR其结果为:(A)=00H,(R3)=10H,(30H)=0F1H,(R0)=40H,(40H)=01H,(DPTR)=1235H,PSW中仅P改变。2.减法指令1)带借位的减法指令SUBBA,#data;A←(A)﹣data﹣(CY)SUBBA,direct;A←(A)﹣(direct)﹣(CY)SUBBA,Rn;A←(A)﹣(