二、 51单片机内部结构 8051单片机内部结构如图3所示
P0.0——P0.7P2.0——P2.7端口0驱动器RAM地址存储器端口2驱动器RAM128 * 8端口0锁存器端口2锁存器ROM4K * 8程序地址寄存器ACC缓冲器堆栈指针THP1THP2PC增量器PCON SCON TMOD TCONTH0 TL0 TH1 TL1TX RX IE IP中断、串行口、定时方块B寄存器ALUPSWRAENALEEARST程序计数器定时控制 指令寄存器端口1锁存器端口3锁存器端口3驱动器DPTR端口1驱动器P1.O——P1.7P3.0——P3.7
图3 8051单片机内部结构图
完整的计算机应该由运算器、控制器、存储器(ROM及RAM)和I/O接口组成。一般微处理器(如Z80)只包括运算器和控制器两部分。和一般微处理器相比,8051增加了四个8位I/O接口、一个串行口、4KBROM、128BRAM和很多工作寄存器及特殊功能寄存器(SFR)。其各部分的功能简述如下:
1.运算器
包括一个可进行8位算术运算和逻辑运算的ALU单元,8位的暂存器1、暂存器2、8位的累加器ACC,寄存器B和程序状态字寄存器PSWI.231等。ALU:可对4位(半字节)、8位(一字节)和16位(双字节)数据进行操作。如可进行加、减、乘、除、加1、减1、BCD数十进制调整及比较等算术运算和逻辑与、或、异或、取反和循环移位等逻辑操作。
ACC:累加器ACC,经常作为一个运算数经暂存器2进入ALU的一个输入端,与另一个进入暂存器1的运算数进行运算,运算结果又送回ACC。除此之外,ACC在8051内部经常作为数据传送的中转站,同一般微处理器一样,它是最繁忙的一个寄存器。
PSW:程序状态字寄存器,8位,用于标志指令执行后的信息状态,相当于一般微处理器的标志寄存器。PSW中各位状态供程序查询和判别用。
寄存器B:8位寄存器,在乘、除运算时,B寄存器用来存放一个操作数:也用来存放运算后的一部分结果;若不进行乘、除运算时,则可作为通用寄存器使用。另外,8051片内还有一个布尔处理器,它以PSW中的进位标志位C为其累加器,专门用于处理位操作:可以执行置位、位清零、位取反、位等于1转移、位等于0转移、位等于1转移并清零以及进位标志位C与其它可以位寻址的空间之间进行信息传送等位操作,也能使C与其他可寻找位之间进行逻辑与、或操作,结果存放在进位标志位C中。
2.控制器
控制器包括程序计数器PC、指令寄存器IR、指令译码器ID、振荡器及定时电路等。程序计数器PC:它由两个8位的计数器PCH及PCL组成,共16位。PC实际上是程的字节地址计数器,PC中的内容是将要执行的下一条指令的地址。改变PC中的内就可以改变程序执行的流向。PC可对64K的ROM(程序存储器)直接寻址,也可对8051片外RAM(数据存储器)寻址。
指令寄存器IR及指令译码器ID:由PC中的内容指定ROM地址,取出来的指令经指令寄存器IR送至指令译码器ID,由ID对指令译码并送PLA产生一定序列的控制信号,以执行指令所规定的操作。
振荡器及定时电路:8051单片机片内有振荡电路,只需外接石英晶体和频率微调电容(2个30pF左右),其频率范围为1.2~12MHz,该脉冲信号就作为8051工作的最基本节拍,即时间的最小单位。
3.存储器
8051片内有ROM(程序存储器,只能读)和RAM(数据存储器,可读、可写)两类,它们有各自独立的存储地址空间,与一般微机的存储器配置方式很不相同。
(1)程序存储器(ROM)
8051的片内程序存储器容量为4K字节,地址从0000H开始,用于存放程序和表格常数。
(2)数据存储器(RAM)
805l片内数据存储器为128字节,地址为00H~7FH,用于存放运算的中问结
果、数据暂存以及数据缓冲等。在这128字节的RAM中,有32个字节单元可指定为工作寄存器,这同一般微处理器不同。8051的片内RAM和工作寄存器排在一个队列里统一编址。
由图3可见,8051单片机内部还有SP、DPTR、PCON、IE、IP等特殊功能寄存器,它们也同128字节RAM在一个队列里编址,地址为80H~FFH。在这128字节RAM单元中有21个特殊功能寄存器(SFR),这些特殊功能寄存器还包括PO~P3口锁存器。
4.I/O接口
8051有四个8位并行接口即P0~P3,它们都是双向端口,每个端口各有8条I/O线,均可输入/输出。P0~P3 13四个锁存器同RAM统一编址,可以把U/O口当作一般特殊功能寄存器来寻址。
第三节 51单片机存储器配置
51系列单片机与一般微机的存储器配置方式很不相同。一般微机通常只有一个地址空间,ROM和RAM可以随意安排在这一地址范围内不同的空问,即ROM和RAM的地址同在一个队列里分配不同的空间。CPU访问存储器时,一个地址对应唯一的存储器单元,可以是ROM也可以是RAM,并用同类访问指令。此种存储器结构称普林斯顿结构。
8051的存储器在物理结构上分程序存储器空间和数据存储器空问,有四个存储空间:片内程序存储器和片外程序存储器空间以及片内数据存储器和片外数据
存储器空间,这种程序存储器和数据存储器分开的结构形式,称为哈佛结构。从用户使用的角度,8051存储器地址空间分为三类:
1.片内、片外空间地址统一编址0000H~FFFFH的64K字节的程序存储器地址空问(用16位地址);
2.64K字节片外数据存储器地址空间,地址也从0000H~FFFFH(用16位地址)。 3.256字节数据存储器地址空间(用8位地址)。
上述三个存储空间地址是重叠的,为了区分三个不同的逻辑空间,805l的指令系统设计了不同的数据传送指令符号;CPU访问片内、片外ROM指令用MOVC,访问片外RAM指令用MOVX,访问片内RAM指令用MOV。
4.程序存储器地址空间
8051存储器地址空间分程序存储器(64KB ROM)和数据存储器(64KBRAM)。程序存储器用于存放编好的程序和表格常数。程序存储器通过16位程序计数器(PC)寻址,寻址能力为64KB字节。这使得能在64KB地址空问内任意寻址,但没有指令使程序能控制从程序存储器空间转移到数据存储器空间。
5.数据存储器地址空间
数据存储器RAM用于存放运算的中间结果、数据暂存和缓冲、标志位等。数据存储器空间也分为片内和片外两大部分,片内RAM和片外RAM。
8051片外数据存储器空间为64K,从0000H~FFFFH:片内存储器空间为256字节,地址从0000H~00FFH。
(一)片外RAM
片外数据存储器与片内数据存储器空间低地址0000H~FFFFH是重叠的,805 l有MOV和MOVX两种指令,用以区分片内、片外RAM空间。片内RAM使用MOV指令,片外64K RAM空间专门为MOVX指令所用。
(二)片内RAM
片内数据存储器最大可寻址256个单元,它们又分为两个部分,低128字二肯 (00H~7FH)是真正的RAM区,高128字节(80H~FFH)为特殊功能寄存器(SFR)区。 6.低128字节RAM
8051的32个工作寄存器与RAM安排在同一个队列空间里,统一编址并使用同样的寻址方式(直接寻址和间接寻址)。
00H~lFH地址安排为四组工作寄存器区,每组有8个工作寄存器(ROAR7),共占32个单元(见表1)。通过对程序状态字PSW中RS1、RS0的设置,每组寄存器均可选作CPU的当前工作寄存器组。若程序中并不需要四组,那么其余可用作一般RAM单元。CPU复位后,选中第0组工作寄存器。
组 0 1 2 3 RS1 0 0 1 1 RS0 0 1 0 1 R0 00H 08 10H 18H R1 01H 09 11H 19H R2 02H 0AH 12H 1AH R3 03H 0BH 13H 1BH R4 04H 0CH 14H 1CH R5 05H 0DH 15H 1DH R6 06H 0EH 16H 1EH R7 07H 0FH 17H 1FH
表 1 :作寄存器地址表
低128字节RAM单元地址范围也是00H~7FH,8051采用不同寻址方式来加以区分,即访问128个位地址,使用位寻址方式,访问低128字节单元用直接寻址和间接寻址,这样就可以区分开00H~7FH是位地址还是字节地址。
1.
高128字节RAM~特殊功能寄存器(SFR)
8051片内高128字节RAM中,除程序计数器PC外,有21个专用寄存器(SFR),也称特殊功能寄存器,它们离散地分布在80H~FFH的RAM间中。访问特殊功能仅允许使用直接寻址方式(详情见表2)。
(1)累加器ACC
累加器ACC是8051最常用、最繁忙的8位特殊功能寄存器,许多指令的操作数取自于ACC,并许多运算结果也存放于ACC中。在指令系统中采用A作为累加器ACC的助记符。OV(PSW2)溢出标志位。当进行补码运算时,如有溢出,即当运算结果超出-128~+127的范围时,OV位由硬件自动置OV=1;无溢出时,OV=0。
PSW.1为保留位,8051未用。
P(PSW.O)奇偶检验标志位。每条指令执行完后,该位始终跟踪指示累加器A中1的个数。如结果A中有奇数个“1”,则置P=1,否则P=0。常用于校验串行通讯中的数据传送是否出错。
(2)寄存器B(FOH)
在乘除指令中,用到了8位B寄存器。乘法指令的两个操作数分别取自A和 B,乘积存于B、A两个8位寄存器中。除法指令中,A中存放被除数,B中存放除数,商存放于A中,B中存放余数。在其它指令中,B可作为一般通用寄存器或一个RAM单元使用。
(3)程序状态寄存器PSW(DOH)
PSW是一个8位特殊功能寄存器,它的各位包含了程序执行后的状态信息,供程序查询或判别之用。各位的含义及其格式如下:
CY AC FO RS1 RSO OV - P CY(PSW.7)进位标志位。在执行加法(或减法)运算指令时,如果运算结果最高位(位7)向前有进位(或借位),CY位由硬件自动置“1”:如运算结果最高位(位7)无进位(或借位),则CY清?0。CY也是8051在进行位操作(布尔操作)时的位累加器。AC(Psw6)半进位标志位,也称辅助进位标志。当执行加法(或减法)操作时,