亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? flash.c

?? 不開銷緩存RAM的430Flash讀寫程序
?? C
字號:
#include "Config.h"
#include CPU
#define   ON  1
#define   OFF 0
#define   SAVEWORD  ON  /*雙字節(jié)數(shù)讀寫函數(shù)編譯開關(guān)*/
#define   SAVELONG  ON  /*四字節(jié)數(shù)讀寫函數(shù)編譯開關(guān)*/
#define   SAVEFLOAT OFF  /*  浮點數(shù)讀寫函數(shù)編譯開關(guān)*/
#define   MAXNUM  32     /*最大數(shù)據(jù)量(字節(jié))*/
#define   FLASH_SAVEADDR  (0x1080) /*Flash數(shù)據(jù)存儲區(qū)首地址*/
#define   FLASH_COPYADDR  (0x1000) /*Flash備份存儲區(qū)首地址*/

union LongChar      //長整字節(jié)  復(fù)合結(jié)構(gòu)
{ unsigned long int Long;
  struct ByteL4
   {
     unsigned char  BHH;
     unsigned char  BHL;
     unsigned char  BLH;
     unsigned char  BLL;
   }Bytes;   
};
union FloatChar      //浮點字節(jié)  復(fù)合結(jié)構(gòu)
{ unsigned long int Float;
  struct ByteF4
   {
     unsigned char  BHH;
     unsigned char  BHL;
     unsigned char  BLH;
     unsigned char  BLL;
   }Bytes;   
};
//==============================================================================================
void InitFlash(void)
{
  FCTL2 = FWKEY + FSSEL_2 + FN1;             // SMCLK/3 =333KHz for Flash Timing Generator
}                                           //257~476KHz之間
//==============================================================================================
void Flash_Busy()
{
  while((FCTL3 & BUSY) == BUSY){_NOP();}    //Busy
}
//==============================================================================================
void Flash_CopyA2B()
{
  unsigned char *Flash_ptrA;                         // Segment A pointer
  unsigned char *Flash_ptrB;                         // Segment B pointer
  unsigned int i;
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrB = (unsigned char *) FLASH_COPYADDR;             // Initialize Flash segment B pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptrB = 0;                          // Dummy write to erase Flash segment B
  Flash_Busy();                              //Busy
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  for (i=0; i<MAXNUM; i++)
  {
    *Flash_ptrB++ = *Flash_ptrA++;           // copy value segment A to segment B
    Flash_Busy();                              //Busy
  }
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
}
//==============================================================================================
void Flash_WriteByte (unsigned char Address,unsigned char Data)
{
  unsigned char *Flash_ptrA;                         // Segment A pointer
  unsigned char *Flash_ptrB;                         // Segment B pointer
  unsigned int i;
  Flash_CopyA2B();                          //Flash內(nèi)的數(shù)據(jù)先保存起來
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrB = (unsigned char *) FLASH_COPYADDR;             // Initialize Flash segment B pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptrA = 0;                          // Dummy write to erase Flash segment A
  Flash_Busy();                              //Busy
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  for (i=0; i<MAXNUM; i++)
  {
    if(i==Address)
    {
     *Flash_ptrA++ =Data;                    // Save Data
     Flash_Busy();                              //Busy
     Flash_ptrB++;
    }
    else
    {
     *Flash_ptrA++ = *Flash_ptrB++;           // 恢復(fù)Flash內(nèi)的其他數(shù)據(jù)
     Flash_Busy();                              //Busy
    }
  }
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
}  
//----------------------------------------------------------------------------------------------
unsigned char Flash_ReadByte (unsigned char Address)
{ unsigned char Data;
  unsigned char *Flash_ptrA;                         // Segment A pointer
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Data=*(Flash_ptrA+Address);
  return(Data);
}
//==============================================================================================
#if(SAVEWORD==ON)
void Flash_WriteWord (unsigned char Address,unsigned int Data)
{
  unsigned char *Flash_ptrA;                         // Segment A pointer
  unsigned char *Flash_ptrB;                         // Segment B pointer
  unsigned int i;
  Flash_CopyA2B();                          //Flash內(nèi)的數(shù)據(jù)先保存起來
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrB = (unsigned char *) FLASH_COPYADDR;             // Initialize Flash segment B pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptrA = 0;                          // Dummy write to erase Flash segment A
  Flash_Busy();                              //Busy
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

  for (i=0; i<MAXNUM; i++)
  {
    if(i==Address)
    {
     *Flash_ptrA++ =Data/256;                    // Save Data
     Flash_Busy();                                //Busy
     *Flash_ptrA++ =Data%256;                    // Save Data     
     Flash_Busy();                                //Busy
     Flash_ptrB+=2;
    }
    else
    {
     *Flash_ptrA++ = *Flash_ptrB++;            // 恢復(fù)Flash內(nèi)的其他數(shù)據(jù)
     Flash_Busy();                              //Busy
    }
  }
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
} 
//----------------------------------------------------------------------------------------------
unsigned int Flash_ReadWord (unsigned char Address)
{ unsigned int Data;
  unsigned char *Flash_ptrA;                         // Segment A pointer
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Data=*(Flash_ptrA+Address)*256+*(Flash_ptrA+Address+1);
  return(Data);
}
#endif
//==============================================================================================
#if(SAVELONG==ON)
void Flash_WriteLong (unsigned char Address,unsigned long int Data)
{
  union LongChar LData;
  unsigned char *Flash_ptrA;                         // Segment A pointer
  unsigned char *Flash_ptrB;                         // Segment B pointer
  unsigned int i;
  LData.Long=Data;
  Flash_CopyA2B();                          //Flash內(nèi)的數(shù)據(jù)先保存起來
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrB = (unsigned char *) FLASH_COPYADDR;             // Initialize Flash segment B pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptrA = 0;                          // Dummy write to erase Flash segment A
  Flash_Busy();                              //Busy
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation

  for (i=0; i<MAXNUM; i++)
  {
    if(i==Address)
    {
     *Flash_ptrA++ =LData.Bytes.BHH;                    // Save Data
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =LData.Bytes.BHL;                    // Save Data   
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =LData.Bytes.BLH;                    // Save Data
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =LData.Bytes.BLL;                    // Save Data     
     Flash_Busy();                              //Busy
     Flash_ptrB+=4;
     }
    else
    {
     *Flash_ptrA++ = *Flash_ptrB++;           // 恢復(fù)Flash內(nèi)的其他數(shù)據(jù)
     Flash_Busy();                              //Busy
    }
  }
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
} 
//----------------------------------------------------------------------------------------------
unsigned long int Flash_ReadLong (unsigned char Address)
{
  unsigned char *Flash_ptrA;                         // Segment A pointer
  union LongChar Data;
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrA+=Address;
  Data.Bytes.BHH=*Flash_ptrA++;
  Data.Bytes.BHL=*Flash_ptrA++;
  Data.Bytes.BLH=*Flash_ptrA++;
  Data.Bytes.BLL=*Flash_ptrA++;     
  return(Data.Long);
}
#endif
//==============================================================================================
#if(SAVEFLOAT==ON)
void Flash_WriteFloat (unsigned char Address,float Data)
{
  union FloatChar FData;
  unsigned char *Flash_ptrA;                         // Segment A pointer
  unsigned char *Flash_ptrB;                         // Segment B pointer
  unsigned int i;
  FData.Float=Data;
  Flash_CopyA2B();                          //Flash內(nèi)的數(shù)據(jù)先保存起來
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrB = (unsigned char *) FLASH_COPYADDR;             // Initialize Flash segment B pointer
  FCTL1 = FWKEY + ERASE;                    // Set Erase bit
  FCTL3 = FWKEY;                            // Clear Lock bit
  *Flash_ptrA = 0;                          // Dummy write to erase Flash segment A
  Flash_Busy();                              //Busy
  FCTL1 = FWKEY + WRT;                      // Set WRT bit for write operation
  for (i=0; i<MAXNUM; i++)
  {
    if(i==Address)
    {
     *Flash_ptrA++ =FData.Bytes.BHH;                    // Save Data
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =FData.Bytes.BHL;                    // Save Data   
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =FData.Bytes.BLH;                    // Save Data
     Flash_Busy();                              //Busy
     *Flash_ptrA++ =FData.Bytes.BLL;                    // Save Data     
     Flash_Busy();                              //Busy
    }
    else
    {
     *Flash_ptrA++ = *Flash_ptrB++;           // 恢復(fù)Flash內(nèi)的其他數(shù)據(jù)
     Flash_Busy();                              //Busy
     Flash_ptrB+=4;
    }
  }
  FCTL1 = FWKEY;                            // Clear WRT bit
  FCTL3 = FWKEY + LOCK;                     // Set LOCK bit
} 
//----------------------------------------------------------------------------------------------
float Flash_ReadFloat (unsigned char Address)
{
  unsigned char *Flash_ptrA;                         // Segment A pointer
  union FloatChar Data;
  Flash_ptrA = (unsigned char *) FLASH_SAVEADDR;             // Initialize Flash segment A pointer
  Flash_ptrA+=Address;
  Data.Bytes.BHH=*Flash_ptrA++;
  Data.Bytes.BHL=*Flash_ptrA++;
  Data.Bytes.BLH=*Flash_ptrA++;
  Data.Bytes.BLL=*Flash_ptrA++;     
  return(Data.Float);
}
#endif
//==============================================================================================

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
精品国产凹凸成av人导航| 成人免费视频视频在线观看免费| 99国产精品久久久久久久久久久| 欧美激情中文字幕| 99精品国产99久久久久久白柏| 国产亚洲婷婷免费| 99热精品国产| 亚洲一区二区三区爽爽爽爽爽| 国内精品视频666| 欧美性猛交xxxxxx富婆| 日韩视频一区二区三区| 精品盗摄一区二区三区| 亚洲国产精品一区二区久久恐怖片 | 精品国产乱码久久久久久免费| 免费av网站大全久久| 日韩一级成人av| 国产美女一区二区三区| 中文字幕中文字幕在线一区| 欧美午夜精品久久久| 美国欧美日韩国产在线播放| 国产精品三级在线观看| 欧美亚洲一区二区在线| 久久不见久久见免费视频1| 国产日产精品1区| 欧美色窝79yyyycom| 久久99精品久久久久久| 日韩伦理免费电影| 欧美一区二区三区四区久久| 国产成人自拍网| 亚洲曰韩产成在线| 精品国产乱码久久久久久牛牛| 91蝌蚪porny九色| 美女视频黄久久| 中文字幕精品—区二区四季| 91婷婷韩国欧美一区二区| 在线观看一区二区视频| 欧美日韩一级视频| 欧美经典三级视频一区二区三区| 成人黄色免费短视频| 亚洲欧美乱综合| 精品国产一区二区三区不卡 | 日韩一二三区视频| 99久久er热在这里只有精品15| 日韩av高清在线观看| 国产精品麻豆一区二区| 欧美一区三区二区| 一本色道综合亚洲| 国产福利91精品一区二区三区| 亚洲 欧美综合在线网络| 国产精品成人免费精品自在线观看| 6080yy午夜一二三区久久| 成人福利视频网站| 欧美大尺度电影在线| 成人免费高清视频| 中文一区一区三区高中清不卡| 一区二区三区四区视频精品免费| 欧美va亚洲va| 欧洲国产伦久久久久久久| 懂色一区二区三区免费观看| 蜜臀久久99精品久久久久久9| 亚洲一区二区三区四区的| 国产精品久久久久一区二区三区共| 欧美一区二区免费视频| 欧洲另类一二三四区| 99精品国产热久久91蜜凸| 成人天堂资源www在线| 狠狠色综合播放一区二区| 男人的天堂亚洲一区| 亚洲v日本v欧美v久久精品| 一区二区三区不卡视频| 亚洲欧美色一区| 亚洲精品欧美综合四区| 亚洲丝袜美腿综合| 中文字幕综合网| 国产精品久久久久四虎| 国产精品福利av| 国产欧美一区二区三区在线看蜜臀 | 99精品视频在线播放观看| 蜜桃免费网站一区二区三区| 日本视频一区二区三区| 日韩精品亚洲专区| 肉肉av福利一精品导航| 天天综合色天天| 日本特黄久久久高潮| 免费成人美女在线观看.| 久久黄色级2电影| 韩国精品免费视频| 国产精品88888| 成人h动漫精品| 99re在线视频这里只有精品| 色综合婷婷久久| 欧美日韩一区二区三区在线| 欧美精品丝袜中出| 日韩一区二区免费在线观看| 日韩视频在线观看一区二区| 久久综合九色综合97婷婷女人| 久久久电影一区二区三区| 麻豆国产一区二区| 欧美国产欧美综合| 91.xcao| 欧美日韩一区高清| 91精品国产乱| 久久综合九色综合欧美98| 国产精品毛片久久久久久| 一区二区三区电影在线播| 婷婷夜色潮精品综合在线| 久久国产综合精品| 成人污污视频在线观看| 欧美三级日韩三级| 久久综合中文字幕| 亚洲欧美激情插| 裸体歌舞表演一区二区| 成人国产亚洲欧美成人综合网| 91成人免费网站| 精品福利视频一区二区三区| 国产精品乱人伦一区二区| 午夜精品免费在线观看| 狠狠色综合色综合网络| 日本韩国精品在线| 欧美一级生活片| 中文字幕一区不卡| 日本vs亚洲vs韩国一区三区二区 | 亚洲欧美自拍偷拍色图| 亚洲人成在线观看一区二区| 日韩主播视频在线| a在线播放不卡| 日韩亚洲欧美综合| 亚洲男人的天堂网| 狠狠色丁香婷婷综合| 在线免费观看日韩欧美| 久久久天堂av| 视频一区欧美精品| 99精品视频在线观看| 欧美精品一区二区在线观看| 亚洲精品高清在线观看| 精品一区二区三区在线观看国产| 色婷婷久久久综合中文字幕| 26uuu国产日韩综合| 亚洲一区电影777| 成人国产免费视频| 欧美精品一区视频| 日本一不卡视频| 欧美性大战久久| 中文字幕一区二区三区蜜月| 国产原创一区二区三区| 欧美人动与zoxxxx乱| 国产精品久久毛片av大全日韩| 韩国欧美国产1区| 91精品免费观看| 亚洲一区二区三区激情| 97成人超碰视| 欧美激情在线看| 国产酒店精品激情| 欧美一级在线免费| 日韩综合一区二区| 欧美日韩电影在线| 亚洲午夜私人影院| 色欲综合视频天天天| 亚洲国产成人午夜在线一区| 国产综合成人久久大片91| 精品美女一区二区| 麻豆精品一二三| 欧美成人一区二区三区片免费 | 日韩av一区二区三区四区| 欧美在线观看一区| 亚洲影视资源网| 91国产丝袜在线播放| 1000精品久久久久久久久| 成人免费观看视频| 中文字幕中文乱码欧美一区二区 | 97se亚洲国产综合在线| 国产精品私人影院| 91免费观看视频在线| 亚洲人成小说网站色在线| 99久久精品免费| 亚洲欧美日韩一区二区三区在线观看| 成人精品gif动图一区| 中文字幕一区二区三中文字幕 | 在线影视一区二区三区| 亚洲欧美韩国综合色| 在线一区二区三区四区五区| 一个色妞综合视频在线观看| 欧美日韩一区二区电影| 青草av.久久免费一区| 色综合天天综合色综合av| 国内成人自拍视频| 色综合视频一区二区三区高清| 亚洲人成精品久久久久久| 91免费版pro下载短视频| 亚洲一区二区三区四区的| 欧美一区二区三区四区在线观看| 狠狠色丁香久久婷婷综合_中| 久久久美女毛片| 成人永久免费视频| 亚洲卡通欧美制服中文| 欧美喷潮久久久xxxxx| 精品一区二区三区免费毛片爱| 国产偷国产偷精品高清尤物| 92精品国产成人观看免费 | 日韩免费电影网站|