单片机c语言或运算,单片机avr c语言位运算 与或非 异或逻辑 运算介绍 详解

位运算是指按二进制位进行的运算。在单片机中位运算通常用于I/O端口的输入输出控制和逻辑判断。

C语言提供的位运算符有:

运算符

含义

功能

按位与

如果两个相应的二进制位都为1,则该位的结果值为1;否则为0。

|

按位或

两个相应的二进制位中只要有一个为1,该位的结果值为1。

按位异或

若参加运算的两个二进制位同号则结果为0(假)异号则结果为1(真)

取反

~是一个单目(元)运算符,用来对一个二进制数按位取反,即将0变1,将1变0。

<<

左移

左移运算符是用来将一个数的各二进制位全部左移N位,右补0。

>>

右移

表示将a的各二进制位右移N位,移到右端的低位被舍弃,对无符号数,高位补0。

与逻辑:

73990cc9efc58a6c046e6681c776a465.png

将PA口的第0位清0(即最低位输出低0v电平),其余位保持不变:   PORTA口应同‘11111110’进行与运算

二进制:11111110 的十六进制为:0xFE,C语言代码:PORTA=PORTA&0xFE;一般采用c语言的“&=‘运算符,通常写成

PORTA&=0xFE;   执行此语句后,PORTA口的第0位将输出低电平。

或逻辑:

aed7fb3b4127c5aead4fba972bf09318.png

将PA口的第7位置1(即最高位输出高电平)其余为保持不变,PORTA应与‘10000000’进行或运算

即c语言:PORTA=PORTA|0x80 ;采用或赋值运算符,通常写成 PROTA|=0x80 ;  二进制‘10000000’的十六进制是0x80;

非逻辑:

2194ce0ce6e4943f2539a1b3b6ead0a3.png

c语言:PORTA~=0x0F;//将0x0F=‘00001111‘取反后 '11110000‘=0xF0 赋值给PORTA,通常和其他逻辑运算符一起使用

异或逻辑:

461c15d977f0fbc7063b47ee9d6382c6.png

将PA口的第7位翻转,PORTA^=0x80,即执行此语句一次,PORTA口的第7位状态变化一次,由0变1,或由1变0,可以周期性的控制一个灯的亮灭。

移位操作:

7e8d8091d044507ff7bd076345508406.png

判断PA口的第7位是否为0,c语言 if (PINA&(1<<7)==0)       1<<7  结果为0x80,也可写为 if (PINA&0x80)==0)

b7d91ffbbfc76884569734715090367e.png

  • 0
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值