单片机内部结构及最小系统专用寄存器组专用寄存器组主要用来指示当前要执行指令的内存地址、存放操作数和指示指令执行后的状态等。专用寄存器组主要包括以下专用寄存器:1)程序计数器PC(ProgramCounter)PC是二进制16位的程序地址寄存器,用来存放下一条需要执行指令的地址,能自动加1。单片机复位后PC内容为0000H2)累加器ACC(Accumulator)二进制8位寄存器,专门用来存放操作数或运算结果。MOVA,#03H;A3ADDA,#05H;AA+05H3)通用寄存器B(GeneralPurposeRegister)二进制8位寄存器,专用于乘法和除法,乘除运算前,用于存放乘数或除数,运算后用于存入乘积的高八位或除法的余数。MOVA,#05H;A5MOVB,#03H;B3MULA,B;BAAxB=5*34)程序状态字PSW(ProgramStatusWord)PSW用来存放指令执行后的有关状态(1)Cy:进位标志位,表示加减运算过程中最高位A7(ACC最高位)有无进位或借位。(2)AC:辅助进位位,用于表示加减运算过程中低4位有无向高4位(即A4)进位或借位。(3)F0:用户标志位,由用户确定。(4)RS1和RS0:工作寄存器组(R0-R7)选择,用户通过改变RS1和RS0的状态来决定工作寄存器的实际物理地址。主要用于保护R0-R7中的数据,多用于中断服务程序。(5)OV:溢出标志,指示运算过程中是否发生了溢出。(6)P:奇偶标志位,用于指示运算结果中1的个数例:F0=0,RS1=0,RS0=0,执行下面指令后,PSW=?MOVA,#0FH;ADDA,#0F8H;OV确定方法:OV=OV=CPCS=11=0PSW=C1H5)堆栈指针SP(stackpointer)8位寄存器,能自动加1或减1,专门用于存放堆栈的栈顶地址。堆栈是一种能按“先进后出”或“后进先出”规律存取数据的RAM区域(P16),主要用于子程序和中断服务程序中保护现场。例:下面指令设定了栈底地址70HMOVSP,#70H6)数据指针DPTR16位寄存器,可以用来存入片内ROM的地址,也可以用来存放片外RAM或片外ROM的地址.例:设片外RAM的2000H单元中有一个数x,若要把它取入累加器A中。MOVDPTR,#2000H;DPTR2000HMOVXA,@DPTR;Ax五、MCS—51单片机存储器及存储空间1MCS—51单片机存储器分类及配置MCS—51单片机存储器的分类从物理结构上可分为:片内、片外程序存储器(8031和8032没有片内程序存储器)与片内、片外数据存储器4个部分;从寻址空间分布可分为:程序存储器、内部数据存储器和外部数据存储器3大部分;从功能上可分为:程序存储器、内部数据存储器、特殊功能寄存器、位地址空间和外部数据存储器5大部分。片内、片外程序存储器和数据存储器各自总容量为64KB。2MCS51单片机的存储空间64KB的外部ROM地址空间64KB的外部RAM地址空间4KB的片内ROM(8051)128B片内RAM特殊功能寄存器MCS—51单片机存储器空间结构图(a)程序存储器;(b)内部数据存储器;(c)外部数据存储器3程序存储器1.程序存储器的编址计算机的工作是按照事先编制好的程序命令一条条循序执行的,程序存储器就是用来存放这些已编好的程序和表格常数,它由只读存储器ROM或EPROM组成。2.程序运行的入口地址实际应用时,程序存储器的容量由用户根据需要扩展,而程序地址空间原则上也可由用户任意安排。但程序最初运行的入口地址,MCS—51单片机是固定的,用户不能更改。程序存储器中有复位和中断源共7个固定的入口地址。MCS—51单片机复位、中断入口地址单片机复位后程序计数器PC的内容为0000H,故必须从0000H单元开始取指令来执行程序。0000H单元是系统的起始地址,一般在该单元存放一条无条件转移指令,用户设计的程序是从转移后的地址开始存放执行的。可以用MOVC指令访问程序存储器(ROM),使用PSEN信号选通片外ROM。单片机EA引脚接地,从片内ROM取指,接+5V,则从片内ROM取指。访问程序存储器一定用16位地址。4内部数据存储器1.内部数据存储器的编址MCS—51系列单片机的内部数据存储器由读写存储器RAM组成,用于存储数据。它由RAM块和特殊功能寄存器(SFR)块组成。2.内部数据存储器RAM块内部数据存储器RAM块共分为工作寄存器区、位寻址区和数据缓冲区3个部分。1)工作寄存器区内部RAM块的00H~1FH区,共分4个组,每组有8个工作寄存器R0~R7,共32个内部RAM单元。工作寄存器和RAM地址对照表工作寄存器共有4组,但程序每次只用1组,其它各组不工作。哪1组寄存器工作由程序状态字PSW中的PSW.3(RS0)和PSW.4(RS1)两位来选择,其对应关系如表2―6所示。CPU通过软件修改PSW中RS0和RS1两位的状态,就可任选一个工作寄存器工作,这个特点使MCS—51单片机具有快速现场保护功能,对于提高程序的效率和响应中断的速度是很有利的。若程序中并不要4个工作寄存器组,那么剩下的工作寄存器组所对应的单元也可以作为一般的数据缓冲区使用。2)位寻址区20H~2FH单元为位寻址区,这16个单元(共计128位)的每1位都有一个8位表示的位地址,位地址范围为00H~7FH。位寻址区的每1位都可当作软件触发器,由程序直接进行位处理。通常可以把各种程序状态标志,位控制变量存于位寻址区内。同样,位寻址的RAM单元也可以按字节操作作为一般的数据缓冲内部RAM中位地址表3)数据缓冲区用于存放运算数据和结果。30H~7FH是数据缓冲区,也即用户RAM区,共80个单元,还包括不使用的可以位寻址的字节和不使用的工作寄存器区都可以作用数据缓冲区。4)堆栈与堆栈指针堆栈是在片内RAM中临时开辟的暂存区,堆栈主要是为子程序调用和中断操作而设立的。其具体功能有两种:保护现场和保护断点。MCS—51单片机堆栈区不是固定的,原则上可设在内部RAM的任意区域内,但为了避开工作寄存器区和位寻址区,一般设在30H以后的范围内,栈顶的位置由专门设置的堆栈指针寄存器SP(8位)指出。MCS—51单片机的堆栈属向上生长型,如左图所示。堆栈用堆栈指针SP指示栈顶地址。堆栈的数据存放是后进先出,或先进后出。堆栈有两种操作,即进栈和出栈操作,两者都是对堆栈的栈顶单元进行的。进栈操作:先SP+1,再写入数据出栈操作:先从SP指示的单元读出数据,再SP-1。3.特殊功能寄存器SFR块特殊功能寄存器SFR,又称为专用寄存器。它专用于控制、管理单片机内算术逻辑部件、并行I/O口锁存器、串行口数据缓冲器、定时器/计数器、中断系统等功能模块的工作,SFR的地址空间为80H~FFH。8051的SFR有18个占21个字节;其中3个双字节寄存器,它们是DPTR,T0,T1;SFR的地址可以被8整除的可以使用位寻址,共11个字节。80H~FFH之间的地址,除SFR外,其余地址无效。注意SFR都有复位值,因此凡用到的SFR,在单片机复位后应重新赋值。8052还有3个SFR,占5个单元。程序计数器PC不是SFR。特殊功能寄存器名称、标识符、地址一览表4.位寻址空间在MCS—51单片机的内部数据寄存器RAM块和特殊功能寄存器SFR块中,有一部分地址空间可以按位寻址,按位寻址的地址空间又称之为位寻址空间。位寻址空间一部分在内部RAM的20H~2FH的16个字节内,共128位;另一部分在SFR的80H~FFH空间内,凡字节地址能被8整除的专用寄存器都有位地址,共93位。因此,MCS—51系列单片机共有221个可寻址位。4外部数据存储器MCS—51单片机访问外部数据存储器可用1个特殊功能寄存器——数据指针寄存器DPTR进行寻址。由于DPTR为16位,可寻址的范围可达64KB,所以扩展外部数据存储器的最大容量是64KB。MOVX指令访问片外RAM用RD和WR信号读写片外RAM