51单片机
数据类型如下
在这里插入图片描述

运算符如下
在这里插入图片描述
按位左移<<:低位补零,高位移
按位右移>>:高位补零,低位移
按位与&对应位上的值必须同时为1才为1,可以用来指定位置寄存器重置处理比如P2寄存器为1010 1011(0xAB),此时如果0xAB & 0xFE,此时相当于对第0位作置0处理结果为0xAA。
按位或|对应位上的值有一个为1那么值就为1。可以用来指定位置寄存器置为高电平处理比如P2寄存器为1010 1010(0xAA),此时如果0xAA | 0x01,此时相当于对第0位作置1处理结果为0xAB。
按位异或^对应位上的值必须相反则为1,否则为0。这个可能具有保持值不变的功能,不太常用把, 比如P2寄存器为1010 1010(0xAA),此时0xAA ^ 0xFF 得到的值为0101 0101,相当于按位取反啦。
按位取反~对应位上的值按位取反。。。比如1111 1110(0xFE)按位取反就是0000 0001(0x01),在做流水测试发现居然还能这么用。。。。0xFE = ~(0x01 << 0),然后可以将这种对流水灯的流转转换为对每一位的左右移。很精彩!

在51单片机中,有一个神奇的关键字,叫sbit这个关键字能直接取到寄存器的某一位。比如寄存器名为P1,8位,如果想直接将其中的第三位当作变量使用,可以直接使用P1_3,这个P1_3就代表了P1寄存器第三位的bit值,正如名字描述的一样,它应该只能取0和1。比如P1_3=0;将P1第三位置低电平。如果使用按位与,需要写成P1 = P1 & 0xFB;这样显得有点麻烦。哈哈哈,我算这个1111 1011转为0xFB还要花几秒呢。所以尽量sbit简化吧~(另外使用PX_X这种寄存器需要导入#include <REGX52.H>哦~)

原文地址:https://blog.csdn.net/qq_34291570/article/details/134758908

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任

如若转载,请注明出处:http://www.7code.cn/show_31502.html

如若内容造成侵权/违法违规/事实不符,请联系代码007邮箱suwngjj01@126.com进行投诉反馈,一经查实,立即删除

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注