c语言中EEPROM的问题

2020-02-05 09:03发布

我想请教一下,在C语言编写程序中,怎样将一些固定数据放在STC89C51的EEPROM中,使生成的HEX文件中有EEPROM的数据?
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
11条回答
home
1楼-- · 2020-02-06 07:06
 精彩回答 2  元偷偷看……
BXAK
2楼-- · 2020-02-06 08:55
home 发表于 2012-6-15 17:26
1、用结构体怎么写程序,能举例吗?
2、两者不能合并是因为c语言生成的HEX文件大小最大只能是芯片的程序存 ...

1、不熟悉结构体的话继续用数组好了,用二维数组,比如扇区0、1、2不用,从扇区3开始装数据:

unsigned char code asc[][512] = {
        //扇区0
        {
                0x00
        },
       
        //扇区1
        {
                0x00
        },
       
        //扇区2
        {
                0x00
        },
       
        //扇区3
        {
                0x99,0xAB
        }
};

2、程序的HEX与EEPROM的HEX 烧写进单片机的空间路径不同,不可以合并烧写的
home
3楼-- · 2020-02-06 13:26
2、我试过用汇编语言编写程序,可以将关于EEPROM 的数据的一段程序放在程序里,使生成的HEX文件有EEPROM的数据。
因为汇编语言与C语言可以混合在一起,那么可以将关于EEPROM 的数据的一段程序混合在C语言吗?
home
4楼-- · 2020-02-06 17:15
我试过用汇编语言编写程序,可以将关于EEPROM 的数据的一段程序放在程序里,使生成的HEX文件有EEPROM的数据。
因为汇编语言与C语言可以混合在一起,那么可以将关于EEPROM 的数据的一段程序混合在C语言吗?
BXAK
5楼-- · 2020-02-06 21:27
home 发表于 2012-6-18 17:34
我试过用汇编语言编写程序,可以将关于EEPROM 的数据的一段程序放在程序里,使生成的HEX文件有EEPROM的数据 ...

如果你的单片机程序空间够大,可以加个EEPROM写入入程序,用某个扇区的EEPROM几个单元作为判断是否初始化写入相关数据(如:扇区0的0x0000~0x0007是否等于0x01、0x23、0x45、0x67、0x89、0xAB、0xCD、0xEF):

上电/复位程序初始化
    ┃
    ┃
读EEPROM地址0x0000~0x0007是否等于0x01、0x23、0x45、0x67、0x89、0xAB、0xCD、0xEF
    ┃                                 ┃
    ┃是                               ┃否
    ┃                             向EEPROM指定扇区写入相关数据(注意避开扇区0)        
    ┃                                ┃
    ┃                                ┃
    ┃                            扇区0的0x0000~0x0007写入0x01、0x23、0x45、0x67、0x89、0xAB、0xCD、0xEF说明已经初始化EEPROM,下次不再初始化EEPROM
    ┃                                ┃
    ┃                                ┃
             主程序开始


一周热门 更多>