[51单片机] stc系列eeprom内部如何掉电存储数据

[复制链接]
2027|3
 楼主| haohaozhu 发表于 2014-10-24 09:01 | 显示全部楼层 |阅读模式
本人目前做一个家电项目,要求是,对某款家电一直计时,断电后时间必须要保存在eeprom中,以便下次继续计时,当计时时间达到一定数值,给予提醒;求大神给个类似程序 谢谢啦
ningling_21 发表于 2014-10-24 12:29 | 显示全部楼层
  1. /*******************************************************************/
  2. /*向单片机内部EEPROM空间读出一字节数据*/
  3. /*******************************************************************/
  4. //11F04E  共2个扇区,起始地址0000H
  5. uchar read_51flash_data(uint eeprom_addr)            
  6. {
  7.         uchar temp;       
  8.        
  9.         IAP_CONTR=0X83;
  10.         IAP_CMD =read_cmd;//字节读命令,,
  11.        
  12.         IAP_ADDRL=eeprom_addr&0xff;
  13.         IAP_ADDRH=eeprom_addr>>8;

  14.         IAP_TRIG=0X5a;
  15.         IAP_TRIG=0Xa5;//
  16.         //delay_nus(2);
  17.         Nop();
  18.         temp=IAP_DATA;

  19.         IAP_CONTR=0X00;
  20.         IAP_CMD =0X00;
  21.         IAP_TRIG=0X00;
  22.         IAP_ADDRH=0Xff;
  23.         IAP_ADDRL=0Xff;
  24.         return temp ;
  25. }

  26. /*******************************************************************/

  27. /*******************************************************************/
  28. void write_51eeprom_1byte(uint eeprom_addr,uchar w_data)
  29. {       
  30.        
  31.         IAP_CMD =program_cmd;//字节编程命令,,

  32.         IAP_ADDRL=eeprom_addr&0xff;
  33.         IAP_ADDRH=eeprom_addr>>8;

  34.         IAP_CONTR=0X03;
  35.         IAP_CONTR|=0X80;
  36.         IAP_DATA =w_data;

  37.         IAP_TRIG=0X5a;
  38.         IAP_TRIG=0Xa5;//
  39.         Nop();
  40.         IAP_CONTR=0X00;
  41.         IAP_CMD  =0X00;
  42.         IAP_TRIG =0X00;
  43.         IAP_ADDRH=0Xff;
  44.         IAP_ADDRL=0Xff;
  45. }

  46. /*******************************************************************/
  47. /*******************************************************************/
  48. /*擦除单片机内部EEPROM空间一个数据的扇区*/

  49. void earse_one_sector_in51(uint  eeprom_page_addr)
  50. {
  51.        
  52.         EA=0;
  53.         IAP_CONTR=0X83;
  54.         IAP_CMD =erase_cmd;//字节擦除命令,,        IAP_CMD

  55.         IAP_ADDRH=eeprom_page_addr>>8;
  56.         IAP_ADDRL=eeprom_page_addr;

  57.         IAP_TRIG=0X5a;
  58.         IAP_TRIG=0Xa5;//
  59.         delay_nus(10);
  60.         Nop();
  61.         IAP_CONTR=0X00;
  62.         IAP_CMD =0X00;
  63.         IAP_TRIG=0X00;
  64.         IAP_ADDRH=0Xff;
  65.         IAP_ADDRL=0Xff;
  66.         EA=1;
  67. }
autopccopy 发表于 2014-10-30 12:45 | 显示全部楼层
掉电使用低压中断保存数据到EEPROM C例程:
http://www.stcisp.com/**_powerdown_save2eeprom_flash.html  :)

(40)
yklstudent 发表于 2014-10-30 15:00 | 显示全部楼层
关键在掉电检测电路
您需要登录后才可以回帖 登录 | 注册

本版积分规则

4

主题

7

帖子

0

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