c - 如何在特定位置翻转特定位并携带该值以便稍后在程序中再次执行
问题描述
我的计划是设置 PORTA= 0x0F 因此 PORTA= 00001111 然后在 if 循环中翻转 PORTC 中的符号所以现在 PORT C 是 00001111 然后另一个 if 循环说如果 PORTC 的 0-3 = 1 然后设置 PORTC7=1 显示为 PORTC= 10001111
#include <avr/io.h>
#ifdef _SIMULATE_
#include "simAVRHeader.h"
#endif
int main(void) {
DDRA = 0x00; PORTA = 0xFF; // Configure port A's 8 pins as inputs
DDRC = 0xFF; PORTC = 0x00; // Configure port C's 8 pins as outputs, initialize to 0s
while (1)
{
if(!(PINA & 0x01)){
PORTC |= 0x01;
}
if(!(PINA & 0x02)){
PORTC |= 0x02;
}
if(!(PINA & 0x04)){
PORTC |= 0x04;
}
if(!(PINA & 0x08)){
PORTC |= 0x08;
}
if(PORTC==0x0F)
{
PORTC |= 0x80;
}
}
return 0;
}
解决方案
要启用某个位,请使用 OR ( |
) 与该位。
要禁用某个位,请使用 AND ( &
) 与除该位之外的所有内容,使用按位 NOT ( ~
)。
要更改位的值(0 到 1 或 1 到 0),请使用按位异或 ( ^
)。
这是一个例子:
#include <stdint.h>
int main ()
{
uint8_t bits = 0x00;
uint8_t mask = 0x01;
//enable bit
bits |= mask;
//disable bit
bits &= ~mask;
//flip bit
bits ^= mask;
//flip bit again
bits ^= mask;
return 0;
}
推荐阅读
- python - 如何在 Spyder 中使用快捷方式进行评论
- python - 有没有更好的方法来解析 python 字典?
- python - 根据网站上的输入显示 matplotlib 图的最简单方法是什么?
- javascript - 是否可以在 Android 中制作形成多层 API 的多层共享库?
- javascript - 如何将这些功能变成链接功能?
- mongodb - 将 Mongodb 和 Neo4j 用于单个应用程序,即 Polyglot Persistence
- python - 在具有帐户链接的 Alexa 技能中,您能否在技能中获得完整的令牌回复 JSON 而不仅仅是访问令牌?
- sql - 需要删除 sql 输出文件中的尾随 .000
- node.js - Node.js 链接承诺,但仍然乱序执行
- r - 从 rvest_session 对象获取非 html 内容