我是C语言的初学者。我正在尝试对我的 ATmega 8 和 ATtiny2313 中的 EEPROM 内存进行操作。基于本教程,我创建了以下代码:
1) 写入一个数字,将 5 放入 uC 的 eeprom
#define F_CPU 1000000UL
#include <avr/eeprom.h>
int main()
{
number=5;
eeprom_update_byte (( uint8_t *) 5, number );
while (1);
{
}
}
2) LED 闪烁 n 次,其中 n 是从 eeprom 中第 5 位读取的数字
#define F_CPU 1000000UL
#include <avr/io.h>
#include <util/delay.h>
#include <avr/eeprom.h>
int main()
{
DDRB=0xFF;
_delay_ms(1000);
int number;
number=eeprom_read_byte (( uint8_t *) 5) ;
for (int i=0; i<number; i++) //blinking 'number' times
{
PORTB |= (1<<PB3);
_delay_ms(100);
PORTB &= (0<<PB3);
_delay_ms(400);
}
while (1);
{
}
}
第二个程序多次闪烁led,它从来不是eeprom中应该有的数量。有什么问题?这发生在 atmega8 和 attiny2313 中。
编辑:第一个程序编译后的控制台结果:
18:01:55 **** 项目 eeprom 配置发布的增量构建 **** 全部调用:打印大小 avr-size --format=avr --mcu=attiny2313 eeprom.elf
AVR 内存使用情况
设备:attiny2313
程序:102 字节(5.0% 已满)(.text + .data + .bootloader)
数据:0 字节(0.0% 已满)(.data + .bss + .noinit)
完成的建筑:sizedummy
18:01:56 构建完成(耗时 189 毫秒)