关于内部eeprom,有没有办法初始化一次eep

2020-02-06 10:05发布

也就是说内部eep本来全是ff的,我想在烧入程序第一次运行的时候初始化一次为其他值。

以后的断电上电就不用执行这个初始化代码了。(因为第一次上电以后会用按键来设置刷新eep)



友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
19条回答
tigerman520
1楼-- · 2020-02-06 13:39
写一个标志位,如0XAA55,如果上电读取非0XAA55就初始化一次。
huarana
2楼-- · 2020-02-06 18:42
tigerman520 发表于 2015-1-13 09:47
写一个标志位,如0XAA55,如果上电读取非0XAA55就初始化一次。

如何区分第一次上电运行还是以后的运行。

是不是可以在main函数的 while外面写个++标致位。

u8        num=0;

void        main()

                {
                if(num==0)
                        {
                                ”eep初始化代码“       
                        }
                num++;
                if(num>250)
                num=1;             /*防止num+满自溢变成0,也就是说只有程序烧进去那一次num才会=0 */               

                while(1)
                        {
                                “用户代码”
                        }
               
                }


这样不知可行不
叶子疯
3楼-- · 2020-02-06 22:04
extern unsigned char eeprom_write(unsigned char addr, unsigned char value);//eeprom写函数
extern unsigned char eeprom_read(unsigned char addr);//eeprom读函数
//上面两个函数是PICC自带的
//下面这些语句是初始化eeprom的,8个一组,只在烧写程序时有用。
__EEPROM_DATA(50, 50, 50, 0, 0, 0, 0x12, 0x5c);//亮度,对比度,音量
__EEPROM_DATA(0x01, 0xf4, 0x03, 0x20, 0x06, 0x40, 0, 0);//R101    0x08
__EEPROM_DATA(0x07, 0xd0, 0x0f, 0xa0, 0x00, 0x00, 0, 0);//R101顶蒸0x10
__EEPROM_DATA(0x02, 0x8a, 0x06, 0x72, 0x00, 0x00, 0, 0);//M201    0x18
__EEPROM_DATA(0x01, 0xf4, 0x03, 0x20, 0x06, 0x40, 0, 0);//A301    0x20
__EEPROM_DATA(0x03, 0xe8, 0x0c, 0x1c, 0x00, 0x00, 0, 0);//c37
__EEPROM_DATA(0x01, 0xf4, 0x03, 0x20, 0x07, 0xd0, 0, 0);//6408
__EEPROM_DATA(0x01, 0xf4, 0x05, 0xdc, 0x00, 0x00, 0, 0);//VA01
__EEPROM_DATA(0x02, 0x12, 0x06, 0x72, 0x00, 0x00, 0, 0);//CH7140b
__EEPROM_DATA(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0);//A502特殊
__EEPROM_DATA(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0, 0);//F505特殊
__EEPROM_DATA(0x03, 0xE8, 0x03, 0xE8, 0x07, 0xD0, 0, 0);//V70
__EEPROM_DATA(0x02, 0x80, 0x06, 0x68, 0x0D, 0x48, 0, 0);//CM9
huarana
4楼-- · 2020-02-07 01:15
 精彩回答 2  元偷偷看……
叶子疯
5楼-- · 2020-02-07 07:15
huarana 发表于 2015-1-13 10:44
如何才能保证只在程序烧录时有用呢

直接用
__EEPROM_DATA(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);

这个语句本身就是初始化eeprom用的(只在烧程序的时候有用),它会按次序把你的初始数据写入eeprom中。
chill520
6楼-- · 2020-02-07 10:01
楼上正解

一周热门 更多>