你知道骑士车的红灯跳动吗?我正在用我的 Arduino 构建类似的东西。我有一个带有 7 个 LED 的 Arduino Uno。
我遇到的问题是位移。当我的程序运行时,我告诉它为引脚供电:
PORTD = 0b00000001;
稍稍延迟后,我必须将电源切换到另一个引脚。所以它必须是这样的:
PORTD = 0b00000010;
可以通过位移位来存档。我想过类似的事情,但它不起作用:
PORTD = PORTD << 1;
如何解决我遇到的问题?
这是我现在的代码,我必须添加位移:
#include <avr/io.h>
#include <util/delay.h>
int main()
{
UCSR0B = 0;
DDRD = 0b11111111;
for(;;)
{
PORTD = 0b10000000;
_delay_ms(200);
}
}
最佳答案
假设您要打开 PORTD
的第 n 位.
PORTD |= (1<<n);
位从右到左编号为 0、1、2 等。
要关闭第四位,你会这样做
PORTD &= ~(1<<4);
关于c++ - Arduino 端口 Bitschft,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18790880/