gpt4 book ai didi

c - 移出寄存器 >>1

转载 作者:太空宇宙 更新时间:2023-11-04 02:23:06 24 4
gpt4 key购买 nike

我在 STK500 编程板上使用 Atmega 16。我正在尝试打开 DDRA 上的 LED,从 0b00000001 的 Led0 到 0b1000000 的 Led7。好像我用 >> 移位将设置位推出寄存器。它不应该只向右移动 1 吗?我有这个片段

# define F_CPU 8000000UL
#include <util/delay.h>
#include <avr/io.h>

int main(void)
{
DDRA=0xFF;
char leds=0x01;
while(1)
{
if (leds==0x01)
{
for (int i=0;i<8;i++)
{
PORTA=~leds;
leds=leds<<1;
_delay_ms(300);
}
}
else
for (int x=0;x<8;x++)
{
leds=leds>>1;
PORTA=~leds;
_delay_ms(300);
}

}
}

好像是这部分

for (int x=0;x<8;x++)
{
leds=leds>>1;
PORTA=~leds;
_delay_ms(300);
}

将位从寄存器中推出,但它不应该。我弄错了吗?

最佳答案

您在第一个循环中将 1 移出。你没有看到,因为你在轮类前更新了显示。

在 i = 0 的迭代结束时,leds 将等于 0x02。所以你得到以下这个逻辑:

i, leds (end of the loop)
0, 0x02
1, 0x04
2, 0x08
3, 0x10
4, 0x20
5, 0x40
6, 0x80
7, 0x00

关于c - 移出寄存器 >>1,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/55041430/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com