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

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

?? f120_flashprimitives.c

?? C8051Fxx全系列固件程序寫FLASH原程序
?? C
字號:
//-----------------------------------------------------------------------------
// F120_FlashPrimitives.c
//-----------------------------------------------------------------------------
// Copyright 2004 Silicon Laboratories, Inc.
//
// This program contains several useful utilities for writing and updating
// FLASH memory.
//
// AUTH: BW & GP
// DATE: 21 JUL 04
//
// Target: C8051F12x
// Tool chain: KEIL C51 7.06
//
// Release 1.1
// -Upgrading release version due to change in FlashPrimitives.h
// -07 FEB 2006 (GP)
//
// Release 1.0
//

//-----------------------------------------------------------------------------
// Includes
//-----------------------------------------------------------------------------

#include "F120_FlashPrimitives.h"
#include <c8051F120.h>

//-----------------------------------------------------------------------------
// Structures, Unions, Enumerations, and Type Definitions
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Global Constants
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// Function Prototypes
//-----------------------------------------------------------------------------

// FLASH read/write/erase routines
void FLASH_ByteWrite (FLADDR addr, char byte, bit SFLE);
unsigned char FLASH_ByteRead (FLADDR addr, bit SFLE);
void FLASH_PageErase (FLADDR addr, bit SFLE);

//-----------------------------------------------------------------------------
// Global Variables
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// FLASH Routines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// FLASH_ByteWrite
//-----------------------------------------------------------------------------
//
// This routine writes <byte> to the linear FLASH address <addr>.
// Linear map is decoded as follows:
// Linear Address       Bank     Bank Address
// ------------------------------------------------
// 0x00000 - 0x07FFF    0        0x0000 - 0x7FFF
// 0x08000 - 0x0FFFF    1        0x8000 - 0xFFFF
// 0x10000 - 0x17FFF    2        0x8000 - 0xFFFF
// 0x18000 - 0x1FFFF    3        0x8000 - 0xFFFF
//
void FLASH_ByteWrite (FLADDR addr, char byte, bit SFLE)
{
   char SFRPAGE_SAVE = SFRPAGE;        // preserve SFRPAGE
   bit EA_SAVE = EA;                   // preserve EA
   char PSBANK_SAVE = PSBANK;          // preserve PSBANK
   char xdata * data pwrite;           // FLASH write pointer

   EA = 0;                             // disable interrupts

   SFRPAGE = LEGACY_PAGE;

   if (addr < 0x10000) {               // 64K linear address
      pwrite = (char xdata *) addr;
   } else if (addr < 0x18000) {        // BANK 2
      addr |= 0x8000;
      pwrite = (char xdata *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x2
      PSBANK |=  0x20;
   } else {                            // BANK 3
      pwrite = (char xdata *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x3
      PSBANK |=  0x30;
   }

   FLSCL |= 0x01;                      // enable FLASH writes/erases
   PSCTL |= 0x01;                      // PSWE = 1

   if (SFLE) {
      PSCTL |= 0x04;                   // set SFLE
   }

   RSTSRC = 0x02;                      // enable VDDMON as reset source
   *pwrite = byte;                     // write the byte

   if (SFLE) {
      PSCTL &= ~0x04;                  // clear SFLE
   }
   PSCTL &= ~0x01;                     // PSWE = 0
   FLSCL &= ~0x01;                     // disable FLASH writes/erases

   PSBANK = PSBANK_SAVE;               // restore PSBANK
   SFRPAGE = SFRPAGE_SAVE;             // restore SFRPAGE
   EA = EA_SAVE;                       // restore interrupts
}

//-----------------------------------------------------------------------------
// FLASH_ByteRead
//-----------------------------------------------------------------------------
//
// This routine reads a <byte> from the linear FLASH address <addr>.
//
unsigned char FLASH_ByteRead (FLADDR addr, bit SFLE)
{
   char SFRPAGE_SAVE = SFRPAGE;        // preserve SFRPAGE
   bit EA_SAVE = EA;                   // preserve EA
   char PSBANK_SAVE = PSBANK;          // preserve PSBANK
   char code * data pread;             // FLASH read pointer
   unsigned char byte;

   EA = 0;                             // disable interrupts

   SFRPAGE = LEGACY_PAGE;

   if (addr < 0x10000) {               // 64K linear address
      pread = (char code *) addr;
   } else if (addr < 0x18000) {        // BANK 2
      addr |= 0x8000;
      pread = (char code *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x2
      PSBANK |=  0x20;
   } else {                            // BANK 3
      pread = (char code *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x3
      PSBANK |=  0x30;
   }

   if (SFLE) {
      PSCTL |= 0x04;                   // set SFLE
   }

   byte = *pread;                      // read the byte

   if (SFLE) {
      PSCTL &= ~0x04;                  // clear SFLE
   }

   PSBANK = PSBANK_SAVE;               // restore PSBANK
   SFRPAGE = SFRPAGE_SAVE;             // restore SFRPAGE
   EA = EA_SAVE;                       // restore interrupts

   return byte;
}

//-----------------------------------------------------------------------------
// FLASH_PageErase
//-----------------------------------------------------------------------------
//
// This routine erases the FLASH page containing the linear FLASH address
// <addr>.
//
void FLASH_PageErase (FLADDR addr, bit SFLE)
{
   char SFRPAGE_SAVE = SFRPAGE;        // preserve SFRPAGE
   bit EA_SAVE = EA;                   // preserve EA
   char PSBANK_SAVE = PSBANK;          // preserve PSBANK
   char xdata * data pwrite;           // FLASH write pointer

   EA = 0;                             // disable interrupts

   SFRPAGE = LEGACY_PAGE;

   if (addr < 0x10000) {               // 64K linear address
      pwrite = (char xdata *) addr;
   } else if (addr < 0x18000) {        // BANK 2
      addr |= 0x8000;
      pwrite = (char xdata *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x2
      PSBANK |=  0x20;
   } else {                            // BANK 3
      pwrite = (char xdata *) addr;
      PSBANK &= ~0x30;                 // COBANK = 0x3
      PSBANK |=  0x30;
   }

   FLSCL |= 0x01;                      // enable FLASH writes/erases
   PSCTL |= 0x03;                      // PSWE = 1; PSEE = 1

   if (SFLE) {
      PSCTL |= 0x04;                   // set SFLE
   }

   RSTSRC = 0x02;                      // enable VDDMON as reset source
   *pwrite = 0;                        // initiate page erase

   if (SFLE) {
      PSCTL &= ~0x04;                  // clear SFLE
   }

   PSCTL &= ~0x03;                     // PSWE = 0; PSEE = 0
   FLSCL &= ~0x01;                     // disable FLASH writes/erases

   PSBANK = PSBANK_SAVE;               // restore PSBANK
   SFRPAGE = SFRPAGE_SAVE;             // restore SFRPAGE
   EA = EA_SAVE;                       // restore interrupts
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日韩情涩欧美日韩视频| 日本高清免费不卡视频| 国产精品美女久久福利网站| 日韩精品专区在线| 日韩亚洲欧美中文三级| 日韩欧美一二区| 精品乱码亚洲一区二区不卡| 久久一留热品黄| 欧美激情艳妇裸体舞| 国产精品入口麻豆原神| 国产精品高潮呻吟| 亚洲激情校园春色| 婷婷综合另类小说色区| 美女视频网站黄色亚洲| 精彩视频一区二区| 99久久精品国产一区| 99精品久久久久久| 欧美色欧美亚洲另类二区| 制服.丝袜.亚洲.中文.综合| 日韩欧美一级精品久久| 中文字幕国产一区二区| 夜夜嗨av一区二区三区中文字幕| 日韩精品三区四区| 国产成人精品综合在线观看 | 美女视频一区二区| 国产美女娇喘av呻吟久久| 成人免费看黄yyy456| 91福利国产成人精品照片| 欧美一卡2卡3卡4卡| 久久精品免费在线观看| 一区二区三区蜜桃网| 理论电影国产精品| 91蜜桃网址入口| 日韩三级免费观看| 亚洲精品中文在线影院| 精品一区二区三区在线播放视频 | 亚洲精品视频在线观看免费| 婷婷成人激情在线网| 国产成人综合视频| 欧美视频在线播放| 久久精品视频免费观看| 性欧美大战久久久久久久久| 波多野结衣在线一区| 日韩午夜精品视频| 亚洲综合在线五月| 久久99国产乱子伦精品免费| 99国内精品久久| 欧美成人一区二区三区在线观看| 亚洲欧洲色图综合| 国产精品一区在线| 日韩欧美国产综合| 首页国产欧美日韩丝袜| 色婷婷激情一区二区三区| 国产日韩在线不卡| 国模冰冰炮一区二区| 欧美精品九九99久久| 一区二区在线看| 波多野结衣在线aⅴ中文字幕不卡 波多野结衣在线一区 | 一区二区三区在线观看动漫| 国产精品一区二区在线播放 | 久久九九99视频| 看国产成人h片视频| 欧美午夜理伦三级在线观看| 亚洲国产精品成人综合| 国产精品一级在线| 久久色在线观看| 久久国产精品99久久人人澡| 精品视频999| 亚洲国产一区二区在线播放| 日本久久电影网| 一区二区三区四区亚洲| 一本色道亚洲精品aⅴ| 国产精品沙发午睡系列990531| 国产精品一二三区在线| 久久综合中文字幕| 精品一区二区三区免费观看| 欧美一区二区三区喷汁尤物| 日韩精品一区第一页| 777亚洲妇女| 免费亚洲电影在线| 欧美videofree性高清杂交| 久久精品国产精品亚洲红杏| 欧美tickling网站挠脚心| 久久成人18免费观看| 精品少妇一区二区三区视频免付费| 日本视频一区二区三区| 欧美刺激脚交jootjob| 国产乱码精品1区2区3区| 国产日韩欧美高清| 91丨九色丨黑人外教| 一区二区三区中文在线观看| 欧美日韩在线观看一区二区 | 久久精品视频免费观看| 丰满白嫩尤物一区二区| 国产精品免费人成网站| 91黄色激情网站| 丝袜美腿亚洲综合| 国产亚洲欧美一区在线观看| 成人精品国产一区二区4080| 亚洲激情网站免费观看| 日韩一区二区三区观看| 国产乱码一区二区三区| 亚洲免费观看高清| 精品国产污污免费网站入口| 丁香激情综合国产| 日韩激情在线观看| 日本一区二区免费在线 | 国产一区二区调教| 国产精品毛片久久久久久| 欧美日韩精品一区二区天天拍小说 | 粉嫩嫩av羞羞动漫久久久| 亚洲精选视频免费看| 精品国产一区二区三区不卡| 91在线国产福利| 久久电影网电视剧免费观看| 亚洲日本一区二区三区| 精品欧美一区二区三区精品久久| 成人国产精品免费观看| 日本伊人色综合网| **网站欧美大片在线观看| 日韩欧美一区电影| 在线观看91视频| 成a人片亚洲日本久久| 久久精品国产亚洲高清剧情介绍 | 国产欧美精品一区aⅴ影院| 欧美电视剧在线看免费| 成人激情黄色小说| 乱中年女人伦av一区二区| 亚洲综合区在线| 国产精品污网站| 亚洲精品一区二区精华| 在线观看91av| 欧美人动与zoxxxx乱| 色婷婷国产精品久久包臀| 国产精品一区二区免费不卡| 日本亚洲三级在线| 天堂久久久久va久久久久| 一区二区三区精品久久久| 综合久久国产九一剧情麻豆| 国产女同互慰高潮91漫画| 久久嫩草精品久久久精品一| 日韩亚洲国产中文字幕欧美| 欧美日韩视频第一区| 色噜噜狠狠一区二区三区果冻| 国产69精品久久久久毛片| 韩国精品一区二区| 国产一区二区三区免费播放| 麻豆专区一区二区三区四区五区| 日韩高清在线不卡| 视频一区在线播放| 日本不卡123| 六月丁香婷婷久久| 狠狠色狠狠色综合系列| 久久er99精品| 国内外精品视频| 国产成人av电影在线播放| 国内精品嫩模私拍在线| 国产乱人伦偷精品视频不卡| 粉嫩一区二区三区在线看| 成人免费观看视频| 色域天天综合网| 欧美主播一区二区三区| 在线一区二区三区四区| 欧美久久久久久久久久| 91精品欧美久久久久久动漫| 欧美一级高清大全免费观看| 日韩女优毛片在线| 久久久精品国产免大香伊| 国产精品毛片高清在线完整版| 日韩美女视频一区二区 | 91精品国产福利| 精品国产乱码久久久久久图片 | 日本一区二区三级电影在线观看| 欧美国产欧美综合| 亚洲精品成人少妇| 香蕉av福利精品导航| 黑人精品欧美一区二区蜜桃| 成年人网站91| 777久久久精品| 日本一区二区三区四区| 一级中文字幕一区二区| 久久99国产精品久久99| 福利一区在线观看| 欧美伊人久久久久久久久影院 | 日韩精品欧美精品| 国产传媒久久文化传媒| 在线观看免费成人| 久久综合999| 亚洲专区一二三| 国产成人精品亚洲日本在线桃色| 一本一本大道香蕉久在线精品 | 精品久久久久久久久久久久久久久久久| 久久精品在线免费观看| 一区二区三区在线高清| 国产一区久久久| 欧美片网站yy| 亚洲美女视频在线| av电影在线观看一区| 欧美一级日韩免费不卡| 《视频一区视频二区|