【发布时间】:2014-01-31 16:30:27
【问题描述】:
我对嵌入式编程完全陌生,我正在检查下面的代码并试图了解它是如何工作的,但我真的被卡住了。
该程序用于计算并打印出0到9的数字。
那么有人可以解释一下const uint8_t这行吗?为什么我需要一个十六进制数的数组?
#include <avr/io.h>
#include <util/delay.h>
#include "debug.h"
const uint8_t segments[10] = {0xFC,0x60,0xDA,0xF2,0x66,0xB6,0xBE,0xE4,0xFE,0xF6};
int main(void) {
uint8_t i=0; //s
int g;
init_debug_uart0();
/* set PORT A pins as outputs */
DDRA = 0xFF;
for (;;) {
PORTA = segments[i];
printf("%d\n\r",i);
_delay_ms(1000);
if (i >=9) {
fprintf(stderr , "Count Overflow\n\r"); i = 0;
scanf("%d", &g);
}else
i++;
}
}
最后一个问题,有没有人知道关于嵌入式编程的好资料?目前我正在学习 IIMatto,8 位处理器,它有 32 个寄存器,采用哈佛架构设计,有 1 级流水线。
【问题讨论】:
-
查看您的原理图以查看连接到端口 A 的内容,然后查看这些十六进制常量的位模式。
-
在我看来,它们可能是位模式,可以照亮 7 段显示器中的正确段。
-
@bobmcn - 嗯 - 你破坏了惊喜:)