如何解决组合AND和OR逐位运算符
为了安全地调整寄存器中的位,我使用:
DDRA |= 0b01100000;
DDRA &= 0b01111111;
- 第一行将第5位和第6位设置为TRUE,无论其当前状态如何,都不会影响其他位
- 第二行将第7位设置为FALSE,无论其当前状态如何而不会影响其他位
如何简化这两个操作?
解决方法
DDRA = (DDRA << 1) >> 1;
以上方法可能会更快。
DDRA &= 0b01111111;
根据是8位硬件寄存器(还是16位硬件寄存器的8位子寄存器),DDRA具有无符号数据类型,并且CPU的溢出标志和结转标志不会引起问题。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。