【发布时间】:2020-07-06 14:52:29
【问题描述】:
我正在制作一个游戏,您需要重复点亮 LED 的顺序。该序列由两个 LED 设置。为了重复这个序列,我使用了操纵杆。p>
我有一个想法,创建两个布尔数组,其中 True 表示左侧 LED,False 表示右侧 LED。第一个数组必须包含一个需要重复的随机序列(真/假)。当我推到操纵杆的一侧或另一侧时,我想分别写入第二个数组 True / False 并一直比较它们。
这是我目前所拥有的。 (AT90USB647)
#define F_CPU 2000000UL
#include <avr/io.h>
#include <stdbool.h>
int main(void) {
MCUCR |= 0x80;
MCUCR |= 0x80;
DDRA = 0xFF;
PORTF = 0x20;
bool seq2[100];
while(1)
{
uint8_t x = PINF;
if(!(x & 0x20)) {
PORTA = 0x80;
}
else if(!(x & 0x08)) {
PORTA = 0x01;
}
else {
PORTA = 0x00;
}
}
}
主要问题是当我推动操纵杆时如何将 True 或 False 写入数组?
【问题讨论】:
-
你需要一个计数器,而且很可能需要一些去抖动的逻辑。然后只需读取并存储在计数器下的数组中。
-
您能否缩小您遇到的具体问题的范围?您知道如何读取操纵杆的状态并正确检测用户何时按下它吗?你知道用 C 写数组的语法吗? (例如
seg2[i] = 1) -
我想我不知道写入数组的语法,也不知道如何将布尔值写入数组。
-
正如大卫格雷森所说,您应该询问您完全不知道的内容。如果您等待 ctrl + c/ctrl + v 解决方案,我认为您不会得到答案。你知道去抖是如何工作的吗?你知道如何在 C 中使用数组吗?您知道 AVR 中的 ISR 是如何工作的以及如何管理它们吗?
-
如果您不知道如何使用数组,那么请远离嵌入式系统编程,先阅读初级 C 书籍。
标签: c microcontroller avr atmel