完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
关于这个_BV(i)指令的统一解释是:
#define _BV(bit) (1 《《 (bit)) _BV()是把1左移N位的函数。 _BV(7)相当于(1《《7) 本身和置位还是清零没有关系。不过这个函数,实际上却真的大多数应用于位的置位或清零。 比如: PORTA|=_BV(PA7) PORTB&=~_BV(PB6) PORTC^=_BV(PC5) 分别相当于: PORTA = PORTA | (1《《PA7) //“|”是位或运算符 PORTB = PORTB & (~(1《《PB6)) //“&”是位与运算符 PORTC = PORTC ^ (1《《PC5) //“^”是位异或运算符 下面举几个例子分析: 1、假如PORTB=0xFF PORTB = ~_BV(5); //执行BV(5),-BV=01000000,执行~运算符以后,PORTB=10111111 2、假如PORTD=0x00 PORTD^=_BV(PD7); //执行BV(PD7)后,-BV=10000000,则PORTD^_BV=00000000^10000000=10000000 |
|
|
|
只有小组成员才能发言,加入小组>>
2161 浏览 0 评论
1147浏览 3评论
620浏览 2评论
[求助]atmega1280与atmega2560在程序上有什么区别?
2224浏览 1评论
313浏览 1评论
1170浏览 0评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2024-3-29 18:04 , Processed in 1.196034 second(s), Total 75, Slave 57 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 深圳华秋电子有限公司
电子发烧友 (电路图) 粤公网安备 44030402000349 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号