英锐恩单片机论坛,Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流

 找回密码
 立即注册
搜索
电子烟方案单片机单片机开发深圳单片机开发
单片机方案国产单片机8位单片机电子烟方案开发
查看: 3725|回复: 1
打印 上一主题 下一主题

求助EEPROM问题

[复制链接]
跳转到指定楼层
1#
发表于 2009-3-12 15:47:20 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
程序如下,用SIM仿真时可以擦除但无法写入 在最后一句死循环,请高手看看问题在哪谢谢!
#include <p30F6010A.h>
#include <math.h>
int main ( void )
{
  EEPROM_W(16,0xF002);
}
void EEPROM_W(unsigned int EE_DATA,unsigned int EE_ADDR )
{

   
          NVMCON=0x4044;
          NVMADRU=0x7F;
          NVMADR=(unsigned int)(EE_ADDR);
          asm volatile("mov #0x55,w0");
          asm volatile("mov w0,NVMKEY");
          asm volatile("mov #0xAA,w0");
          asm volatile("mov w0,NVMKEY");
          NVMCONbits.WR=1;
          while( NVMCONbits.WR==1);
          NVMCONbits.WREN=0;
          asm volatile("NOP");
        
         TBLPAG=0x7F;
         WREG4=(unsigned int)EE_DATA;
         WREG5=(unsigned int)EE_ADDR;  //目标数据地址
         asm volatile("TBLWTL w4,[w5]");
          NVMCON=0x4004;
         asm volatile("mov #0x55,w0");
         asm volatile("mov w0,NVMKEY");
         asm volatile("mov #0xAA,w0");
         asm volatile("mov w0,NVMKEY");
   
         NVMCONbits.WR=1;    //开始写
      
         while(NVMCONbits.WR=1); //检测寄存器
   
           
}
2#
 楼主| 发表于 2009-3-12 15:47:29 | 只看该作者
在NVMKEY代码后面增加2个Nop().
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

小黑屋|公司首页|Microchip单片机,模拟器件,接口电路,麦肯单片机,单片机应用交流 ( 粤ICP备09008620号 )

GMT+8, 2024-5-17 17:05 , Processed in 0.051620 second(s), 22 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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