标题: 如何利用STC-ISP的软件第2个步骤“打开eeprom文件”,烧写进入单片机呢? [打印本页]

作者: PEB188    时间: 2021-10-3 12:03
标题: 如何利用STC-ISP的软件第2个步骤“打开eeprom文件”,烧写进入单片机呢?
为了缩小烧入单片机的程序大小,很多时候都会选择在程序初始化的时候把数据定义在eeprom里,如何直接生成eeprom文件烧入单片机?

我该如何编写生成这个eeprom文件,
利用STC-ISP的软件第2个步骤“打开eeprom文件”,烧写进入单片机呢?
不知道eeprom的文件是怎样的,是直接把EEPROM的擦除写入程序拎出来吗?




作者: npn    时间: 2021-10-3 13:19
PC指针不能指向EEPROM执行程序,只有数组数据才可以写进EEPROM。
作者: 188610329    时间: 2021-10-3 19:59
方法一:  直接在STC - ISP软件的 Eeprom 页,输入内容,然后另存为 bin文件,可下载到单片机的Eeprom。
方法二: 用任意一个 16进制编辑器,如 UltarEdit , WinHex 等,编辑一个 bin文件,然后在 STC - ISP 中打开该文件件,下载到单片机的Eeprom
作者: paladina    时间: 2021-10-3 21:56
keil写个数组,hex文件烧录 ,stc-isp选打开eeprom文件烧录
作者: PEB188    时间: 2021-10-4 10:33
paladina 发表于 2021-10-3 21:56
keil写个数组,hex文件烧录 ,stc-isp选打开eeprom文件烧录

这个数组是要包含哪些信息,像头文件需不需要。我定义的LED[3];那我直接写LED[]={0x01,0x02,0x03}; 就这样可以了吗。然后下载的时候 填写第二片区0x0200,这样就可以下载了?
作者: PEB188    时间: 2021-10-4 10:35
188610329 发表于 2021-10-3 19:59
方法一:  直接在STC - ISP软件的 Eeprom 页,输入内容,然后另存为 bin文件,可下载到单片机的Eeprom。
方 ...

就是不知道你说的bin文件是怎样的,没见过。编写该文件需要包含哪些信息,要不要头文件,还是直接led[]={0x0,0x02,0x03}?
作者: 188610329    时间: 2021-10-4 18:50
PEB188 发表于 2021-10-4 10:35
就是不知道你说的bin文件是怎样的,没见过。编写该文件需要包含哪些信息,要不要头文件,还是直接led[]={ ...

ISP 工具里面 Eeprom 文件 页  另存为  就是 bin 文件。
bin 文件,直接就是 16进制数,他的 纵横坐标就是他的地址, 所以第一个字节 就是对应地址 0x0000 第二个就对应地址 0x0001
假定,你是要把数组  led[]={0x0,0x02,0x03}  存在 Eeprom 你可以在 Eeprom 编辑器里面直接 输入  00 02 03   占用3个字节, 起始字节地址 为 0x0000 ,
然后C 语言程序中 添加子函数:
char  Led(char addr)
{
        IAP_ADDRH = 00;
        IAP_ADDRL = addr;
        IAP_CMD    =  0x01;
        IAP_TRIG   = 0x5A;
        IAP_TRIG   = 0xA5;
        return  IAP_DATA;
}
然后,主程序调用的时候,
       P1 = Led(0x02);     // 注意,这里是() 不是[]
就可以了。
其他的数组添加,类似。当然,如果你的Eeprom 支持Movc 访问的话,子函数用Movc 方式效果更好。
作者: 冰火风轮    时间: 2021-10-4 21:33
暂时当内置 24CXX 理解吧,用不上就空着,勉强写进去不会读白搭
作者: PEB188    时间: 2021-10-12 20:45
188610329 发表于 2021-10-4 18:50
ISP 工具里面 Eeprom 文件 页  另存为  就是 bin 文件。
bin 文件,直接就是 16进制数,他的 纵横坐标就 ...

下载进去的数据读取跟擦写进去的读取方式不一样的吗?
作者: 188610329    时间: 2021-10-12 22:12
PEB188 发表于 2021-10-12 20:45
下载进去的数据读取跟擦写进去的读取方式不一样的吗?

一样的, 只是大批量的数据的话,这样写起来方便, 否则还要专门为了写这些东西专门写一个程序烧录一次,不是么?
作者: hi等你    时间: 2023-7-11 13:10
可以的,我正在写tef6686收音机程序,把6686初始化数据放在89c52的模拟eeprom里面,这样

就能给收音机本身程序腾出更大空间




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1