产品概述

单片机 位操作 单片机位操作指令

小编 2024-10-07 产品概述 23 0

单片机位操作指令

前面那些流水灯的例程,我们已经习惯了“位”一位就是一盏灯的亮和灭,而我们学的指令却全都是用“字节”来介绍的:字节的移动、加法、减法、逻辑运算、移位等等。用字节来处理一些数学问题,比如说:控制冰箱的温度、电视的音量等等很直观,能直接用数值来表在。可是如果用它来控制一些开关的打开和合上,灯的亮和灭,就有些不直接了,记得我们上次课上的流水灯的例程吗?我们知道送往P1口的数值后并不能马上知道哪个灯亮和来灭,而是要化成二进制才知道。工业中有很多场合需要处理这类开关输出,继电器吸合,用字节来处理就显示有些麻烦,所以在8031单片机中特意引入一个位处理机制。

位寻址区

在8031中,有一部份RAM和一部份SFR是具有位寻址功能的,也就是说这些RAM的每一个位都有自已的地址,能直接用这个地址来对此进行操作。

内部RAM的20H-2FH这16个字节,就是8031的位寻址区。看图1。可见这里面的每一个RAM中的每个位我们都可能直接用位地址来找到它们,而不必用字节地址,然后再用逻辑指令的方式。

能位寻址的特殊功能寄存器

8031中有一些SFR是能进行位寻址的,这些SFR的特点是其字节地址均可被8整除,如A累加器,B寄存器、PSW、IP(中断优先级控制寄存器)、IE(中断允许控制寄存器)、SCON(串行口控制寄存器)、TCON(定时器/计数器控制寄存器)、P0-P3(I/O端口锁存器)。以上的一些SFR我们还不熟,等我们讲解相关内容时再作详细解释。

位操作指令

MCS-51单片机的硬件结构中,有一个位处理器(又称布尔处理器),它有一套位变量处理的指令集。在进行位处理时,CY(就是我们前面讲的进位位)称“位累加器”。有自已的位RAM,也就是我们刚讲的内部RAM的20H-2FH这16个字节单元即128个位单元,还有自已的位I/O空间(即P0.0…..P0.7,P1.0…….P1.7,P2.0……..P2.7,P3.0……..P3.7)。当然在物理实体上它们与原来的以字节寻址用的RAM,及端口是完全相同的,或者说这些RAM及端口都能有两种使用办法。

单片机C语言编程,位操作

前面介绍了单片机为什么要用C语言编程、单片机编程要使用哪些编程环境。从本节开始介绍单片机编程的基本知识。第一节要介绍的是

按位操作 。因为在配置单片机的寄存器时,位操作是非常常用的,比如将某个单片机的GPIO配置为输出方向、且输出为0时,用位操作就非常方便。

单片机的位操作

位操作包含哪些操作呢?常用的有六种操作:按位与“&”、按位或“|”、按位取反“~”、按位异或“^”、左移“<<”、右移“>>”等,表格如下:

位操作表格

按位与"&"计算逻辑

按位与"&"的逻辑是输入中只要有一个0时,输出为0;输入都为1时,输出才为1。真值表格如下:

输入A

0

0

1

1

输入B

0

1

0

1

输出

0

0

0

1

按位或“|”计算逻辑

按位“|”的逻辑是输入中只要有一个1时,输出为1;输入都为0时,输出才为0。真值表格如下:

输入A

0

0

1

1

输入B

0

1

0

1

输出

0

1

1

1

按位取反(~)计算逻辑

按位取反(~)可以理解为非,即翻转,输入为0时,输出为1;输入为1时,输出为0。真值表格如下:

输入

0

1

输出

1

0

按位异或“^”计算逻辑

按位异或(^)是用来判断输入是否一致的,如果两个输入一致则为0;输入不一致则为1。真值表格如下:

输入A

0

0

1

1

输入B

0

1

0

1

输出

0

1

1

0

左移“<<”和右移">>"计算逻辑

移位操作要考虑数据是否有符号,在单片机编程时,无符号类型用的比较多,所以这里介绍无符号的移位。

无符号数据左移时,右侧补零,左侧被移走。

左移"<<"图解

无符号数据右移时,左侧补零,右侧被移走。

右移“>>”图解

按位计算的意义

前面说过,按位逻辑计算对寄存器的配置非常方便,因为寄存器是可“位”操作的,要寄存器的某位操作时,不能更改其他位的数值。

后面还会继续介绍位操作的编程实现方式。

如果文章有所帮助,请关注、评论并转发吧。

相关问答

51 单片机 汇编语言: 位操作 指令有哪些?

数据位传送指令MOVC,bit;bit可直接寻址位C←(bit)MOVbit,C;C进位位(bit)←C位变量修改指令CLRC;将C=0CLR...数据位传送指...

单片机 是怎么按地址运行的?

回答如下:单片机按地址运行的过程可以简单概括为以下几步:1.从程序计数器(PC)中获取下一条指令的地址。2.将指令地址发送到存储器中,从存储器中读取指令内...

cpu使用的是哪一组工作寄存器?

51单片机共有4组工作寄存器,地址范围:00H~1FH。复位后,CPU使用第0组。地址为0001020304050607。改变PSW中的两个位:RS1和RS0,可以改变当前工作寄存.....

请问小白学 单片机 的具体方向和步骤该如何呢?

我是从大学开始学习单片机的,现在分享一下我的学习感受。单片机学习分为硬件部分和软件部分,硬件那部分需要电路,模电数电等作为基础,软件部分只需要有一点...

单片机 题目,为什么选这个答案?在堆栈 操作 中,当进栈数据全部...

[最佳回答]正确答案是:D.栈底单元地址减151单片机sp是向上增长型的,所以在有进栈数据将从栈底单元地址(sp先自加一)开始存放---即压栈在堆栈的时候,sp要先自加...

c51 单片机 max7219取最高位是什么?

C51单片机是一种经典的8位单片机,而MAX7219是一种常用的LED驱动芯片。在C51单片机中,如果要取一个字节(8位)数据的最高位,可以使用位操作指令来实现。
具体...

单片机 中如何使用状态寄存器STATUS?

STATUS状态寄存器进位(C)、半进位(DC)和零(Z)标志位的值。在减法中,C和DC位分别用作借位(borrow)和半借位(digitborrow)STATUS状态寄存器进位(C)、半...

51 单片机 怎样把字节高低位对调?

51单片机可以通过位操作将字节的高低位对调。在51单片机中,可以通过位操作运算符进行位操作,其中包括位移、按位与、按位或等操作符,用于对操作数的二进制位...

p0端口对应的特殊功能寄存器叫?

在计算机网络中,P0端口通常指的是8051系列微控制器的Port0(P0)端口。对于8051系列微控制器,P0端口是一个具有特殊功能的I/O端口,它具有以下特点:1.可编...

8051 单片机 有多少个特殊功能寄存器可以进行位寻址吗?

8051单片机共有128个特殊功能寄存器(SFR),其中大部分可以进行位寻址。这些SFR包括通用IO口、定时器、中断、串口、ADC、DAC等。进行位寻址可以单独操作寄存器...

猜你喜欢