搜索
bottom↓
回复: 19

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

[复制链接]

出0入4汤圆

发表于 2015-1-13 09:38:45 | 显示全部楼层 |阅读模式
也就是说内部eep本来全是ff的,我想在烧入程序第一次运行的时候初始化一次为其他值。

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



出0入0汤圆

发表于 2015-1-13 09:47:03 | 显示全部楼层
写一个标志位,如0XAA55,如果上电读取非0XAA55就初始化一次。

出0入4汤圆

 楼主| 发表于 2015-1-13 10:16: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)
                        {
                                “用户代码”
                        }
               
                }


这样不知可行不

出0入0汤圆

发表于 2015-1-13 10:38:19 | 显示全部楼层
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

出0入4汤圆

 楼主| 发表于 2015-1-13 10:44:02 | 显示全部楼层
叶子疯 发表于 2015-1-13 10:38
extern unsigned char eeprom_write(unsigned char addr, unsigned char value);//eeprom写函数
extern uns ...

如何才能保证只在程序烧录时有用呢

出0入0汤圆

发表于 2015-1-13 10:48:48 | 显示全部楼层
huarana 发表于 2015-1-13 10:44
如何才能保证只在程序烧录时有用呢

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

这个语句本身就是初始化eeprom用的(只在烧程序的时候有用),它会按次序把你的初始数据写入eeprom中。

出0入0汤圆

发表于 2015-1-13 10:54:52 | 显示全部楼层
楼上正解

出0入4汤圆

 楼主| 发表于 2015-1-13 11:00:36 | 显示全部楼层
叶子疯 发表于 2015-1-13 10:48
直接用
__EEPROM_DATA(0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00);

噢,非常感谢。找到这个头文件库了。

还有个问题就是 __EEPROM_DATA(a, b, c, d, e, f, g, h)  ,使用一次是不是就将eep前8个字节初始化成()内的数据了?
然后再使用一次一次的话,会紧接着写入第9-16字节吗? 地址会自动增加的吗?  

出0入0汤圆

发表于 2015-1-13 11:09:56 | 显示全部楼层
huarana 发表于 2015-1-13 11:00
噢,非常感谢。找到这个头文件库了。

还有个问题就是 __EEPROM_DATA(a, b, c, d, e, f, g, h)  ,使用一 ...


是的,地址都是挨着来的,从0-255

出0入0汤圆

发表于 2015-4-4 15:22:38 | 显示全部楼层
学习!!!

出0入8汤圆

发表于 2015-4-4 15:55:37 | 显示全部楼层
huarana 发表于 2015-1-13 11:00
噢,非常感谢。找到这个头文件库了。

还有个问题就是 __EEPROM_DATA(a, b, c, d, e, f, g, h)  ,使用一 ...

应该不是的,这个语句就决定了  每次烧录都是前几个字节。

出0入0汤圆

发表于 2015-4-5 10:52:35 来自手机 | 显示全部楼层
const 初始化 就可以了。

出0入0汤圆

发表于 2015-4-6 00:09:47 | 显示全部楼层
看了这个才知道。
以前都是笨方法,上电运行检查特定地址内内的内容,判断要不要将eeprom 初始化,哎.....

出0入0汤圆

发表于 2015-4-7 09:52:25 | 显示全部楼层
非常好   学习了

出0入0汤圆

发表于 2016-3-8 16:50:45 | 显示全部楼层
学习一下!

出0入4汤圆

发表于 2016-3-8 17:04:42 | 显示全部楼层
我一般是用这个流程:
ReadEEPROM -> Check ALL "0xff"? ->(YES) -> 初始化 ->把初始化的数据写入EEPROM

出0入0汤圆

发表于 2016-3-22 20:49:47 | 显示全部楼层
终于知道__EEPROM_DATA的用法了,我以前都是上电判断当前地址内的值是否在我设定的范围之内,如果在就说明当前值有效,如果不在就采用默认值

出0入0汤圆

发表于 2016-3-22 21:32:52 | 显示全部楼层
__EEPROM_DATA 赞

出0入0汤圆

发表于 2016-3-22 22:02:24 | 显示全部楼层
围观学习~~

出60入0汤圆

发表于 2016-3-23 17:19:18 | 显示全部楼层
我们用的是汇编,只能用
     org ( CEEPROM_ma_PROGRAM_UPR_file_info + CFile_mvdw_file_content_size)
      _dedw -1
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-3 02:25

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表