历史上的今天
返回首页

历史上的今天

今天是:2025年05月18日(星期日)

正在发生

2018年05月18日 | AVR c语言的位操作

2018-05-18 来源:eefocus

位操作
一个共同的任务是编程微控制器 MCU打开或关闭IO 寄存器的一些位bit 很幸运标准C 有较好的和适用的位操作功能而没有借助于汇编指令或其它非标准C 结构C 定义了一些按位进行的运算是很有用的
a | b – 按位或 这个表达式指示中a 被表达式中的b 按位进行或运算这惯用于打开某些位尤其常用|=的形式

例如PORTA |= 0x80; // 打开位7 (最高位)
a & b – 按位与 这个运算在检查某些位是否置1 时有用例如
If ((PORTA & 0x81) == 0) // 检查位7 和位0
注意圆括号需要括在&运算符的周围因为它和= = 相比运算优先级较低这是C 程序中很多错误的原因之一
a ^ b – 按位异或 这个运算对一个位取反有用例如在下面的例子中位7 是被翻转的
PORTA ^= 0x80; // 翻转位7
~a – 按位取反. 在表达式中这个运算执行一个取反当用按位与运算关闭某些位时与这个运算组合使用尤其有用如
PORTA &= ~0x80; // 关闭位7
这个编译器对这些运算能产生最理想的机器指令例如sbic 指令可以用在根据位的状态进行条件分枝的按位与运算中

 

在c语言里对位的操作如一般如下:
PORTB|=(1<<2);//置PORTB的第2位=1
PORTB&=~(1<<2);//置PORTB的第2位=0
PORTB^|=(1<<2);//取反PORTB的第2位
While(PORTB&(1<<2));//判断1
While(!(PORTB&(1<<2)));//判断为0


推荐阅读

史海拾趣

CYANLITE公司的发展小趣事

CYANLITE公司成立于XXXX年,由一群富有创新精神的电子工程师创立。他们发现当时市场上对于高效能LED照明产品的需求日益增长,于是决定利用自己的技术背景,专注于研发和生产高品质的LED照明产品。起初,公司规模较小,资金有限,但他们凭借对技术的热情和坚持不懈的努力,成功研发出了第一款具有竞争力的LED灯具,并逐渐在市场上获得了认可。随着产品的热销,CYANLITE公司逐渐扩大了生产规模,并增加了研发投入,以保持其在行业中的领先地位。

Crosspoint Solutions公司的发展小趣事

随着技术的不断更新换代,人才成为电子企业竞争的核心要素。Crosspoint Solutions公司高度重视人才培养和引进工作,通过校园招聘、社会招聘等多种渠道吸引优秀人才加入。同时,公司还建立了完善的培训体系,不断提升员工的技能水平和创新能力。这些优秀的人才为公司的发展提供了强有力的支撑。

芯联(CHIPLINK)公司的发展小趣事

芯联集成始终将技术创新作为公司发展的核心驱动力。公司不断加大研发投入,积极推动技术迭代,确保在行业内保持领先地位。同时,公司还注重知识产权保护,积极申请专利,为公司的技术成果提供了坚实的法律保障。这些努力使芯联集成在竞争中始终保持优势,赢得了市场的广泛认可。

Codeco Corporation Of Vermont公司的发展小趣事

在电子行业的浪潮中,Codeco Corporation Of Vermont(以下简称Codeco)由几位热衷于科技创新的工程师创立。他们看到了电子产品日益普及的趋势,决定投身这个充满机遇的领域。初创时期,资金短缺、市场竞争激烈,Codeco面临着巨大的挑战。然而,凭借着对技术的执着追求和对市场的敏锐洞察,他们成功开发出了一款具有创新性的电子产品,迅速在市场上占得一席之地。

德力康(DLK)公司的发展小趣事

作为一家有社会责任感的企业,DLK公司始终将社会责任和可持续发展作为企业发展的重要内容。公司积极参与公益事业和社会活动,为当地经济发展和社会进步做出了积极贡献。同时,DLK公司注重环保和节能工作,采用环保材料和生产工艺,减少了对环境的污染和破坏。通过履行社会责任和推动可持续发展,DLK公司赢得了社会的广泛认可和尊重。

请注意,以上故事框架仅供参考,具体的故事内容需要根据公司的实际情况和具体事件进行编写。

台湾致强(FORT)公司的发展小趣事

致强科技深知员工是企业持续发展的关键。因此,公司自成立以来便注重企业文化的建设,积极营造和谐、关爱的工作氛围。公司管理层倡导“尊重人性”的理念,不仅为员工提供具有竞争力的薪酬福利,还通过EAP(员工协助计划)等方式关注员工的心理健康和生活需求。EAP项目的实施不仅帮助员工缓解了工作压力,还从多方面提升了员工的归属感和幸福感,为公司的长期发展奠定了坚实的人才基础。

问答坊 | AI 解惑

Spartan-6 and Virtex-6 FPGA Embedded Kit FAQ

1. Where can I purchase an Embedded kit?   2. How much do the Spartan-6 and Virtex-6 FPGA Embedded Kits cost? 3. When will I get my kit? 4. What are included in the Embedded Kits? 5. What expansion ports are avail ...…

查看全部问答>

wince平台中文版本和英文版本应用程序显示的界面大小不同

开发平台是vs2005下vc++下的智能设备开发 三星s2440下的wince平台 屏幕显示分辨率为800*600 在中文版本下应用程序可以全屏显示,但是到了英文平台,只能显示出程序的一部分内容,感觉像是应用程序的分辨率变小了 如果换成vs2005下C#下的智能设备 ...…

查看全部问答>

驱动无法加载到Device.EXE

注册表已经写入成功了,但是dll文件没加入到device.EXE   这是 什么问题了?…

查看全部问答>

关于PB5.0编译汇编文件的问题

系统wince5.0,2440硬件平台,修改了/kernel/hal/arm/fw.s文件后,在pb5.0上编译后整个系统都跑不起来,同样目录下的c文件修改后编译就没有问题,不知是什么原因,后来在PB4.2下编译好fw.s文件,直接把编译好的fw.obj  copy到5.0里链接, ...…

查看全部问答>

SD卡等存储设备突然掉电后不可用的原因求助

是BPB还是FAT或FDT的损坏? 除了硬件损坏,文件系统突然断电会有什么样的写入错误造成存贮设备不可用吗? 一般的文件系统如果是先写数据,再记录FAT和FDT会提高保护的可能性吗。…

查看全部问答>

请问要从支持HL7协议的病人监护仪的网口读出数据和波形,谁会做?报酬详谈

请问要从支持HL7协议的病人监护仪的网口读出数据和波形,谁会做?报酬详谈 QQ:312969842…

查看全部问答>

急!急!急!!!硬盘数据format后,重写过怎么找回?

nnd,今天冲装系统的时候,明明是看的是c盘,确把D盘个了,装好了才发现,气死了. 有什么工具可以恢复吗? …

查看全部问答>

usb驱动+钩子

谁有USB驱动+HOOK的例子和资料呀。 特别感谢!!!!…

查看全部问答>

求教C64x中EMIF中BE[7:0]的作用?

本帖最后由 dontium 于 2015-1-23 13:38 编辑 请大家帮忙,在C64x的EMIF在SDRAM接口中,如何通过BE[7:0]实现8bit、16bit、32bit、64bit的寻址方式? …

查看全部问答>

大哥大姐们求助!!!!

我用的NCP14025V的升压芯片但是纹拨太大,求教怎么解决啊,或者推荐别的芯片,实在不行我想把3.3V升压到7,8V再用别的芯片降到5V不知道可行否;…

查看全部问答>