51单片机总结之程序状态字(PSW)

1.简介

PSW是一个8位寄存器。PSW的全称是Program Status Word,即程序状态字。

其各位的含义如下:

程序状态字各位的含义
PWS位地址 D7 D6 D5 D4 D3 D2 D1 D0
含义 CY AC F0 RS1 RS0 OV - P

下面分别对各位简单总结:


2.进位标志位(CY)

CY的全称是Carry,有的资料就简写为一个C字母。

在使用加减乘除、左移或右移之类等操作时,这个标志位会受到影响。
因为51单片机一般是对8位数据的操作,当数据的最高位(D7)进行例如加法操作产生进位时,CY就会置1。否则CY等于0;当进行8为减法时,若运算结果有借位,则CY=1,否则C=0。

我把CY这个标志位理解为8位运算中的第九个数据位。

3.辅助进位标志位(AC)

AC的全称是Assistant Carry。

首先说明一下什么是低半字节和高半字节:一个字节有8位,低半字节就是第0位到第3位,高半字节就是第4位到第7位
还是进行8位加法运算,如果低半字节的最高位(D3)有进位,则AC=1,否则AC=0;当进行8位减法运算时,如果D3有借位,则AC=1,否则AC=0、

这个可以和CY标志位进行类比理解。

4.软件标志(F0)

这是用户定义的一个状态标志。可以通过软件对它置位或清零。

5.工作寄存器组选择位RS1和RS0

可以在编程的时候置位或清零,以选择4个工作寄存器组中的一个进行工作。
一个寄存器组有8字节,有四组寄存器,一共32字节。在片内数据存储区中的00H~1FH。

6.溢出标志(OV)

OV的全称是Overflow。
当进行有符号(signed)数加减法运算时,由硬件自动置位或清零。
当OV=1时,表示一个数字已经超出了累加器以补码形式表示一个有符号数的范围,即超出了-128~+127的范围。

在8位补码中,D7一般用来表示符号位,D6~D0用来表示二进制数字。
所以,在加法时,如果最高位(D7)和次高位(D6)中有一个进位,或在减法时两个中有一个借位,OV将被置位。

执行乘法指令(MUL  AB)也会影响OV标志位,当乘积大于255时,OV=1,否则OV=0。
执行除法指令时也会影响OV标志位。

6.1与AC标志位对比

要注意,溢出和进位是两个不同的概念,进位是指无符号数运算时ACC中D7向更高位的进位。溢出是指带符号数补码运算时,运算结果超出8位二进制补码的表示范围。
另外,OV的状态可以由ACC的D7和D6相异或得出。

7.奇偶标志位P

每执行一条汇编指令,单片机都能根据A中1的个数的奇偶自动令P置位或清零,奇为1,偶为0。
此标志位对串行通信的数据传输非常有用,通过就校验可以检验传输的可靠性。

你可能感兴趣的:(单片机,51,标志位,psw)