450073622 发表于 2018-8-28 09:57:10

STC的程序存储区的几个疑问

最近要用到STC的EEPROM功能,用的是STC15W4K48S4的芯片,看命名规则,不能将程序存储区的FLASH当EEPROM,但有专用的EEPROM,用IAP字节读从0000H-27FFH,用MOVC读从C000H-E7FFH,加载我已经编写的程序,代码长度到了25C0H。所以有几个疑问:
1、用IAP指令读和MOVC指令读的地址不一样,但其实是连接的是同一个物理地址,只是由于指令不一样的缘故导致读取地址不一样?
2、加载的程序显示到了25C0H,这个和用IAP读取地址0000H-27FFH不是同一个地址吧?不然我用IAP指令不就读到了程序的地址上去了?
3、根据STC15W4K32S4系列的说明,整个系列外部存储器看起来就是58KB大小,外部ROM和EEPROM共用58KB,根据型号不同再分别划分大小?

450073622 发表于 2018-8-28 20:22:34

防沉,有人帮我解答下吗?

makesoft 发表于 2018-8-29 08:47:21

MOVC是真实地址,IAP仅仅是做了地址映射,这样做的原因估计是为了不同规格的CPU程序移植吧。

450073622 发表于 2018-8-29 10:10:59

makesoft 发表于 2018-8-29 08:47
MOVC是真实地址,IAP仅仅是做了地址映射,这样做的原因估计是为了不同规格的CPU程序移植吧。 ...

昨晚测试了下,按照IAP指令读取擦写EEPROM不影响程序运行,应该是按您说的方式这么做的,不然肯定会引起程序混乱

makesoft 发表于 2018-8-29 13:39:01

450073622 发表于 2018-8-29 10:10
昨晚测试了下,按照IAP指令读取擦写EEPROM不影响程序运行,应该是按您说的方式这么做的,不然肯定会引起 ...

DATAFLASH和CODEFLASH虽都是FLASH,但地址范围不同,怎么影响?

说到影响也是有的,在擦写同时,程序不再响应中断请求等操作,也就是说这一时刻你可以看做CPU冻结了。
页: [1]
查看完整版本: STC的程序存储区的几个疑问