找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4828|回复: 10
打印 上一主题 下一主题
收起左侧

如何利用STC-ISP的软件第2个步骤“打开eeprom文件”,烧写进入单片机呢?

[复制链接]
跳转到指定楼层
楼主
ID:956872 发表于 2021-10-3 12:03 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
为了缩小烧入单片机的程序大小,很多时候都会选择在程序初始化的时候把数据定义在eeprom里,如何直接生成eeprom文件烧入单片机?

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



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:57657 发表于 2021-10-3 13:19 | 只看该作者
PC指针不能指向EEPROM执行程序,只有数组数据才可以写进EEPROM。
回复

使用道具 举报

板凳
ID:624769 发表于 2021-10-3 19:59 | 只看该作者
方法一:  直接在STC - ISP软件的 Eeprom 页,输入内容,然后另存为 bin文件,可下载到单片机的Eeprom。
方法二: 用任意一个 16进制编辑器,如 UltarEdit , WinHex 等,编辑一个 bin文件,然后在 STC - ISP 中打开该文件件,下载到单片机的Eeprom
回复

使用道具 举报

地板
ID:796531 发表于 2021-10-3 21:56 | 只看该作者
keil写个数组,hex文件烧录 ,stc-isp选打开eeprom文件烧录
回复

使用道具 举报

5#
ID:956872 发表于 2021-10-4 10:33 | 只看该作者
paladina 发表于 2021-10-3 21:56
keil写个数组,hex文件烧录 ,stc-isp选打开eeprom文件烧录

这个数组是要包含哪些信息,像头文件需不需要。我定义的LED[3];那我直接写LED[]={0x01,0x02,0x03}; 就这样可以了吗。然后下载的时候 填写第二片区0x0200,这样就可以下载了?
回复

使用道具 举报

6#
ID:956872 发表于 2021-10-4 10:35 | 只看该作者
188610329 发表于 2021-10-3 19:59
方法一:  直接在STC - ISP软件的 Eeprom 页,输入内容,然后另存为 bin文件,可下载到单片机的Eeprom。
方 ...

就是不知道你说的bin文件是怎样的,没见过。编写该文件需要包含哪些信息,要不要头文件,还是直接led[]={0x0,0x02,0x03}?
回复

使用道具 举报

7#
ID:624769 发表于 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 方式效果更好。
回复

使用道具 举报

8#
ID:955673 发表于 2021-10-4 21:33 | 只看该作者
暂时当内置 24CXX 理解吧,用不上就空着,勉强写进去不会读白搭
回复

使用道具 举报

9#
ID:956872 发表于 2021-10-12 20:45 | 只看该作者
188610329 发表于 2021-10-4 18:50
ISP 工具里面 Eeprom 文件 页  另存为  就是 bin 文件。
bin 文件,直接就是 16进制数,他的 纵横坐标就 ...

下载进去的数据读取跟擦写进去的读取方式不一样的吗?
回复

使用道具 举报

10#
ID:624769 发表于 2021-10-12 22:12 | 只看该作者
PEB188 发表于 2021-10-12 20:45
下载进去的数据读取跟擦写进去的读取方式不一样的吗?

一样的, 只是大批量的数据的话,这样写起来方便, 否则还要专门为了写这些东西专门写一个程序烧录一次,不是么?
回复

使用道具 举报

11#
ID:996773 发表于 2023-7-11 13:10 | 只看该作者
可以的,我正在写tef6686收音机程序,把6686初始化数据放在89c52的模拟eeprom里面,这样

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

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

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