找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1198|回复: 13
收起左侧

单片机内存和EEPROM问题

[复制链接]
ID:709761 发表于 2023-11-16 11:56 | 显示全部楼层 |阅读模式
STC单片机做学习型红外遥控,单片机内存4K。20个按键。每个键值236个字节。保存到单片机内部EEPROM。
程序设计,上电先把所有键值读到内存里,内存不够,就算内存够的话,也不能保证程序运行时,内存数据的正确性。
只定义一个按键缓存,每次按键按下,就把对应的键值从EEPROM读到按键缓存里,这样的话会不会减少EEPROM的寿命。
回复

使用道具 举报

ID:773929 发表于 2023-11-16 13:44 | 显示全部楼层
读取不会,频发擦除会
回复

使用道具 举报

ID:161164 发表于 2023-11-16 14:05 | 显示全部楼层
一个键值为啥会有236个字节?
回复

使用道具 举报

ID:996773 发表于 2023-11-16 14:28 | 显示全部楼层
一个键值居然用了236个字节,一看是原来是想用只用一个P30引脚RX,可以下载程序的

奇思妙想的楼主,我觉得楼主遇到的不是eeprom寿命问题,编程需要天赋,需要严谨的

逻辑能力,如果楼主从事此职业,还是改行比较好,如果楼主是编程兴趣爱好,还是走艺术

路线吧
回复

使用道具 举报

ID:57657 发表于 2023-11-16 14:38 | 显示全部楼层
EEPROM里的数据不用读到缓存里,可以用unsigned char code 指针或汇编MOVC指令访问。
回复

使用道具 举报

ID:123289 发表于 2023-11-16 14:44 | 显示全部楼层
如果一个键值必需是236个字节的话,可以对20个键值研究一下,找找共同点,构思出一个压缩方案,压缩后使用。
回复

使用道具 举报

ID:709761 发表于 2023-11-17 08:48 | 显示全部楼层
hi等你 发表于 2023-11-16 14:28
一个键值居然用了236个字节,一看是原来是想用只用一个P30引脚RX,可以下载程序的

奇思妙想的楼主,我觉 ...

红外模块协议规定的
51hei图片_20231117084704.png
回复

使用道具 举报

ID:276663 发表于 2023-11-17 11:28 | 显示全部楼层
首先,先搞清楚236字节数据真的都有效吗?
其次,从EEPROM读数据不减少EEPROM寿命,而且速度也够快。
回复

使用道具 举报

ID:996773 发表于 2023-11-17 15:19 | 显示全部楼层
李冬 发表于 2023-11-17 08:48
红外模块协议规定的

学习模块毕竟是学习用的,我也不知道您的解码数据怎么需要上百个字节来判断键值,

我也看过您历来的提问,很多都是作为思维严谨的程序猿不该问的1+1的较真提问,你

真的需要用上千k的容量来挥霍简简单单的红外数据,得多大的单片机来满足这些垃圾

数据?做这样的产品你的老板会被你气死,上分析仪多看看红外时序,判断一下哪些是有效

数据,哪些是无效丢弃的。1个字节有二百多个变化值,有几个字节判断顶天了,实在不

济就改行吧,楼主真的不适合这行
回复

使用道具 举报

ID:624769 发表于 2023-11-17 16:46 | 显示全部楼层
1,STC系列,读Eeprom 是不影响寿命的。
2,既然你需要写 236 x 20 字节到 Eeprom 说明你单片机的 Eeprom容量需要 5K 以上的,应该也不会是太老的单片机,但凡你用 STC15系(204s,408s等老型号除外)及以上型号单片机,有什么必要从 Eeproim 里面先读出来呢?直接从Eeprom读,又不会比XDATA慢……
回复

使用道具 举报

ID:69038 发表于 2023-11-17 20:39 | 显示全部楼层
如果我没猜错的话,楼主是用直接录取电平的方式来存键值的。不用解协议的,直接按1010的方式,所以才需要200+字节。比如NEC协议有个前导码9ms,就存成100000000000....这样的格式
回复

使用道具 举报

ID:57657 发表于 2023-11-17 21:21 | 显示全部楼层
hi等你 发表于 2023-11-17 15:19
学习模块毕竟是学习用的,我也不知道您的解码数据怎么需要上百个字节来判断键值,

我也看过您历来的提 ...

此遥控器的原理相当于录音机,将未知编码的遥控信号时序波形记录下(比如空调遥控),再将采样的信号发射出去。
回复

使用道具 举报

ID:709761 发表于 2023-11-18 08:34 | 显示全部楼层
hi等你 发表于 2023-11-17 15:19
学习模块毕竟是学习用的,我也不知道您的解码数据怎么需要上百个字节来判断键值,

我也看过您历来的提 ...

每个键值的红外数据除了开头两个字节和结尾两个字节都是一样,中间的字节都是不同的。我已经想到解决办法了。
回复

使用道具 举报

ID:377210 发表于 2023-11-19 13:35 | 显示全部楼层
最长256字节,不一定都要全部保存,选取用到的关键信息保存
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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