设计与开发

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

小编 2024-10-09 设计与开发 23 0

单片机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单片机你学到的不只是点灯

很多人接触51单片机,网上的大部分教程都是从点亮你的第一个的led小灯开始,有人说很简单,也有人说很难。为啥呢?是因为很多单片机爱好者都有自己的一块小板子,此刻附上自己的爱板图一张

别看它小功能还是很强大。好啦废话不多说,为啥说现在点亮led小灯麻烦啦呢。现在的51开发板在设计功能上增加啦一些芯片,像蓝桥杯单片机的板子芯片还是有些复杂的,有兴趣的同学可以试试。

我们首先先赖看一下开发板的原理图

由图可以看出所谓led小灯就是发光二极管组成,如何使它亮起来呢呢学过模电第一章都会清楚只要让它产生压降就会是灯亮起来,而电阻使它产生管压降,所以我们将单片机给其管脚一个低电平让它形成一条回路,自然它就亮起来啦。我直接弄个花式点灯,用左移与右移函数让它进行跑马灯实验 代码如下图所示,在这里作者想给读者一个问题,如何使led小灯产生呼吸灯的现象,希望刚入门单片机的爱好者可以好好思考。只要你花式点灯会啦,那么证明你学习51已经入门啦。如果对代码一些含义不懂得话就好好补充自己学习的知识,可以参考别人的例程或者查阅相关的资料。

51点灯不仅仅是教会你点亮一个小灯,更注重的是对你不同学科之间知识的相互融合,在学习单片机的工程中你也可以补充对c语言知识的理解与运用,也会加强对模电数电知识的巩固。开发板只是起点不是终点。希望大家在学习的过程中体会到其中的乐趣

相关问答

什么是 单片机 的查表法

先说第一个问题:比如用查表法将结果保存到变量i中,查表变量为x,则i=table[x],记住C语言里面数组是从0开始的,比如说上面的0x01就是table[0],0x02...

单片机 中怎样取位地址?

在单片机中,取位地址是通过位操作来实现的。首先,需要确定要操作的寄存器或变量的地址。然后,使用位操作指令(如AND、OR、XOR等)来对该地址进行操作。通过设...

C语言驱动 单片机 实现位移控制是否可行?

C语言驱动单片机实现位移控制是否可行?答案是C语言驱动单片机实现位移控制是可行的。“位移”也就是对单片机进行移位操作。知识点:移位操作(1)左移(2...C...

八位机和三十二位 单片机 有什么区别

[回答]你说的LED灯闪烁,不知是指的流水灯还是一只发光二极管在不停地闪烁?但不管是哪一种,有一点很重要。你在编写此程序时必须要考虑延时,因为51单片机的...

【51 单片机 写入累加寄存器ACC的数据由低到高位排列是ACC0-AC...

[最佳回答]1,是的2,假定ACC高到低为10011010,且CY=0,那么执行ACC=ACC>>1后ACC变为01001101,也就是右移1位,高位补0,这个式子经常用来做除2运算.3,右移后,...

单片机 中如何把高四位与低四位进行转换?

假设a为原来的数b储存高4位c存低四位b=a>>4;//右移4位使高4位存在低位c=aa=b|c;//高低4位或组成新的简化b=a>>4;a=(a简化...

单片机 中求两个数的平均值程序是怎么样的 - 158****4070 的...

这个很好办,相加后除2,也就是右移一位,只是要注意对进位的处理。1、单字节:JUN:CLRCADDA,BRRCARET2、双字节:JUN:CLRCMOVA,30HADDA,32HMOV30H,AMOV...

单片机 中|=是什么意思,比如value|=0x80;这句是什么意思?

value丨=0x80;就是value=value丨0x80结果是将value的最高位置1,其余位不变"丨"是或运算常见还有a+=2是a=a十2a&=0xf0是a=a&...

RAM在 单片机 里面的用途?

RAM在单片机里的用途,主要是存放临时数据,例如用单片机测温,每秒测1次,显示1分钟的平均值(1分钟更新一次);我们先通过传感器,放大电路,A/D转换,把温度这个...

51的指令按其功能可分为?

答:51的指令按其功能可分为五类1,数据传送类指令:完成数据在单片机内部之间的传送。分为8位数和16位两种。除了奇偶位外,指令的执行对PSW无影响。2,算术运...

猜你喜欢