2020-02-06 10:05发布
tigerman520 发表于 2015-1-13 09:47 写一个标志位,如0XAA55,如果上电读取非0XAA55就初始化一次。
huarana 发表于 2015-1-13 10:44 如何才能保证只在程序烧录时有用呢
最多设置5个标签!
如何区分第一次上电运行还是以后的运行。
是不是可以在main函数的 while外面写个++标致位。
u8 num=0;
void main()
{
if(num==0)
{
”eep初始化代码“
}
num++;
if(num>250)
num=1; /*防止num+满自溢变成0,也就是说只有程序烧进去那一次num才会=0 */
while(1)
{
“用户代码”
}
}
这样不知可行不
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
直接用
__EEPROM_DATA(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);
这个语句本身就是初始化eeprom用的(只在烧程序的时候有用),它会按次序把你的初始数据写入eeprom中。
一周热门 更多>