[技术问答] 一个赛元S92F7422的写内部EEPROM问题

[复制链接]
1247|4
 楼主| dw772 发表于 2019-12-25 22:37 | 显示全部楼层 |阅读模式
本帖最后由 dw772 于 2019-12-25 22:43 编辑

请问一下我想在S92F7422的内部EEPOM写入一个常数,现在代码如下:
  void  EEPROM_Write_Byte(  )                              //写入函数
{
        EA=0;                                 //    关中断   
        IAPADE=0x02;                        //指向EEPROM  
        IAPDAT=123;                          //写入123
        IAPADH=0x00;                           //ADDRESS_H
        IAPADL=0x00;                            //ADDRESS_L  在0x00写入数据
        IAPKEY=0xf0;                           //            
        IAPCTL=0x0a;                            //CPU  hold——time=1ms
        _nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();

        IAPADE=0x00;                        //非指向eeprom
        EA=1;
}
  void  EEPROM_Read()                    //读出函数
{
    EA=0;
    IAPADE=0x02;                            //指向EEPROM
    EE_DATA=*(P_POINT+0);                    //初始化*P_POINT=0X00;
    IAPADE=0X00;                        //非指向EEPROM
    EA=1;
    P_Val_test=(u16)EE_DATA;
}
现在的情况是比如00h写入123,00h读出却是0;应该是写入不成功,望大虾指点一下。谢谢!读出函数和后面的显示没有问题( P_Val_test=(u16)EE_DATA=123;)LCD可以显示123.烧录器设置也已经设置为EEPROM编程
TIM截图20191225224114.png
knk 发表于 2019-12-26 09:19 | 显示全部楼层
下面是赛元92/93芯片的EEPROM读写程序
/*****************************************************************************************
* EEPROM写数据程序
* 参数1:要写入的地址
* 参数2:要写入的数据
*/
void eeprom_write(unsigned char eep_dat,unsigned char eep_add);

/*****************************************************************************************
* EEPROM读数据程序
* 参数1:要读取的地址
* 返回值:读取到的数据
*/
unsigned char eeprom_read(unsigned char eep_add);


[payamount]1.00[/payamount]
[pay]
  1. /*****************************************************************************************
  2. * EEPROM写数据程序
  3. * 参数1:要写入的地址
  4. * 参数2:要写入的数据
  5. */
  6. void eeprom_write(unsigned char eep_dat,unsigned char eep_add)
  7. {
  8.         EA=0;                               
  9.         IAPADE=0x02;               
  10.         IAPDAT=eep_dat;               
  11.         IAPADH=0x00;               
  12.         IAPADL=eep_add;               
  13.         IAPKEY=0xF0;               
  14.                                                                                                
  15.         IAPCTL=0x0A;               
  16.         _nop_();                       
  17.         _nop_();       
  18.         _nop_();
  19.         _nop_();
  20.        
  21.         IAPADE=0x00;               
  22.         EA=1;                               
  23. }



  24. /*****************************************************************************************
  25. * EEPROM读数据程序
  26. * 参数1:要读取的地址
  27. * 返回值:读取到的数据
  28. */
  29. unsigned char eeprom_read(unsigned char eep_add)
  30. {
  31.         unsigned char eep_dat;
  32.         unsigned char code *POINT=0x0000;
  33.        
  34.         EA=0;                       
  35.         IAPADE= 0x02;       
  36.         eep_dat=*(POINT+eep_add);       
  37.         IAPADE= 0x00;       
  38.         EA=1;                       
  39.         return eep_dat;       
  40. }

[/pay]

 楼主| dw772 发表于 2019-12-26 16:00 来自手机 | 显示全部楼层
付费可以解决吗

评论

knk
肯定可以,100%解决  发表于 2019-12-27 10:13
赛元MCU3 发表于 2019-12-31 18:10 | 显示全部楼层
这个是赛元SC92F7422的例程,其中IAP.C文件里面是EEPROM的例程,可以做参考。

SC92F7423_7422_7421_7420 Demo Code.rar

102.58 KB, 下载次数: 14

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

本版积分规则

28

主题

516

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部