飞思卡尔mc9s12xf512的用eeprom读写数据的完整程序代码该怎么写呢(只要这款芯片的)

飞思卡尔mc9s12xf512的用eeprom读写数据的完整程序代码该怎么写呢(只要这款芯片的),第1张

void EEPROM_erasure(UINT16 number) //清除 *** 作函数

  UINT16 erase;               

  //erase = (unsigned char)(0x400+number);

  

  erase = (UINT16)(number);

  erase = 0xff; 

  DisableInterrupts;

  while(!(ECLKDIV & 0x80))    

  {}

  while(!(ESTAT & 0x80))      

  {}

  while(!(EPROT & 0x80))      

  {}

  ECMD = 0x40;

  ESTAT |= 0x80;

  while(!(ESTAT & 0x40)) 

  {}

  EnableInterrupts;;

}

void EEPROM_write(UINT16  code,UINT16 number) //写 *** 作

 

               

  UINT16 eeaddr;           //对EEPROM进行写 *** 作时的地址

 

 /

  allow_calibration = 0;

  calibration = 1;

  /

  DisableInterrupts;

  eeaddr = (UINT16)(number);

  while(!(ECLKDIV & 0x80))         //判断ECLKDIV是否被写入,是向下进行,否原地等待

  {}

  while(!(ESTAT & 0x80))           //判断缓冲区是否准备好,准备好则向下进行,没有准备好则原地等待

  {}

  while(!(EPROT & 0x80))           //判断EEPROM是否允许被写入,允许向下进行,不允许则原地等待

  {}

   eeaddr= code;

   

  ECMD = 0x20;

  ESTAT |= 0x80;

while(!(ESTAT & 0x40))          //判断EEPROM是否被写入,是向下进行,否原地等待;

  {}

  EnableInterrupts;

  return;   

}

 UINT16 EEPROM_read(UINT16 add)  //读 *** 作 

{

  

  UINT16 erase;

  UINT16 m;

  

  calibration = 0;

  

  DisableInterrupts;

  erase = (UINT16)(add);

  

  m = erase; 

  EnableInterrupts;

  return m;

         

  

}

直接存储是不行的,单片机本身的RAM是掉电就没有的。一般使用EEPROM,常用的有24c01等,采用I2C协议进行读写数据,怎么使用这类芯片的程序网上搜一下能搜出几吨来。可以自己搜索一下,由于你使用的51单片机,可以直接用IO口来模拟I2C协议,很简单的。

需要注意的一点就是,要注意E2P芯片的寿命(一般是读写100万次,足够了)。

存储数据的时候,可以对 *** 作数和存储的数据进行比较,不相等则存储,比如:

if

(ReadI2c()!=data)

这样可以增加使用寿命,比有些每隔1秒钟进行存储的会好多了。

碰到要存储的是时间的时候,并且是每秒钟存的话,由于寿命的原因,则要另外想办法,常用的有:

1在掉电瞬间的时候去存储数据,这种方法要硬件上给予检测电路来告知现在掉电了,然后程序就对时间进行存储,这种方法的弊端是“必须要有检测电路”。

2考虑到上述的问题,可以开辟多块空间来存储“时间”,每次上电依次使用不同的空间,但是为了要有“使用哪一块的判断条件”,所以必须再多一个空间存储“判断”:每次程序开始,将“判断++”,然后根据其来决定使用哪一块的“时间空间”。

//

希望能有帮助,上述是对掉电记忆来讲比较不错的的方法了。

以上就是关于飞思卡尔mc9s12xf512的用eeprom读写数据的完整程序代码该怎么写呢(只要这款芯片的)全部的内容,包括:飞思卡尔mc9s12xf512的用eeprom读写数据的完整程序代码该怎么写呢(只要这款芯片的)、用51单片机和EEPROM如何写掉电存储c程序、等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!

欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/9850878.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-02
下一篇 2023-05-02

发表评论

登录后才能评论

评论列表(0条)

保存