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

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

?? loader_f02x.c

?? C8051F單片機在系統編程和在應用編程實例
?? C
?? 第 1 頁 / 共 2 頁
字號:
//-----------------------------------------------------------------------------
// erase_flash_page
//-----------------------------------------------------------------------------
//
// This routine erases the FLASH page located at 0x1000
//
void erase_flash_page(void)
{  
   bit EA_state;
   char xdata* data pagePointer = 0x1000; // pointer to xdata space located 
                                          // in data space
   
   EA_state = EA;                   // holds interrupt state

   EA = 0;                          // disable interrupts
   FLSCL |= 0x01;                   // enable FLASH write/erase
   PSCTL  = 0x03;                   // MOVX erases FLASH
   
   // Erase the FLASH page at 0x1000
   *pagePointer = 0;                // initiate the erase
   
   PSCTL = 0x00;                    // MOVX writes target XRAM
   FLSCL &= ~0x01;                  // disable FLASH write/erase
   
   EA =  EA_state;                  // restore interrupt state

   f_valid = FALSE;                 // indicate that code is no longer valid
   code_erased = TRUE;              // indicate that FLASH has been erased
}

//-----------------------------------------------------------------------------
// receive_code
//-----------------------------------------------------------------------------
//
// This routine receives HEX records through the UART and writes the 
// function located at 0x1000.
//
// Hex Record Format:
//
// +--------+--------+------+-------+--------+------(n bytes)------+----------+
// | RECORD | RECLEN |    OFFSET    | RECORD |                     | CHECKSUM |
// |  MARK  |  (n)   |   (2 BYTES)  |  TYPE  |        DATA         |          |
// |  ':'   |        |              |        |                     |          |
// +--------+--------+------+-------+--------+------(n bytes)------+----------+
//
void receive_code(void)
{

   char xdata* data pwrite;               // pointer used for writing FLASH
   char code* data pread;                 // pointer used for reading FLASH
   unsigned int  len;                     // holds the HEX record length field
   char record_type;                      // holds the HEX record type field
   unsigned int offset;                   // holds the HEX record offset field
                                          // this is the starting address of
                                          // the code image contained in the 
                                          // record

   char checksum;                         // holds the HEX record checksum field
   char flash_checksum;                   // holds the checksum calculated after
                                          // the FLASH has been programmed
   bit EA_state;                          // temporary holder used to restore 
                                          // interrupts to their previous state

   char c;                                // temporary char
   int i;                                 // temporary int
   
   // make sure the FLASH page has been erased
   if(!code_erased){
      printf("\n*** At least one FLASH page must be erased prior");
      printf(" to this operation.\n"); 
      return;
   }
   
   // hex2char:2字節ASCII碼轉換為單字節數程序;
   // UART串口通信已經使能,PC通過終端程序發送代碼

   do{
      
      while( c = _getkey() != ':' );      //等待幀開始標記
      
      
      len = hex2char();                   //獲取數據域長度
      
      
      offset = hex2char();				  // 獲取數據起始地址
      offset <<= 8;
      offset |= hex2char();

      // get the record type
      record_type = hex2char();
      if( record_type != 0 && record_type != 1 ){
         printf("\n*** Cannot decode HEX file.\n"); 
         return;
      }      
      
      EA_state = EA;                      // save the interrupt enable bit state
      
      EA = 0;                             // disable interrupts (precautionary)   
      FLSCL |= 0x01;                      // enable FLASH write/erase
      PSCTL  = 0x01;                      // MOVX writes FLASH
   
      pwrite = (char xdata*) offset;      // initialize the write pointer
            
      code_erased = FALSE;                // clear the code_erased flag
           
      // write the record into FLASH
      for( i = 0; i < len; i++){
         *pwrite = hex2char();            // write one byte to FLASH
         pwrite++;                        // increment FLASH write pointer
         
      }
      
      PSCTL = 0x00;                       // MOVX writes target XRAM
      FLSCL &= ~0x01;                     // disable FLASH write/erase
      EA = EA_state;                      // restore interrupts to previous state
      
      // verify the checksum
      pread =  (char code*) offset;       // initialize the read pointer
      checksum = hex2char();              // get the HEX record checksum field
      flash_checksum = 0;                 // set the flash_checksum to zero
      
      // add the data field stored in FLASH to the checksum
      for( i = 0; i < len; i++){
         flash_checksum += *pread++;
      } 
      
      // add the remaining fields
      flash_checksum += len;
      flash_checksum += (char) (offset >> 8);
      flash_checksum += (char) (offset & 0x00FF);
      flash_checksum += record_type;
      flash_checksum += checksum;
      
      // verify the checksum (the flash_checksum should equal zero)
      if(flash_checksum != 0){
         printf("*** Checksum failed, try again.");
         return;
      }
      
   } while(record_type != 1); 
  
   f_valid = TRUE;                     // flag that the "f()" function is valid
   
   _getkey();                          // remove carriage return from input
                                       // stream   

   printf("\nReceived OK\n");  
}

//-----------------------------------------------------------------------------
// Initialization Subroutines
//-----------------------------------------------------------------------------

//-----------------------------------------------------------------------------
// SYSCLK_Init
//-----------------------------------------------------------------------------
//
// This routine initializes the system clock to use an 22.1184MHz crystal
// as its clock source.
//
void SYSCLK_Init (void)
{
   int i;                              // delay counter

   OSCXCN = 0x67;                      // start external oscillator with
                                       // 22.1184MHz crystal

   for (i=0; i < 256; i++) ;           // wait for osc to start

   while (!(OSCXCN & 0x80)) ;          // Wait for crystal osc. to settle

   OSCICN = 0x88;                      // select external oscillator as SYSCLK
                                       // source and enable missing clock
                                       // detector
}

//-----------------------------------------------------------------------------
// PORT_Init
//-----------------------------------------------------------------------------
//
// Configure the Crossbar and GPIO ports
//
void PORT_Init (void)
{
   XBR0    = 0x04;                     // Enable UART0
   XBR1    = 0x00;
   XBR2    = 0x40;                     // Enable crossbar and weak pull-ups
   P0MDOUT |= 0x01;                    // enable TX0 as a push-pull output
   P1MDOUT |= 0x40;                    // enable P1.6 (LED) as push-pull output
}

//-----------------------------------------------------------------------------
// UART0_Init
//-----------------------------------------------------------------------------
//
// Configure the UART0 using Timer1, for <baudrate> and 8-N-1.
//
void UART0_Init (void)
{
   SCON0   = 0x50;                     // SCON0: mode 1, 8-bit UART, enable RX
   TMOD    = 0x20;                     // TMOD: timer 1, mode 2, 8-bit reload
   TH1    = -(SYSCLK/BAUDRATE/16);     // set Timer1 reload value for baudrate
   TR1    = 1;                         // start Timer1
   CKCON |= 0x10;                      // Timer1 uses SYSCLK as time base
   PCON  |= 0x80;                      // SMOD00 = 1
   TI0    = 1;                         // Indicate TX0 ready
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
日本三级亚洲精品| 91丨porny丨首页| 91麻豆免费看片| 狠狠色丁香久久婷婷综| 91网站最新网址| www久久精品| 亚洲午夜电影网| 丁香网亚洲国际| 日韩一区二区在线观看| 国产精品每日更新| 国产在线国偷精品免费看| 欧美另类变人与禽xxxxx| 国产精品久久久久久久久久久免费看| caoporm超碰国产精品| 色一情一乱一乱一91av| 国产拍欧美日韩视频二区| 老司机精品视频一区二区三区| 人人超碰91尤物精品国产| 亚洲婷婷在线视频| 日韩影院精彩在线| 欧美大片免费久久精品三p| 亚洲欧美一区二区三区孕妇| 国产成人精品免费视频网站| 欧美成人艳星乳罩| 亚洲成人激情自拍| 欧美伊人久久久久久午夜久久久久| 色天天综合色天天久久| 国产精品久久久久久久久搜平片| 国产精品天美传媒| 国产在线播放一区三区四| 日韩欧美123| 久久成人久久爱| 精品国产精品一区二区夜夜嗨| 国产精品久久三区| 菠萝蜜视频在线观看一区| 久久无码av三级| 国产酒店精品激情| 中文字幕精品—区二区四季| 国产成人8x视频一区二区| 亚洲国产精品国自产拍av| 成熟亚洲日本毛茸茸凸凹| 欧美国产日本视频| 97se狠狠狠综合亚洲狠狠| 亚洲欧美一区二区不卡| 在线精品视频小说1| 亚洲va欧美va人人爽| 日韩视频永久免费| 国产成人亚洲综合a∨猫咪| 国产精品久99| 欧美日韩国产高清一区二区三区 | 国产不卡视频在线播放| 337p粉嫩大胆色噜噜噜噜亚洲 | jlzzjlzz亚洲女人18| 国产精品剧情在线亚洲| 95精品视频在线| 亚洲综合丝袜美腿| 欧美mv日韩mv亚洲| 成人av电影免费在线播放| 一区二区在线看| 精品久久久久久久久久久院品网 | 另类欧美日韩国产在线| 久久视频一区二区| 91官网在线免费观看| 日本午夜一区二区| 国产亚洲成aⅴ人片在线观看 | av成人老司机| 亚洲综合色区另类av| 日韩精品一区二区三区视频| 成人精品在线视频观看| 亚洲一区电影777| 国产网站一区二区| 欧美日韩极品在线观看一区| 国产精品综合一区二区三区| 一区二区三区影院| 国产日韩精品一区二区三区| 欧美日韩一区二区在线观看| 风间由美一区二区三区在线观看| 精品国产91亚洲一区二区三区婷婷| 亚洲一二三区在线观看| 精品黑人一区二区三区久久| 91蝌蚪porny| 国产美女在线精品| 免费成人在线视频观看| 一区二区免费视频| 中文字幕成人在线观看| 欧美一区二区三区白人| 欧洲精品中文字幕| www.亚洲国产| 国内不卡的二区三区中文字幕| 欧美大度的电影原声| 欧美亚洲精品一区| 99精品热视频| 国产成都精品91一区二区三| 免费日本视频一区| 午夜精品aaa| 亚洲激情欧美激情| 18涩涩午夜精品.www| 久久蜜桃av一区二区天堂| 欧美精品v国产精品v日韩精品 | 日韩精品影音先锋| 一本大道久久a久久精品综合| 亚洲一区二区三区在线| 亚洲色图制服诱惑| 国产精品大尺度| 亚洲国产精品av| 久久久久国产精品免费免费搜索| 成人av电影在线播放| 成人综合在线观看| 懂色av中文字幕一区二区三区 | 日韩**一区毛片| 亚洲综合男人的天堂| 亚洲激情自拍视频| 综合色天天鬼久久鬼色| 国产精品天美传媒| 中文字幕人成不卡一区| 亚洲少妇最新在线视频| 亚洲日本韩国一区| 一区二区三区.www| 亚洲成人动漫av| 日本欧美一区二区| 韩国v欧美v亚洲v日本v| 国产高清精品网站| www.在线成人| 91蝌蚪国产九色| 欧美老女人第四色| 欧美sm极限捆绑bd| 国产精品丝袜在线| 亚洲免费高清视频在线| 天堂蜜桃一区二区三区| 裸体一区二区三区| 国产成人精品1024| 91精品办公室少妇高潮对白| 欧美午夜片在线看| 精品久久五月天| 国产女人aaa级久久久级| 亚洲欧洲日产国码二区| 亚洲一二三四在线| 美女性感视频久久| 成人性生交大片免费看视频在线| 男男视频亚洲欧美| 国产一区二区三区高清播放| 99精品久久只有精品| 欧美无人高清视频在线观看| 欧美电视剧在线看免费| 国产精品嫩草影院com| 亚洲国产欧美日韩另类综合 | 99久久婷婷国产| 精品视频在线看| www国产成人免费观看视频 深夜成人网| 972aa.com艺术欧美| 欧美日韩精品电影| 久久九九全国免费| 亚洲成人免费av| 国产成人啪午夜精品网站男同| 免费的国产精品| 91在线高清观看| 精品国产麻豆免费人成网站| 成人欧美一区二区三区小说 | 亚洲免费电影在线| 麻豆专区一区二区三区四区五区| 亚洲在线观看免费视频| 蜜桃精品视频在线观看| 色综合天天综合在线视频| 精品美女一区二区三区| 亚洲欧美日韩国产中文在线| 国产中文字幕精品| 国产精品久久久久aaaa| 六月丁香婷婷久久| 欧美性色黄大片| 中文字幕免费一区| 麻豆国产一区二区| 欧美剧情片在线观看| 亚洲色欲色欲www| 国产成人自拍在线| 欧美大白屁股肥臀xxxxxx| 亚洲激情自拍视频| 成人av电影在线观看| 久久久综合视频| 九色综合狠狠综合久久| 欧美高清视频一二三区| 亚洲精品乱码久久久久久久久| 亚洲香蕉伊在人在线观| 97久久超碰精品国产| 欧美激情一区在线| 高清国产一区二区| 久久久www成人免费无遮挡大片| 久久久久久久久久看片| 日韩精品色哟哟| 欧美日韩一级二级| 亚洲小说欧美激情另类| 在线免费观看视频一区| 亚洲人成电影网站色mp4| av中文一区二区三区| 中文字幕在线不卡一区 | 欧美三区在线观看| 国产精品电影一区二区| 国产精品夜夜爽| 中文字幕第一区第二区| 综合欧美一区二区三区| 99久久er热在这里只有精品66|