打印

救命!五天了没搞清,迷茫!

[复制链接]
1998|16
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
ZLLED|  楼主 | 2017-6-2 19:30 | 只看该作者 |只看大图 回帖奖励 |倒序浏览 |阅读模式
1:单片机型号:IAP15W4K58S4;
2:程序目的:用它的程序区当EEPROM用,并且赋EEPROM初值;
3:我的思路是:CODE一个数组并赋初值后到程序区的一个地址,这个地址等会儿是要做EEPROM的,工作运行中用IAP功能改变这个地址的值。
4:出现的问题:无论如何都改变不了数组值,也就是没擦除掉,这个扇区挨着数组的别的空间写读都没问题,这究竟是怎么了,,,,

相关下载

相关帖子

沙发
ZLLED|  楼主 | 2017-6-2 19:43 | 只看该作者
怎么办啊

使用特权

评论回复
板凳
dirtwillfly| | 2017-6-2 21:10 | 只看该作者
既然别的空间没问题,那就换个空间了

使用特权

评论回复
地板
xyz549040622| | 2017-6-3 08:51 | 只看该作者
用它的程序区当EEPROM用,并且赋EEPROM初值;
//那么写flash的时候,这个部分就不能写了,要设置地址的。

使用特权

评论回复
5
xyz549040622| | 2017-6-3 08:51 | 只看该作者
需要你贴出代码和流程才能确定,你的描述有点模糊。

使用特权

评论回复
6
ZLLED|  楼主 | 2017-6-3 11:06 | 只看该作者
xyz549040622 发表于 2017-6-3 08:51
需要你贴出代码和流程才能确定,你的描述有点模糊。

您好,谢谢指点,现在又弄了半天,发现了点问题,不知道是不是问题所在

使用特权

评论回复
7
ZLLED|  楼主 | 2017-6-3 11:10 | 只看该作者
xyz549040622 发表于 2017-6-3 08:51
需要你贴出代码和流程才能确定,你的描述有点模糊。

#include<stc15.h>

void main()
{

  IAP_ADDRH=0x80;
  IAP_ADDRL=0x00;

while(1);

}
就这几两句运行后,在KEIL上打开DEBUG,D在WATCH窗口中输入IAP_ADDRH和IAP_ADDRL,单步运行并观察,发现IAP_ADDRL这个里面的值改变不了。。。不知道什么问题,请高手支援

使用特权

评论回复
8
ZLLED|  楼主 | 2017-6-3 11:30 | 只看该作者
第一图是还没运行前IAP_ADDRL已经是0X83(书上不是说初始值是0吗),这里不懂
第二图,运行IAP_ADDRH=0x80;后,IAP_ADDRH=0x80,这一步达到目的,但是IAP_ADDRL仍然=0x83;(还是不懂)
第三图,运行IAP_ADDRL=0x00;后IAP_ADDRL没有变,这是什么原因啊!

运行前.jpg (41.1 KB )

运行前.jpg

这时高字节地址已变.jpg (42.52 KB )

这时高字节地址已变.jpg

低字节没变.jpg (46.5 KB )

低字节没变.jpg

使用特权

评论回复
9
joing1999| | 2017-6-3 16:42 | 只看该作者
坐等大神。

使用特权

评论回复
10
ZLLED|  楼主 | 2017-6-3 19:02 | 只看该作者

STC单片机内置EEPROM预设初始值(申精)

(出处: amoBBS **电子论坛)
经过5天的努力,终于证实我是被这篇东西上说的直接CODE过去完全蒙了,这种赋初值方式是错误的,假大师一句信口开河话,把我们这种小初给搞得乱了头绪,严重鄙视不经验证的思路,鄙视 **电子论坛的不负责,严重鄙视里面几个说直接可以CODE数据给片内EEPRO赋初值的假师付,,,,,,,希望和我刚学的人看到后别走弯路,老老实实的用上电只赋一次初值并设标志的的方式搞把!

使用特权

评论回复
11
whtwhtw| | 2017-6-5 10:53 | 只看该作者
你的结论和解决方案还没给出,怎么申精?

使用特权

评论回复
12
乔小乔| | 2017-6-8 09:40 | 只看该作者

使用特权

评论回复
13
yddjz| | 2017-6-10 00:26 | 只看该作者
过来学习一下

使用特权

评论回复
14
lulunlun| | 2017-6-11 22:32 | 只看该作者
小伙,看下,是不是对flash有进行写保护的东西,寄存器是有时序要求的

使用特权

评论回复
15
JerryWu75| | 2017-6-15 11:50 | 只看该作者
没听说哪家的MCU能够把flash里的空间通过C指针进行读写操作的.
如果通过C指针就能够直接操作flash空间的话, 如果程序出错,不就把程序代码改变了吗?
一般的MCU内部的flash,应该都是要通过特定的flash控制寄存器进行操作的.

使用特权

评论回复
16
fengjumeng| | 2017-6-15 12:39 | 只看该作者
看看时序吧,,也许哪里的时序没搞明白

使用特权

评论回复
17
annmm| | 2017-7-6 11:35 | 只看该作者
Flash擦写需要专门的指令和前序码的,比如0x5A5A之类,你确定仔细读了datasheet了吗?

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

1

主题

6

帖子

0

粉丝