gpt4 book ai didi

c - 如何计算开关数量并通过应用屏蔽来开关相应数量的LED?

转载 作者:行者123 更新时间:2023-11-30 15:12:30 25 4
gpt4 key购买 nike

我正在使用 DE0 板,想要计算处于 ON 位置的滑动开关的数量(其中有 10 个),然后点亮板上相应数量的 LED(也是 10 个)。但是我不知道如何使用 IOWR 的屏蔽结果。谢谢您

alt_u16 sw;

volatile int i = 0;

alt_u16 count = 0x0;

alt_u16 mask = 0x0001;

alt_u16 sw2;

int CountSWITCHES(alt_u16 sw);

int alt_main (void)
{
while(1)
{
sw = IORD_ALTERA_AVALON_PIO_DATA(SWITCHES_BASE);

IOWR_ALTERA_AVALON_PIO_DATA(LEDS_BASE, sw2);
}
return 0;
}

int CountSWITCHES(alt_u16 sw)
{
for(i = 0; i < 10; i++)
{
if (sw & mask)
{
count++;
}

mask = mask >> 1;
}
return count;
}

void TurnLedsON(alt_u16 sw2)
{
sw2 = CountSWITCHES(sw);
}

最佳答案

函数CountSWITCHES不正确,应该是:

int CountSWITCHES(alt_u16 sw)
{
alt_u16 mask = 1;

for(i = 0; i < 10; i++)
{
if (sw & mask)
{
count++;
}

mask = mask << 1;
}

return count;
}

顺便说一句,此函数返回开关打开的数量,但不返回它们的位置。

IOWR_ALTERA_AVALON_PIO_DATA(base, data) 需要一个位域data:每个设置为 1 的位都会将端口对应的输出设置为 1 (base) >)通过了。这意味着您必须根据开关位置设置 sw2 变量的位。

关于c - 如何计算开关数量并通过应用屏蔽来开关相应数量的LED?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35041700/

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