• 已解决 73482 个问题
  • 已帮助 5993 位优秀工程师

五天的问题还没解决,求大神指导

白天 2017-07-13 浏览量:675

1:单片机型号:IAP15W4K58S4;
2:程序目的:用它的程序区当EEPROM用,并且赋EEPROM初值;
3:我的思路是:CODE一个数组并赋初值后到程序区的一个地址,这个地址等会儿是要做EEPROM的,工作运行中用IAP功能改变这个地址的值。
4:出现的问题:无论如何都改变不了数组值,也就是没擦除掉,这个扇区挨着数组的别的空间写读都没问题,这究竟是怎么了,,,,


#include<stc15.h>

void main()
{

  IAP_ADDRH=0x80;
  IAP_ADDRL=0x00;

while(1);

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

1 0 收起

我来回答

上传资料:
选择文件 文件大小不超过15M(格式支持:doc、ppt、xls、pdf、zip、rar、txt)
所有亮答 数量:6
  • 要把这个IC的某个区当EEPROM用,除非能将这个区写保护,但是IAP15貌似没这个功能吧

    你把程序放上来看看

  • 您好,寫入時候照理說要先擦除(Erase),然後在寫值(Write),許多SPI Flash,EEPROM運作模式是這樣唷

    您可以上傳Project比較好Debug

    以上


  • 用它的程序区当EEPROM用,并且赋EEPROM初值;这个是可以的

    关键你的EEPROM区的地址有没有找对。

    然后下载工具是否得当。


  • 嗯,看了一下你上面贴的那部分程序,你尝试一下这样写

    sfr  IAP_ADDRH=0x80;
    sfr  IAP_ADDRL=0x00;

    看看有什么结果

    参考这篇文章http://www.51hei.com/mcu/1673.html

  • 51的FLASH太小,用户程序区很容易和EEPROM区重合,这样的话就会导致FLASH数据错误。

相关问题

问题达人换一批

五天的问题还没解决,求大神指导