51单片机的8位处理器
8位处理器是单片机的核心模块,由运算逻辑模块和控制逻辑模块组成。其中运算逻辑模块由算术逻辑运算器ALU、累加器ACC、寄存器B、暂存寄存器TR、程序计数器PC、程序状态字寄存器PSW、堆栈指针SP、数据指针DPTR以及布尔处理器组成;控制逻辑模块则由指令寄存器IR、指令译码器和定时控制逻辑电路等组成。
- 算术逻辑运算器ALU 操作如下:算术逻辑运算器ALU主要负责对数据进行算术运算操作和逻辑运算操作,具体的运算操作如下。
- 带进位加法。
- 不带进位加法。
- 带借位减法。
- 8位无符号数乘、除法。
- 自加1、自减1操作。
- 左右移位操作。
- 半字节交换。
- 比较和条件转移等操作。
以上的操作都对应专用的指令,ALU 的操作数一般存放在累加器ACC或者暂存寄存器TR中,运算结果则可以选择保存在ACC、通用寄存器或者其他普通存储单元中。而在乘除法运算中,使用寄存器B中存放一 个操作数并且在运算结束之后存放8位结果数据。 注意:操作数是指令的操作对象,运算结果则为指令的操作结果,指令则是对操作数进行操作的命令。
-
累加器ACC和寄存器B
累加器ACC是处理器模块中使用最为频繁的寄存器,全部的算术运算操作以及绝大多数的数据传送操作都要使用ACC。- 加法和减法:使用ACC存放运算结果。
- 乘法:使用ACC存放-一个操作数,使用寄存器B存放另外一个操作数,运算结果则放在ACC和寄存器B组成的AB寄存器对中。 )
- 除法:使用ACC存放被除数,使用寄存器B存放除数,计算得到的商数放在ACC中,而余数放到寄存器B。
-
程序状态字寄存器PSW 程序状态字寄存器PSW用于指示程序运行过程中的系统相关状态,其中7位用于存放ALU单元运算结果的特征信息,1位为保留位未使用,程序状态字寄存器的具体含义见下表。
程序状态字
PSW.7 | PSW.6 | PSW.5 | PSW.4 | PSW.3 | PSW.2 | PSW.1 | PSW.0 |
---|---|---|---|---|---|---|---|
CY | AC | F0 | RS1 | RS0 | OV | 保留位 | P |
程序状态字的内部定义如下
- CY:进位、借位标志,在计算过程中如果有进位、借位产生时该位被置1,否则清0。
- AC:半进位标志,当参与计算的数据第3位向第4位有进位或者借位产生时,该位被置1,否则清0。
- F0:供用户自由使用的标志位,常常用于控制程序的跳转,需要用户自己控制其置1或者清0。
- RS1,RSO:寄存器组选择位,由用户自行置1或者清0,用于选择使用的工作寄存器区,RS1, RS0和对应的工作寄存器组见下表。
- OV:溢出标志位,当带符号数的运算结果超出-128到+ 127的范围、无符号数运算结果超过255或者无符号除法除数为0时OV被置1,否则被清0。
- P:奇偶标志位,用于表示累加器ACC中“1”的个数,当该个数为奇数时,P标志被置1,否则被清0。
RS1,RS0 | 寄存器组( 地址单元) |
---|---|
00 | 寄存器组0 (00H ~ 07H) |
01 | 寄存器组1 (08H ~ 0FH) |
10 | 寄存器组2 (10H ~ 17H) |
11 | 寄存器组3 (18H ~ 1FH) |
4.布尔处理器
布尔处理器用于51单片机的位操作,在位操作中使用进位标志CY作为累加器可以对位变量进行置位、清除、取反、 位逻辑与、位逻辑或、位逻辑异或、数据传送以及相应的拜所跳转操作,位操作是51单片机中非常重要的操作,充分体现了嵌人式处理器的特点。
5.程序计数器PC
程序计数器PC是一个16位计数器,用于存放下一条指令在程序存储器中的地址,可寻址范围为0 ~64 KB。
6.指令寄存器IR和指令译码器
指令寄存器IR用于存放51单片机当前正在执行的指令,而指令译码器对IR中指令操作码进行分析解释,产生相应的控制逻辑。
7.数据指针DPTR
数据指针DPTR用于寻址外部数据存储器,寻址范围为0 ~ 64 KB。
8.堆栈指针SP
堆栈是一种将数据按序排列的数据结构,51单片机的堆栈是内存中一段连续的空间,堆栈指针SP用来指示堆栈顶部在单片机内部数据存储器中的位置,可以由用户的程序代码修改。当执行进栈操作时SP自动加1,然后把数据放人堆栈,当执行出栈操作时SP自动减1,然后把数据送出堆栈。当单片机被复位后SP初始化为0x07H。