c++ - Arduino 端口 Bitschft

标签 c++ c arduino bit-shift

你知道骑士车的红灯跳动吗?我正在用我的 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/

相关文章:

c++ - boost 优先级队列,查看元素是否已经在队列中

c - 如何在 C 中取消引用和自动递增强制转换指针?

c - 我的 fscanf 输出一个很大的负数

c++ - 将字符串对象附加到 Arduino 中的字符数组

python - 使用 PySerial 从 Arduino 串行接收到 Raspberry Pi 一段时间后停止

c++ - 素数计算器C++

c++ - 录制音频,存储在缓冲区中,然后通过 PulseAudio 将字节写入声卡

c++ - 打包结构中的解包结构是否自动打包?

c - ncurses 和 C- 在 ncurses 窗口中显示 'df' 命令的输出

c - 我想创建一个 3D 引擎,但找不到公式