久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4046|回復: 7
打印 上一主題 下一主題
收起左側

請教STC12C5608單片機EEPROM如何斷電保存多個數據

[復制鏈接]
跳轉到指定樓層
樓主
while(1)
  {
   mode();
   if(d==1)
    {
         CR=1;
         if((key1==1)&&(key3==0)&&(key4==0))
     {
         count1++;
         if(count1>8000)
          {
           count1=0;
           if(num>0)
            {
                 num=num-17;
                 if((key3==1)&&(key1==0))break;
                 CCAP3H=num;
                 delay(10);
                }
          }
        }
   if((key1==1)&&(key3==1))
    {
         count2++;
         if(count2>8000)
          {
            count2=0;
            if(num<0xFF)
             {
                  num=num+17;
                  if((key3==1)&&(key1==0))break;
                  CCAP3H=num;
                  delay(10);
                 }
          }
        }

  if((key4==1)&&(key1==1)&&(key3==0))
  {
   count3++;
   if(count3>20000)
    {
     count3=0;
         sum++;
         if((key3==1)&&(key1==0))break;
         if(sum==0x11)
          {
           sum=0x10;
          }
        }
  }
if(key2==1)
  {
   count4++;
   if(count4>20000)
    {
         count4=0;
         sum--;
         if((key3==1)&&(key1==0))break;


         if(sum==0x00)
          {
           sum=0x01;
          }
        }
  }

  switch(sum)
{
  //case 0x00:CCAP0H=0xFF;CCAP1H=0xFF;CCAP2H=0xFF;break;
  case 0x01:PWM1();break;
  case 0x02:PWM2();break;
  case 0x03:PWM3();break;
  case 0x04:PWM4();break;
  case 0x05:PWM5();break;
  case 0x06:PWM6();break;
  case 0x07:PWM7();break;
  case 0x08:PWM8();break;
  case 0x09:PWM9();break;
  case 0x0A:PWM10();break;
  case 0x0B:PWM11();break;
  case 0x0C:PWM12();break;
  case 0x0D:PWM13();break;
  case 0x0E:PWM14();break;
  case 0x0F:PWM15();break;
  case 0x10:PWM16();break;
  default:break;
}
  }
   if(d==0)
    {
         temp=0xFF;
     CCAP0H=temp;
     CCAP1H=temp;
     CCAP2H=temp;
     CCAP3H=temp;
         CR=0;
         delay(100);
    }

  }

/*----------------------------
關閉IAP
----------------------------*/
void IapIdle()
{
  ISP_CONTR = 0;                  //關閉IAP功能
  ISP_CMD = 0;                    //清除命令寄存器
  ISP_TRIG = 0;                   //清除觸發寄存器
  ISP_ADDRH = 0x80;               //將地址設置到非IAP區域
  ISP_ADDRL = 0x00;
}

/*----------------------------
從ISP/IAP/EEPROM區域讀取一字節
----------------------------*/
uchar IapReadByte(uint addr)
{
  uchar dat;                       //數據緩沖區
  ISP_CONTR = ENABLE_ISP;         //使能IAP
  ISP_CMD = CMD_READ;             //設置IAP命令
  ISP_ADDRL = addr;               //設置IAP低地址
  ISP_ADDRH = addr  >> 8;          //設置IAP高地址
  ISP_TRIG = 0x46;                //寫觸發命令(0x5a)
  ISP_TRIG = 0xB9;                //寫觸發命令(0xa5)
  _nop_();                        //等待ISP/IAP/EEPROM操作完成
  dat = ISP_DATA;                 //讀ISP/IAP/EEPROM數據
  IapIdle();                      //關閉IAP功能
  return dat;                     //返回
}

/*----------------------------
寫一字節數據到ISP/IAP/EEPROM區域
----------------------------*/
void IapProgramByte(uint addr, uchar dat)
{
  ISP_CONTR = ENABLE_ISP;         //使能IAP
  ISP_CMD = CMD_PROGRAM;          //設置IAP命令
  ISP_ADDRL = addr;               //設置IAP低地址
  ISP_ADDRH = addr  >> 8;          //設置IAP高地址
  ISP_DATA = dat;                 //寫ISP/IAP/EEPROM數據
  ISP_TRIG = 0x46;                //寫觸發命令(0x5a)
  ISP_TRIG = 0xB9;                //寫觸發命令(0xa5)
  _nop_();                        //等待ISP/IAP/EEPROM操作完成
  IapIdle();
}

/*----------------------------
扇區擦除
----------------------------*/
void IapEraseSector(uint addr)
{
  ISP_CONTR = ENABLE_ISP;         //使能IAP
  ISP_CMD = CMD_ERASE;            //設置IAP命令
  ISP_ADDRL = addr;               //設置IAP低地址
  ISP_ADDRH = addr  >> 8;          //設置IAP高地址
  ISP_TRIG = 0x46;                //寫觸發命令(0x5a)
  ISP_TRIG = 0xB9;                //寫觸發命令(0xa5)
  _nop_();                        //等待ISP/IAP/EEPROM操作完成
  IapIdle();
}

要求同時保存參數d,num,sum三個參數,我現在只能按照例子保存一個參數,在上電讀出,請教各位高手

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:136485 發表于 2020-5-28 09:44 | 只看該作者
void mode()  
{
if((key3==1)&&(key1==0))
  {
   delay(80);
   if((key3==0)&&(key1==0))
    {
     d++;
         IapEraseSector(ISP_ADDRESS);
         IapProgramByte(ISP_ADDRESS, d);
     if(d==2)
      {
       d=0;
      }
    }
  }
}
回復

使用道具 舉報

板凳
ID:228467 發表于 2020-5-28 10:15 | 只看該作者
可以加個大電容,在斷電后短暫時間給單片機供電,完成保存數據
回復

使用道具 舉報

地板
ID:744327 發表于 2020-5-28 10:16 | 只看該作者
void Uart_Send_Str(unsigned char str[],unsigned char len,bit mode)
{
        unsigned char k;
        if(mode == 1)
        {
                for(k = 0;k < len; k++)
                {
                        UartSend(48 + str[k]);
                }       
        }else
        {
                for(k = 0;k < len; k++)
                {
                        str[k] = 0;
                }
        }
}
回復

使用道具 舉報

5#
ID:213173 發表于 2020-5-28 10:52 | 只看該作者
kxcuser 發表于 2020-5-28 09:44
void mode()  
{
if((key3==1)&&(key1==0))

        unsigned char Temp[x]={......};//需要保存的數據
       
        IapEraseSector(ISP_ADDRESS);//擦除指定扇區
        for(i=0;i<x;i++}//x不大于512
        {
                IapProgramByte(ISP_ADDRESS+i, Temp);//從指定扇區首地址連續寫入
        }
回復

使用道具 舉報

6#
ID:136485 發表于 2020-5-28 11:34 | 只看該作者
麻煩管理員把這個帖子關了,我自己解決了
回復

使用道具 舉報

7#
ID:723402 發表于 2020-5-28 11:35 | 只看該作者
想掉電保存多個數據,用stc15系列或者STC8系列,有帶比較器功能的,檢測到掉電就觸發中斷才有足夠的數據保存數據。

_WXQPMGP@[$G7_1JE5[)5OI.png (217.74 KB, 下載次數: 122)

_WXQPMGP@[$G7_1JE5[)5OI.png
回復

使用道具 舉報

8#
ID:136485 發表于 2020-5-28 12:01 | 只看該作者
wulin 發表于 2020-5-28 10:52
unsigned char Temp[x]={......};//需要保存的數據
       
        IapEraseSector(ISP_ADDRESS);//擦除指定扇區

謝謝,現在是按指定的地址
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 成人h片在线观看 | 国内精品久久久久久久 | 蜜桃视频麻豆 | 亚洲精品日韩综合观看成人91 | 91在线视频观看免费 | 精品av久久久久电影 | www亚洲精品| 夜夜爽99久久国产综合精品女不卡 | 中文字幕在线视频网站 | 一区二区视频在线观看 | 天天天操| 人碰人操 | 欧美精品一区二区在线观看 | 日本不卡一区 | 二区精品| 久久精品色欧美aⅴ一区二区 | 日韩成人在线网址 | 国产精品国色综合久久 | 中文字幕丁香5月 | 国产中文视频 | 国产69精品久久99不卡免费版 | 久久久久久久一区二区 | 精品国产一区二区三区性色av | 91在线看片 | 精品国产18久久久久久二百 | 日韩日韩日韩日韩日韩日韩日韩 | 欧美福利| 久久成人亚洲 | 国产一区二区三区在线视频 | 91玖玖 | 国产一区www| 青青久在线视频 | 一区二区不卡 | 国产99视频精品免视看9 | 在线观看www | 免费艹逼视频 | 免费一区二区 | 国外成人在线视频 | 99re国产精品| 伦理二区 | 欧美综合久久久 |