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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? flash.c

?? 寫XS128的D-Flash的三個程序案例
?? C
?? 第 1 頁 / 共 2 頁
字號:
//[Flash.c]Flash擦寫-------------------------------------------------------*
//本文件包含:                                                              *
//    (1)Flash_Erase_Sector:擦除一個指定的扇區                             *
//    (2)Flash_Write_Nword:向一個指定的區域寫入若干個字                    *
//    (3)Flash_unsecured:使用后門機制解除Flash的安全狀態                   *
//    (4)Flash_SetKey:設置后門鑰匙                                         *
//    (5)Flash_SetStatus:設置Flash的安全狀態                               *
//-------------------------------------------------------------------------*

//頭文件
#include "Flash.h"                           //Flash擦寫頭文件


//內部調用函數聲明
void Erase_Write_Pretreat(uchar page);   //擦寫子函數內部調用的函數聲明

//頁所對應的塊對照表
//兩個flash塊,每塊4頁           flash0                flash1        
const uchar pagetable[2][4] = {{0x3C,0x3D,0x3E,0x3F},{0x38,0x39,0x3A,0x3B}};


//由于在Flash擦寫時會在Flash區產生高壓,造成擦寫不穩定,本工程把在高壓時執行
//的程序轉換成機器碼存放在RAM區,在執行擦寫操作時,執行RAM區0的機器碼,
//擦寫操作穩定,該機器碼存放在下面數組中,其中'0x3D'是'RTS'的機器碼
const uchar P[18] = {0x18,0x0B,0x80,0x01,0x05,0xF6,0x01,0x05,0x87,
                     0x87,0xC4,0x40,0x8C,0x00,0x00,0x27,0xF4,0x0A};
                                             //FSTAT=0x80;
                                             //while(!(FSTAT&0x80));
uchar PrgOfRam[18];                          /*存放RAM區執行的的機器碼 */


void PrgToRAM(void)
{
  uchar i=0x00;
  for (i=0; i<18; i++) 
    PrgOfRam[i] = P[i];
}


//Flash_Erase_Sector:擦除指定的扇區----------------------------------------*
//功  能:對頁號為page,扇區首地址為addr的一個扇區進行擦除                   *
//參  數:page--頁映射地址(0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F)         *
//       addr--扇區首地址(偶數)                                            *
//返  回:無                                                                *
//注  意:調用該函數之前,必須確定要擦除的區域可擦除                         *
//-------------------------------------------------------------------------*
void Flash_Erase_Sector(uchar page,uint addr)
{
    //1 判斷是否已分頻、清相關錯誤標志、根據頁號選擇相應的flash塊
    //2 向要擦除的扇區首地址寫任意值(注意:經實驗證實,不可以寫0x0000)
    //3 向命令寄存器寫扇區擦除命令
    //4 在加高壓期間,調用RAM區的機器碼,相當于兩條語句:
    //  FSTAT=0x08; 
    //  while(!(FSTAT&0x40));
    
    Erase_Write_Pretreat(page);    //擦寫子函數共同調用的內部子函數
    *(uint *)addr = 0xFFFF;
    FCMD = 0x40; 
    _asm("CALL PrgOfRam");
}
//-------------------------------------------------------------------------*
//Flash_Write_Nword:向指定的扇區寫入若干個字-------------------------------*
//功  能:將從address_source開始的len個字,寫入頁號為 page,起始地址為        *
//       address_destination的扇區                                         *
//參  數:page--頁映射地址(0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F)         *
//       address_destination--目標扇區首地址(偶數)                         *
//       address_source--源地址                                            *
//       len--字節數                                                       *
//返  回:無                                                                *
//注  意:調用該函數之前,必須確定要寫入的區域可寫入                         *
//-------------------------------------------------------------------------*
void Flash_Write_Nword(uchar page,uint address_destination,
                              uint address_source,uint len)
{
    //1 判斷是否已分頻、清相關錯誤標志、根據頁號選擇相應的flash塊
    //2 寫入若干個字
    //   (1)將源地址的一個字寫入目標地址
    //   (2)向命令寄存器寫字寫入命令
    //   (3)在加高壓期間,調用RAM區的機器碼,相當于兩條語句:
    //      FSTAT=0x08; 
    //      while(!(FSTAT&0x40));
    //   (4)源地址和目標地址同時向后移一個字
    uint m;
    Erase_Write_Pretreat(page);   //擦寫子函數共同調用的內部子函數
    PPAGE = page;                 //設置頁寄存器
    for (m=0; m<len; m++)
    {
        *(uint *)address_destination = *(uint *)address_source;
        FCMD = 0x20;
        asm("CALL PrgOfRam");
        address_destination = address_destination+2;
        address_source = address_source+2;
    }
}
//-------------------------------------------------------------------------*
//Flash_Erase_Nsector:擦除多個扇區-----------------------------------------*
//功  能:以len個字為依據計算所需擦除的扇區量                               *
//參  數:page--頁映射地址(0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F)         *
//       address_destination--目標扇區首地址(偶數)                         *
//       len--字節數                                                       *
//返  回:無                                                                *
//注  意:此函數可擦除多扇區(一頁),但須保證最后一個字不                     *
//       能超出指定頁,即地址不能大于0xBFFE                                 *                         *
//-------------------------------------------------------------------------*
void Flash_Erase_Nsector(uchar page,uint address_destination,uint len)
  {
     //1 判斷是否已分頻、清相關錯誤標志、根據頁號選擇相應的flash塊
     //2 計算要存儲數據所占用地址的扇區量
     //3 擦除扇區
     uchar Fi,Fn;
     Erase_Write_Pretreat(page);
     if(len%256==0)
        Fn=len/256;                   
     else
        Fn=len/256+1;
     if(Fn==0) return;
     for(Fi=0x00;Fi<Fn;Fi++)
      {
        Flash_Erase_Sector(page,(address_destination+512*Fi));
      }
  }
//-------------------------------------------------------------------------*
//Erase_Write_Pretreat:開始擦除或寫入前的公共操作序列子函數----------------*
//功  能:判斷是否已分頻;清相關錯誤標志;根據頁號選擇相應的flash塊;如果頁號不*
//       為0,則設置PPAGE寄存器                                             *
//參  數:page--頁映射地址(0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F)         *
//返  回:無                                                                *
//-------------------------------------------------------------------------*
void Erase_Write_Pretreat(uchar page)
{
    //1 判斷是否設置時鐘分頻,若無分頻,則先分頻
    //2 清保護錯誤和訪問錯誤標志位
    //3 查表、選擇塊號
    uchar i,j;
    if ((FCLKDIV&0x80) == 0) 
      FCLKDIV |= 0x4A;       //設置分頻系數
    FCNFG |= 0x01;    //FCNFG的第0位置1,選擇BLOCK1
    FSTAT |= 0x30;    //清保護錯誤和訪問錯誤標志位   
    FCNFG &= 0xFE;    //FCNFG的第0位置0,選擇BLOCK0
    FSTAT |= 0x30;    //清保護錯誤和訪問錯誤標志位
    if (page != 0)
      {
          for (i = 0;i < 2;i++)
            {
                for (j = 0;j < 4;j++)
                  {
                      if (page == pagetable[i][j])
                          break;
                  }
                if (j < 4)
                    break;
            }
          if (i == 0)  FCNFG &= 0xFE;    //頁號3C~3F,選擇BLOCK0
          if (i == 1)  FCNFG |= 0x01;    //頁號38~3B,選擇BLOCK1
      }
    PPAGE=page;
}
//-------------------------------------------------------------------------*
//Flash_Read_Sector:讀指定Flash地址中的內容--------------------------------*
//功  能:讀取指定頁號為page,首地址為addr的連續len個字節,寫入到ch[]數組中   *
//參  數:page--頁映射地址(0x38,0x39,0x3A,0x3B,0x3C,0x3D,0x3E,0x3F)         *
//       addr--源目標首地址                                                *
//       ch[]--目標首地址                                                  *
//       len --字節個數                                                    *
//返  回:無                                                                *
//注  意:FLASH存儲區的兩個字節表示一個字                                   *
//-------------------------------------------------------------------------*
void Flash_Read_Sector(uchar page,uint addr,uint ch[],uint len) 
{   
    
    uint m;
    uchar i,j;
    if (page != 0)
      {
          for (i = 0;i < 2;i++)
            {
              for (j = 0;j < 4;j++)
                {
                  if (page == pagetable[i][j])

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
欧美卡1卡2卡| 蜜臀av一区二区| 悠悠色在线精品| 韩国在线一区二区| 国产在线精品一区二区三区不卡 | 亚洲影院理伦片| 蜜臀av在线播放一区二区三区| 国产尤物一区二区在线 | 久久色.com| 亚洲自拍偷拍av| 国产美女精品在线| 欧美性生活一区| 久久久精品国产免费观看同学| 亚洲日本va午夜在线影院| 麻豆91小视频| 日本高清视频一区二区| 欧美大胆一级视频| 亚洲成人午夜影院| 成人小视频免费在线观看| 欧美性生活影院| 综合av第一页| 粉嫩久久99精品久久久久久夜| 欧美系列一区二区| 国产欧美精品国产国产专区| 亚洲午夜久久久久久久久久久| 成人午夜大片免费观看| 欧美大黄免费观看| 蜜桃一区二区三区四区| 亚洲精品一线二线三线无人区| 欧美国产在线观看| 激情五月婷婷综合| 日韩精品中午字幕| 另类小说一区二区三区| 91精品国产手机| 日本亚洲欧美天堂免费| 欧美一级二级三级蜜桃| 日韩精品欧美精品| 日韩欧美亚洲另类制服综合在线| 天天影视色香欲综合网老头| 欧美丰满高潮xxxx喷水动漫| 免费人成在线不卡| 久久中文娱乐网| 成人免费观看男女羞羞视频| **欧美大码日韩| 日本道在线观看一区二区| 亚洲国产视频一区二区| 欧美一区二区私人影院日本| 精品无人区卡一卡二卡三乱码免费卡 | 国产成人av网站| 亚洲视频狠狠干| 91精品国产一区二区| 国产91丝袜在线播放九色| 中文字幕一区二区三区色视频| 在线免费av一区| 国内精品写真在线观看| 国产精品毛片久久久久久| 在线亚洲一区观看| 国产最新精品免费| 一区二区高清免费观看影视大全| 欧美一二三在线| 91影院在线观看| 韩国精品久久久| 日日夜夜精品免费视频| 国产精品久久久久一区| 日韩一区二区三免费高清| 色综合咪咪久久| 国产一区二区中文字幕| 日本女人一区二区三区| 樱花影视一区二区| 国产欧美日韩综合精品一区二区| 欧美一级日韩免费不卡| 色噜噜夜夜夜综合网| 99久久免费国产| 国产精品99精品久久免费| 蜜臀va亚洲va欧美va天堂| 亚洲毛片av在线| 综合欧美一区二区三区| 久久精品一区八戒影视| 精品毛片乱码1区2区3区| 日韩亚洲欧美成人一区| 亚洲免费观看在线视频| 久久精品视频一区| 国产精品色呦呦| 中文字幕第一区综合| 国产精品区一区二区三| 国产精品毛片a∨一区二区三区| 国产精品国产三级国产普通话99 | 一本久久综合亚洲鲁鲁五月天 | 亚洲自拍偷拍网站| 亚洲高清免费观看| 日本成人在线电影网| 激情欧美一区二区三区在线观看| 激情五月激情综合网| 国产精品自拍一区| 成人av在线资源网| 欧美日韩一区二区三区高清| 欧美一区二区三区在线| 国产视频视频一区| 一区二区在线免费观看| 精品在线你懂的| 99re这里只有精品6| 欧美日韩国产影片| 国产免费成人在线视频| 亚洲精品你懂的| 久久国产免费看| 欧美在线观看视频在线| 日韩欧美另类在线| 亚洲狠狠丁香婷婷综合久久久| 久久99精品国产麻豆婷婷洗澡| 91亚洲精华国产精华精华液| 欧美电影免费观看高清完整版在线观看 | 免费视频最近日韩| 97超碰欧美中文字幕| 久久先锋资源网| 日本美女视频一区二区| 欧美日韩另类一区| 国产精品久久久久久福利一牛影视| 无码av免费一区二区三区试看 | 水蜜桃久久夜色精品一区的特点| 波多野洁衣一区| 国产精品久久精品日日| 国产精品亚洲成人| 久久精品人人做人人爽人人| 精品综合免费视频观看| 26uuu国产在线精品一区二区| 欧美a级一区二区| 日韩区在线观看| 黄色精品一二区| 国产欧美精品日韩区二区麻豆天美| 国产精品一区二区在线看| 久久精品水蜜桃av综合天堂| 国产a区久久久| 亚洲男帅同性gay1069| 91社区在线播放| 日韩电影免费在线观看网站| 日韩欧美在线影院| 国产一区二区三区在线观看免费视频| 日韩一区二区不卡| 久久精品国内一区二区三区| 日韩精品一区国产麻豆| 91免费版在线| 亚洲黄色免费电影| 欧美精品 日韩| 成人性生交大片免费| 五月婷婷综合激情| 亚洲国产激情av| 欧美日韩高清一区二区三区| 国产真实精品久久二三区| 中文字幕在线不卡国产视频| 欧美高清视频不卡网| 成人国产亚洲欧美成人综合网| 日韩精品一二三| 亚洲少妇30p| 久久九九久久九九| 欧美精品色一区二区三区| 99re6这里只有精品视频在线观看| 亚洲国产综合人成综合网站| 欧美高清在线视频| 337p粉嫩大胆噜噜噜噜噜91av| 欧美色综合网站| 99国内精品久久| 成人综合在线网站| 久草在线在线精品观看| 日韩成人免费电影| 午夜在线电影亚洲一区| 亚洲精品国产a| 亚洲人被黑人高潮完整版| 日韩一区在线免费观看| 国产精品免费人成网站| 国产欧美日韩激情| 国产亚洲一区二区三区| 国产亚洲成aⅴ人片在线观看 | 国产综合色精品一区二区三区| 亚洲综合清纯丝袜自拍| 亚洲夂夂婷婷色拍ww47| 性做久久久久久| 国产在线精品国自产拍免费| 国产一区二区女| 99久久综合99久久综合网站| av中文字幕在线不卡| 91久久精品网| 日韩欧美中文字幕制服| 中文字幕一区av| 亚洲图片激情小说| 亚洲国产日韩a在线播放性色| 午夜精品福利一区二区三区av| 日韩精品一级二级| 国产一区二区三区久久久| 99视频精品在线| 欧美一区二区三级| 国产欧美一区二区三区鸳鸯浴 | 国产精品久久久久久久岛一牛影视 | 欧美优质美女网站| 欧美一区二区免费视频| 欧美激情自拍偷拍| 日韩精品福利网| 91污在线观看| 国产亚洲精品免费| 视频一区免费在线观看| 99re热这里只有精品视频|