找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

EEPROM的扇区操作是用IAP好还是ISP好

查看数: 2073 | 评论数: 13 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-8-10 12:29

正文摘要:

/*---------------------------- 扇区擦除 ----------------------------*/ void IapEraseSector(WORD addr) {     IAP_CONTR = ENABLE_IAP;         //使能IAP ...

回复

ID:95375 发表于 2022-8-14 23:15
188610329 发表于 2022-8-10 20:39
STC手册   89系列  第 270 页。

谢谢,就是硬件不同而不同。
ID:95375 发表于 2022-8-14 23:14
yzwzfyz 发表于 2022-8-10 16:42
以51单片机为例:其存储器分为三块。
1、程序存储器:可寻址空间64K,用于存放用户的程序,CPU取指令只能 ...

已明白,谢谢!
ID:95375 发表于 2022-8-14 23:12
188610329 发表于 2022-8-10 20:45
你用不用 头文件的?

你打开  STC15.H     这个头文件

明白了,就是头文件里没定义想用都没得用
ID:401564 发表于 2022-8-11 13:47
我感觉没有必要纠结什么的吧
数据手册上有什么,就用什么
如果想知道,可以对比一下擦除时间之类的区别
ID:624769 发表于 2022-8-10 20:45
liyago 发表于 2022-8-10 18:46
什么不同的地址呢?是不是说这两个只是两种不同的方法,用哪种都行?

     型号        大小   扇区数 ...

你用不用 头文件的?

你打开  STC15.H     这个头文件
你只能找到:
sfr IAP_CONTR = 0xC7;
而找不到:
sfr ISP_CONTR = ????

反过来,你打开  STC89C5xRC.H 这个头文件
你只能找到:
sfr ISP_CONTR = 0xE7;
而找不到:
sfr IAP_CONTR = ????

这就是 STC的改版,地址不一样了,名字也不一样,明白了??
没有哪个更好,因为 一个单片机里 只有其中一个。

ID:624769 发表于 2022-8-10 20:39

STC手册   89系列  第 270 页。
http://www.51hei.com/bbs/dpj-82368-1.html


看到如下图:



注意,红框位置的  地址。

STC15 系列手册   第 841 页。

看到如下图:


注意,红框位置的 地址。

由于,地址本身不同,所以  一个用 ISP 命名, 一个用 IAP命名, 防止因为用错头文件,而出了问题也不知道问题在哪里。
即,虽然是同一个操作方式,但是,由于寄存器地址不同,所以给了不同的名字。目的是为了区分 版本差别。
同理, T2 定时器, 89系列名字 叫 TL2, TH2,  15系列里面叫  T2L, T2H,  都是 定时器 初值定义, 但是寄存器地址 变了,所以,名字就要变。
ID:95375 发表于 2022-8-10 18:46
188610329 发表于 2022-8-10 14:18
ISP和iap,对应的sfr寄存器地址不同,不是哪个好,而是为了区别不同的地址。

什么不同的地址呢?是不是说这两个只是两种不同的方法,用哪种都行?

     型号        大小   扇区数  开始地址  结束地址   MOVC读偏移地址
STC15F/L2K32S2   29K    58扇区  0x0000  ~  0x73FF        0x8000

比如要读写STC15F2k32s2,用哪种方法都一样是吧
ID:161164 发表于 2022-8-10 17:04
188610329 发表于 2022-8-10 15:45
89的手册,寄存器是ISP_????,头文件也是,89,90的寄存器是ISP_xxxx,15,8的头文件是iapxxxx,指向的地 ...

???

ID:123289 发表于 2022-8-10 16:42
以51单片机为例:其存储器分为三块。
1、程序存储器:可寻址空间64K,用于存放用户的程序,CPU取指令只能在此空间。
2、外部分扩展存储器:可寻址空间64K,用于存放数据,CPU无法在此空间取指令。
3、内部分RAM:256字节。这里略去功能介绍。
问题来了:如果用户弄了2K的EEPROM,如何让它能被CPU寻址(访问)到呢?
有两种方案:
1、程序一般用不了64K的全部空间,于是在【程序存储器】中挖出2K的空间,将它做成EEPROM。这是STC一种做法。例如:IAP15Fxxxx型号芯片。
由于程序存储器通常只能在烧录时写入,而EEPROM却需要在程序运行中,由程序读、写或擦除,为此STC又特意开发了一套写、擦它的方式。但读取仍可以用通用的指令进行,如:MOVC A, @A+DPTR。
这种方案好处是:无需单独再做EEPROM,直接利用【程序存储器】的FLASH空间当作EEPROM用,且大小空间比较自由灵活,用不完的FALSH空间可以随便用。
这里有一个风险:比如:0000-11FFH放的是程序,如果你把此区域当作是EEPROM,对它进行写、擦操作,则程序就被破坏掉了。所以这个方案需要你知道程度占多长?哪些区域是程序用不到的地方。
不过风险中,也有一个重要的好处:可以用程序,修改自己的程序!例如,程序在运行中就能进行自我升级:擦除原来的程序重新写入新的程序!这是高级用法,就不在此介绍了。
2、在【外部分扩展存储器】中挖出2K的空间,将它做成EEPROM,这是常用的方式,不多介绍了。
楼主用C语言写程序,两种方式无所谓好坏之分。但必须知道EEPROM的数据是在哪个区域,因为你在定义一个EEPROM中的数据变量时,需要用到。
如果不考虑在线或远程升级程序,建议用第2种方式的EEPROM芯片,需要考虑的问题少,不易出错。
ID:624769 发表于 2022-8-10 15:45
lkc8210 发表于 2022-8-10 15:12
在STC-ISP的EEPROM范例程序里从89看到8H
全都是用IAP
ISP的程序从哪来的?

89的手册,寄存器是ISP_????,头文件也是,89,90的寄存器是ISP_xxxx,15,8的头文件是iapxxxx,指向的地址是不同的。
ID:161164 发表于 2022-8-10 15:12
在STC-ISP的EEPROM范例程序里从89看到8H
全都是用IAP
ISP的程序从哪来的?
ID:624769 发表于 2022-8-10 14:18
ISP和iap,对应的sfr寄存器地址不同,不是哪个好,而是为了区别不同的地址。

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

Powered by 单片机教程网

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