首页 DSP技术 嵌入式开发 电源技术 单片机学习 IC设计 工业自动化 无线通讯技术 嵌入式实时操作系统
驱动开发 CAN总线 EDA技术 PCB设计 8051单片机 MSP单片机 PIC单片机
AVR单片机 ARM学习 LED论坛 FPGA论坛 周立功单片机 mp3开发 Flash闪存 手机方案

首页->8051单片机->正文

写STC单片机FLASH的最好办法

上篇: STC MCU 商业版与工业版主要有哪些区别?
下篇: 请问内部的EEPROM

 

问题: STC单片机里FLASH很大,用起来太爽了!
往某个扇区中写数据,需要经历以下过程:
扇区原有数据读出缓冲->扇区全擦除->数据更新重新写入
包括STC提供的手册里也没有很好解决的一个问题是:扇区原有内容读出缓冲,在哪儿缓冲?因为一个扇区有512个字节啊!没有那么多的RAM呀!
手册里的办法是,每个扇区只用其中的一部分容量,呵呵,可惜了啊!
我告诉大家一个好办法:
找一个不用的扇区做缓冲区就一切全解决了.假定要往X号扇区写数据,用Y号扇区做缓冲区,过程如下:
1.擦除Y
2.一个字节一个字节地从X里读,往Y里写,需要修改的数据修改了再写
3.擦除X
4.一个字节一个字节地从Y里读,往X里写
5.第三步和第四步甚至可以省略,重新定位数据区地址到Y就是了
注意,根本就没有使用RAM,毕竟RAM好珍贵啊!而FLASH容量一般都很宽裕的,只用一个扇区就行了.


回答1:这是时间换空间呵呵.
回答2:通常要写FLASH的时候对速度要求并不快,这种方法应该是可以的.通常要写FLASH的时候对速度要求并不快,这种方法应该是可以的.
回答3:支持 xhtxzxw 网友的建议支持 xhtxzxw 网友的建议

手册里的办法是,每个扇区只用其中的一部分容量,呵呵,可惜了啊!
----是同一次修改的数据放在同一个扇区,就是真正的EEPROM
--------创造历史啊
----还有一个程序,用SRAM做缓冲,在 WWW.MCU-MEMORY.COM
--------浪费资源

STC89C51RC/RD+系列内部 EEPROM 放数据(C语言)

WWW.MCU-MEMORY.COM 
回答4:如果清除扇区时单片机掉电,原来不想改的内容也清零了可靠性不好,如果清除扇区时单片机掉电怎么办?原来不想改的内容也清零了。
回答5:只好用外部掉电检测电路只好用外部掉电检测电路

相关资料:

 ICP是不是涨价了? 程序还没有进入到main,就跳到数据中止了!
 7290的用法 今天看资料发现LPC2210的一个设计问题,高手进来说明
 PCF8576的功耗能不能降到20UA zlg7290里面的所有寄存器都是可读可写的吗?
 请问内部的EEPROM 求助:使用AT45DB081遇到的问题.
 STC MCU 商业版与工业版主要有哪些区别? STC和89S52对比实验
 STC你哪有3.8元的单片机啊 无线(非接触式)ISP就好了
 想搞自己的isp 求助关于ISP电路的问题
 目前中发的一块89c52的仿真板大概多少钱 请问STCMCU:大客户特价有什么标准?

Copyright © 2005-2006 电子技术学习网 和 电子电路图网 均为 单片机设计网旗下网站