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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4004|回復(fù): 7
打印 上一主題 下一主題
收起左側(cè)

請(qǐng)教STC12C5608單片機(jī)EEPROM如何斷電保存多個(gè)數(shù)據(jù)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
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);
    }

  }

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

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

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

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

要求同時(shí)保存參數(shù)d,num,sum三個(gè)參數(shù),我現(xiàn)在只能按照例子保存一個(gè)參數(shù),在上電讀出,請(qǐng)教各位高手

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

使用道具 舉報(bào)

沙發(fā)
ID:136485 發(fā)表于 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;
      }
    }
  }
}
回復(fù)

使用道具 舉報(bào)

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

使用道具 舉報(bào)

地板
ID:744327 發(fā)表于 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;
                }
        }
}
回復(fù)

使用道具 舉報(bào)

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

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

使用道具 舉報(bào)

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

使用道具 舉報(bào)

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

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

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

使用道具 舉報(bào)

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

謝謝,現(xiàn)在是按指定的地址
回復(fù)

使用道具 舉報(bào)

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 亚洲欧美在线观看 | 亚洲日韩中文字幕一区 | 亚洲精品久久区二区三区蜜桃臀 | 国产精品区二区三区日本 | 国产日韩欧美在线观看 | 日本大香伊一区二区三区 | 日本午夜网站 | 在线免费观看毛片 | 久久成人精品 | 九一视频在线播放 | www.久| 日本黄色大片免费 | 九九看片| 成人免费看电影 | 国产精品久久久久久吹潮 | 91精品国产91久久综合桃花 | 欧美精品乱码久久久久久按摩 | 精品国产乱码久久久久久a丨 | 日韩一区精品 | 国产精品欧美一区二区三区不卡 | 麻豆一区| 欧美成人一区二区 | 中文字幕国产视频 | 久久中文字幕电影 | 日韩视频免费 | 在线播放国产一区二区三区 | 午夜精品一区二区三区在线视频 | 日本一区二区三区视频在线 | 99精品久久久久 | 久久一 | avmans最新导航地址 | 99精品视频一区二区三区 | 日韩av在线中文字幕 | 成人h免费观看视频 | 性色在线| 日韩精品一区二区三区第95 | 国产在线第一页 | 久久四虎 | 操网站| 日韩中文在线观看 | 国产精久久久久久 |