- 1、本文档共22页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
第10章STC系列单片机片内EEPROM的应用
10.1 EEPROM模块所属特殊功能寄存器
10.2 EEPROM读、写、擦除
第10章STC系列单片机片内EEPROM的应用
STC系列单片机内部不仅集成了用于存储程序的EEPROM,还集成了用于存储数据的EEPROM,不同的型号容量不同,从1KB-45KB不等。
EEPROM主要用于保存在掉电时不允许丢失的数据,在应用过程中所采集、运算或通过键盘输入等得到的一些修正参数。
STC系列单片机内部集成的用于存储数据的EEPROM和用于存储程序的EEPROM地址重叠,但属于不同的物理空间。用户程序指令代码是通过串口直接下载至程序存储器,而用于存储数据的EEPROM则通过用户程序进行读写操作。
EEPROM分为若干个扇区,每个扇区的大小为512B,数据存储器的擦除操作是按扇区进行的,可以擦写的次数在10万次以上。
使用时,同一次修改的数据应该存放于同一个扇区,不是同一次修改的数据最好存放在不同的扇区,不一定要存满。内部EEPROM的扇区地址如表10-1所示。
起始地址
结束地址
起始地址
结束地址
第一扇区
第二扇区
0000H
01FFH
0200H
03FFH
第三扇区
第四扇区
0400H
05FFH
0600H
07FFH
……
……
10.1 EEPROM模块所属特殊功能寄存器
对存储数据的EEPROM读、写、擦除等操作要用到6个特殊功能寄存器
特殊功能寄存器名称
地址
描述
复位初值
IAP_DATA
C2H/E2H
数据寄存器
IAP_ADDRH
C3H/E3H
地址寄存器高8位
IAP_ADDRL
C4H/E4H
地址寄存器低8位
IAP_CMD
C5H/E5H
命令寄存器
xxxxxx00B
IAP_TRIG
C6H/E6H
命令触发寄存器
xxxxxxxxB
IAP_CONTR
C7H/E7H
控制寄存器
0000x000B
STC11/10Fxx、STC12C5A60S2等单片机的6个特殊功能寄存器的地址分别
为C2-C7H;而STC12C56xx、STC12C54xx、STC89/90C51xx等系列单片
机的地址为E2-E7H。
1.命令寄存器IAP_CMD
MS1、MS0决定EEPROM的工作方式
MS1
MS0
操作任务的选择
0
0
待机模式,不操作
0
1
对EEPROM进行读操作
1
0
对EEPROM进行写操作
1
1
对EEPROM进行擦除操作
2.控制寄存器IAP_CONTR
对IAPEN、SWBS两位,用户只能写入1、0或0、0。
IAPEN:读、写、擦除使能位。清0后禁止对EEPROM进行读、写、擦除;置1后允许对EEPROM进行读、写、擦除。
SWBS:若对该位写入0,则是选择了用户应用程序(IAP)对EEPROM进行操作;该位若写入1,则是选择了单片机内部固化的系统监控程序(ISP)对EEPROM进行操作。
SWRST:若对该位写入1时将产生系统软件复位,复位响应时,硬件自动将该位清零。
CMD_FAIL:若该位为0,表示对EEPROM的读、写、擦除等操作是成功的;若该位为1,表示对EEPROM的读、写、擦除等操作失败,须由软件清0。
WT2、WT1、WT0这三位设置等待时间,写入EEPROM单元的数据需要55μs的内部编程时间。如果是对内部扇区擦除,则需要21ms。在此期间,不得对EEPROM的任何单元进行任何访问,否则在此之前写入的命令失效。这三位的值决定等待上述时间所需要的系统时钟周期数,具体情况如表10-3所示。
WT2
WT1
WT0
读(2个时钟)
写(55us)
扇区擦除(21ms)
对应fosc
1
1
1
2个时钟
55个时钟
21012个时钟
1MHz
1
1
0
2个时钟
100个时钟
42024个时钟
2MHz
1
0
1
2个时钟
165个时钟
63036个时钟
3MHz
1
0
0
2个时钟
330个时钟
126072个时钟
6MHz
0
1
1
2个时钟
660个时钟
252144个时钟
12MHz
0
1
0
2个时钟
1000个时钟
420240个时钟
20MHz
0
0
1
2个时钟
1320个时钟
504288个时钟
24MHz
0
0
0
2个时钟
1760个时钟
672384个时钟
30MHz
10.2 EEPROM读、写、擦除
EEPROM进行读写时,必须按一个字节一个字节地操作。
通过以下程序了解对EEPROM的读、写、擦除的过程。
(1)从STC12C5A60S2单片机片内EEPROM中某单元读取数据(假设系统时钟频率为20MHz)
MOV IAP_ADDRH,#BYTE_ADDRH ;送单元地址的高8位
文档评论(0)