MCS-51硬件内部资源基础
MCS-51单片机基本组成
Micro Controller System
MCS-51是指由美国INTEL公司生产的一系列单片机的总称。这一系列单片机包括了好些品种,如8031、8051、8751、8032等,其中8051是最早最典型的产品。该系列其它单片机都是在8051的基础上进行功能的增、减、改变而来的,所以人们习惯于用8051来称呼MCS-51单片机。
它由多个部件组成,即中央处理器(CPU)、程序储存器(ROM / RPROM)、并行I/O口(P0~P3)、串行通信口、定时器/计数器以及内外中断系统。这些部件通过总线连接,并被集成在一块半导体芯片上,即为单片机。
一、中央处理器
中央处理器是单片机的内部的核心部件,它决定了单片机的主要功能特性,由运算器和控制器两大部分组成。
- 运算器
运算器是计算机的运算部件,用于实现算术逻辑运算为变量处理。移位和数据传送等操作。它是由算术逻辑单元ALU为核心、加上累计器ACC、寄存器B、程序状态字PSW、以及十进制调整电路和专门用于位操作的布尔处理器等组成的。
(1)算术逻辑单元ALU ( Arthmetic Logie Unit)
算术逻辑单元ALU (8位)用来完成二进制数的四则运算和布尔代数的逻辑运算。此外,通过对运算结果的判断影响程序状态标志寄存器的有关标志位。
(2)累加器ACC (Accumolaor)
累加器ACC为8位寄存器,是CPU中使用最频繁的寄存器。它既可用于存放操作数,也可用来存放运算的中间结果。MCS-51 中大部分单操作机指令的操作数就取自ACC,许多双操作数指令中的一个操作数也取自ACC。单片机中的大部分数据操作都是通过ACC通过的进行的。
(3)寄存器B
寄存器B是个8位寄存器。是为ALU进行医除运算设置的。在执行要乘法运算指令时,寄存器B用于存放其中一个乘数和乘积的高8位数;在执行除法运算时,寄存器B用于存放除数和余数。此外,B寄存器也可作为一般的数据寄存器使用。
(4)程序状态字PSW (Program Suatus Word)
PSW 是一个8位特殊功能寄存器,它的各位包含了程序运行的状态信息,以供程序查询和判断。PSW的格式和含义如下:
| PSW位地址 | 字节地址DOH |
|---|---|
| D7H | CY |
| D6H | AC |
| D5H | F0 |
| D4H | RS1 |
| D3H | RS0 |
| D2H | OV |
| D1H | F1 |
| D0H | P |
- CY (PSW. 7):进位标志位。Cy是PSW中最常用的标志位,由硬件或软件置位和清零。它表示运算结果是否有进位(或借位)。如果运算结果在最高位有进位输出( 加法时)或有借位输人(臧法时),则Cy由硬件置“1”,否则Cy被清“0"。
- AC (PSW. 6):辅助进位(或称半进位)标志。当执行加减运算时,运算结果产生低4位向高4位进位或借位时,AC由硬件置“1";否则AC位被自动清"0" 。
- F0 (PSW.5):用户标志位用户。用户可根据自己的需要对F0位赋予定的含义, 由用户置位或复位,作为软件标志。
- RSI和RSO (PSW.4, PsW.3):工作寄存器组选择位。这两位的值决定选择哪一组工作寄存器为当前工作寄存器组。由用户通过软件改变RSI和RS0值的组合,以切换当前选用的工作寄存器组。其组合关系见表2-1:
工作寄存器组组合关系
| RS1 | RS0 | 寄存器组 | 片内RAM地址 |
|---|---|---|---|
| 0 | 0 | 第0组 | 00H~07H |
| 0 | 1 | 第1组 | 08H~0FH |
| 1 | 0 | 第2组 | 10H~17H |
| 1 | 1 | 第3组 | 18H~1FH |
- OV (PSW 2):灌出标志位,它反映运算结果是否溢出,溢出时则由硬件将OV位1"I", 否则置“0"。
- F1 (PSW.1):用户标志位,同F0 (PStW.5).
- P(PSW.0):此位为奇偶标志位。P标志表明ACC中“1”的个数的奇偶性。在条指令执行完后,单片机根据ACC的内容对P位自动置位或复位。若ACC中有奇数“1",则P=1;若ACC中有偶数个“1”,则P=0。
(5)布尔处理器
8051的CPU是8位微处理器,它还具有1位微处理器的功能。布尔处理器具有较强的布尔变量处理能力,以位(bit) 为单位进行运算和操作。它以进位标(Cy)作为累加位,以内部RAM中所有可位寻址的位作为操作位或存储位,以P0~P3的位作为I/O抠位,同时自己也有指令系统。
- 控制器
控制器是计算机的控制部件,它对来自存储器中的指令进行译码, 并通过定时和控制电路在规定的时刻发出各种操作所需要的控制信号,使各部件协调工作,完成指令所规定的操作。
(1)程序计数器PC
PC是一个16位计数器,实际上PC是程序存储器的字节地址计数器, 其内容是将要执行的下一条指令的地址,寻址范围达64KB。PC具有自动加1功能,从而实现程序的顺序执行。可以通过转移、调用、返回等指令改变其内容,以实现程序的转移。
(2)数据指针DPTR
DPTR为16位寄存器它的功能是存放16位的地址,作为访问外部程序存储器和外部数据存储器时的地址。编程时,DPTR 既可按16位寄存器使用,也可以按两个8位寄存器分开使用,即DPH为DPTR的高8位,DPL为DPTR的低8位。
二、存储器结构
8051在系统结构上采用的哈佛型,与冯·诺依曼型结构( 程序和数据共用一个存储器)的通用计算机不同,它将程序和数据分别存储在两个存储器内,一个称为程序存储器(read only memery),另一个称为数据存储器(random access memory)。
物理结构上分:片内ROM、片外ROM、片外RAM,片内RAM。
逻辑结构上分:片内外统一编址64k的ROM(0000H~FFFFH)、256B的片内RAM(00H ~ FFH)、片外RAM(0000H ~ FFFFH)。
(1)ROM
为了读取ROM中的指令,设置了一个专用寄存器 程序计数器(PC),用以存放要执行的指令地址。每取出指令的1个字节后,其内容自动加1,指向下一字节地址,依次使CPU从程序存储器取指令并加以执行。寻址程序存储器的唯一方式是通过PC。由于51单片机的程序计数器为16位,所以,可寻址的程序存储器地址空间为64KB。
片外程序存储器与片内程序存储器的编址是可以重叠的,通过EA的换接可实现分别访问。当引脚A接高电平时,程序计数器PC在0000H ~ 0FFFH范围内(即前4KB地址) 执行片内ROM中的程序,当指令地址超过0FFFH后,就自动地转向片外ROM,从1000H开始取指令。当引脚EA接低电平,CPU只能从片外程序存储器中取指令,地址从0000H开始,对于片内无程序存储器的51单片机如8031,EA应接低电平;对于片内有程序存储的51单片机,如果EA引脚接低电平,将强行执行片外ROM程序
(2)片内RAM
最大256B,分为低128B单元和高128B单元
- 低128B单元
1、工作寄存器(00H~1FH)
分期为四组寄存器单元,可以用PSW的RS1、RS0来决定那一组寄存器单元
2、位寻址区(20H~2FH)
3、用户RAM区(30H~7FH)- 高128B单元
除了程序计数器PC外,还有21个特殊功能寄存器,又称专用寄存器SFR
(3)片外RAM
用户可根据需要确定扩展存储器的容量,8051 访问片外RAM可用1个特殊功能寄存器数据指针寄存器 DPTR寻址。由于DPTR为16位,可寻址的范围为0-64KB。因此,扩展片外RAM的最大容量是64KB,片外RAM地址范围为0000H~OFFFH,其中在0000H-0FFFH区间与片内RAM的空间是重叠的。CPU 使用MOV指令和MOVX指令加以区分。
(4)堆栈和堆栈指针
堆栈是一种数据结构。 所谓堆栈就是只允许在其一端进行数据插入和数据删除操作的线性表。数据写人堆栈称为插入运算(PUSH), 也叫入栈。数据从堆栈中读出称为删除运算(POP),也叫出栈。堆栈的最大特点就是“后进先出”,
1、堆栈的功能
堆栈是为程序调用和中断操作而设立的,具体功能建保护断点和保护现场。
2、堆栈指针SP
8051堆栈指针SP为8位。在程序设计时应注意SP的初化值。
3、堆栈使用方式
堆栈的使用有两种方式。一种是自动方式。即在调用子程序时,断点地址自动进栈,程序返回时,断点地址再自动弹回PC。这种操作无需用户干预。另一种是指令方式,即使用专用的堆栈操作指令,执行进出栈操作。