加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

stc某些单片机里既有eeprom也有flash,各有什么用处??

发布时间:2020-12-15 17:48:04 所属栏目:百科 来源:网络整理
导读:stc某些单片机里既有eeprom也有flash,各有什么用处?? 转载自:http://zhidao.baidu.com/link?url=Wr94WvGE8tnMjuieOP94Cl3Ek9VsNdPBW7OVkiZGBQ_P-t32huZuteyDVt2DwkQ8kFPyZutJlohQ_BmWTI6MGK 如题,网上有很多的帖子区分eeprom和flash,但是我还是不大明白,在

stc某些单片机里既有eeprom也有flash,各有什么用处??


转载自:http://zhidao.baidu.com/link?url=Wr94WvGE8tnMjuieOP94Cl3Ek9VsNdPBW7OVkiZGBQ_P-t32huZuteyDVt2DwkQ8kFPyZutJlohQ_BmWTI6MGK
如题,网上有很多的帖子区分eeprom和flash,但是我还是不大明白,在单片机里面为什么这两种ROM介质同时存在,并且还存在这么多容量上的差距(我用的这个片子flash有60K,eeprom才2K),这两者之间从读写条件作用或者其他方面究竟有什么不同,请高手详细解答下,不胜感激

乱粘贴一大段文字的勿扰~!!!
2010-01-28 09:1
怎么都在说STC的?STC的课一点都不好用,而且毫无代表性啊!STC只不过是将部分程序存储器的Flash ROM当做EEPROM使用,那稳定性就无法保证了,而且操作过程复杂,很不适合使用

LZ可以研究一下AVR单片机或者PIC单片机中的EEPROM使用。

Flash能5V读写或者3V读写,但是其成本低,工艺简单,所以能在单片机中能有64K、128K或者更高容量,这就是为设计大型程序、减少存储器扩展的成本所需要的。而EEPROM是充当了RAM使用,能够被程序读写操作。当然,EEPROM的结构复杂,在单片机中也没必要使用那么大的容量(只是保存若干个参数),如果真的需要很大容量的EEPROM,那可以外部扩这28系列的或者24系列的芯片来实现。

单片机自身也可以对Flash进行写操作,但那时单片机处于自编程状态,像STC的引导代码、AVR单片机的Bootloader就是这样。而Winbond的W78E516单片机有两块FlashROM,一块为64K,主程序使用;另外一块为4K,为引导代码使用。

一般来说任何单片机如果同时有FLASH和EEPROM的话,用法是差不多的。现在我来说明一下这两种非易失性储存器各有什么用处。
1. Flash一般是用来储存程序的。就是你用汇编语言或者C语言开发的源程序,经过编译软件编译以后,成为一串“0”和“1”的组合。一般是十六进制的.HEX文件。然后通过编程器或者下载线烧录到单片机里。这个一般就是放在单片机的Flash中的。掉电以后flash里面的内容不会消失,一般重新上电以后,程序从00h开始运行。(就是从头开始运行)
2. EEPROM一般是用来储存某些表格,常数数据的。它的读写一般是通过FLASH中的某些指令进行的。如果程序中没有相应的指令给它,EEPROM中的数据是不会被改变的。即使掉电以后数据也不会消失。你也许会奇怪为什么会有EEPROM,直接存在FLASH中不就是了吗?为什么要存在EEPROM中呢?举个例子说明吧。比如你有一个表格要存入单片机中。如果你存在flash中那么每次上电时程序从头开始运行,也就是你的表格中的数据,每次都是一样的了。不能被更改。只能被读出。而如果你存在EEPROM中就不一样了。数据既不会丢失。而且只有当你有相应的指令运行过去EEPROM中的数据才会被修改。否则是不会修改的。当你有相应的指令运行过去,里面的数据也会别读出。
那么为什么flash空间远远大于EEPROM空间呢?我个人认为理由很简单。EEPROM的价格也比FLASH贵的多了。其实你的这个片子EEPROM有2K之多。所以可以储存2K个字节的常数或者表格之类的东西。因为你是8位单片机。每个字节又能储存8位二进制数据。相当于你有2K个盒子,每个盒子能放8位二进制数据。这个EEPROM已经算是比较大的了。顺便说一句你的这个片子FLASH有60K也算是比较大的了。

STC的单片机一般都分为eerpom和flash两种内存储器,我用的是老款的89系列的,就是EEPROM可读写,FLASH只读的类型。

STC单片机的程序代码是写在FALSH中的,并且STC规定对FLASH的程序区写操作只能通过STC自己的编程器来完成(后续系列IAP/或者FLASH和EEPROM统一编址的型号FLASH是可以自己改写的,这里可以改写自己程序代码的STC单片机型号等于是不区分FALSH和EEPROM,只有一块存储区,并且这款存储区是可读写的)。

读写条件:
89系列的STC单片机FALSH的读写条件是首先检测是否满足STC自己规定的ISP串口下载数据流,满足便进行读写操作,不满足的话就直接跑FALSH中原有程序代码(即程序代码更新失败)。
而STC的EEPROM是只要通过设定寄存器(看STC的数据手册定义)便可以进行读写操作的带记忆性存储器。

作用:
老款的STC单片机FLASH就是代码区,EEPROM可以做重要数据备份区。
新款的STC单片机(IAP系列/或者FALSH和EEPROM统一编址的),FLASH就是EEPROM,可以通过寄存器的设定来读写(即可以完成用户自己的ISP程序,实现用户应用程序代码升级跟新)。 

可以参看我自己写的一篇博客
http://hi.baidu.com/%B0%A2%DF%BF%B8%C1%B5%BBhoney/blog/item/1c13b1fb98b2d715a8d31108.html

其实flash也就是eeprom,只不过前者在STC单片机里是用来装程序的;后者是给用户可以使用用来存放备份自己的一些数据的。

本人曾为STC上海办事处工程师

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读