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

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

?? nf.c

?? 單片機學習資料主要講述MP3開發 適合初學者進行開發學習
?? C
?? 第 1 頁 / 共 4 頁
字號:
    }
    else
    {
      /* if the block in the buffer is already assign, then invert it with a spare block */
      if (!(nf_buf[nf_gl_buf_idx].w & 0x8000))                 
      {                                                 
        if ((nf_buf_free[gl_buf_free_idx] & 0x7FFF) == nf_lut_block[nf_zone])
        {
          gl_buf_free_idx++;
          if (gl_buf_free_idx >= nf_spare_block)
          {
            gl_buf_free_idx = 0;
          }      
        }        
        /* invert the block and assign the next block to be deleted */
        nf_block_to_be_deleted       = nf_buf[nf_gl_buf_idx].w;
        nf_buf[nf_gl_buf_idx].w      = nf_buf_free[gl_buf_free_idx] & 0x7FFF;
        nf_buf_free[gl_buf_free_idx] = nf_block_to_be_deleted | 0x8000;
        /* block have to be deleted */
        nf_block_used = TRUE;
        /* increase the spare buffer index */
        if ((gl_buf_free_idx++) >= nf_spare_block)
        {
          gl_buf_free_idx = 0;
        }

      }
      else /* The block is not assigned. Nothing to do */
      {
        nf_buf[nf_gl_buf_idx].w &= 0x7FFF;
        nf_block_used = FALSE;
      }
      /* update the max index buffer */
      if (nf_gl_buf_idx > nf_gl_buf_idx_max)
        nf_gl_buf_idx_max = nf_gl_buf_idx;

      /* Update current physical sector */
      nf_current_physical_sector_addr = (Uint32)(nf_buf[nf_gl_buf_idx].w) << 5;
      /* increase the logical block */
      nf_logical_block++;
      /* calculate the redundant block address */
      nf_calc_logical_block();
    }
  }

  Nf_CS_ON();
  if (!gl_cpt_page)
  {
    Nf_wait_busy();
    Nf_write_open_A_area(nf_current_physical_sector_addr, 0x00);
  }
  Nf_wr_byte(b);
  /* Increase internal page counter */
  gl_cpt_page++;                          
  if (((Byte*)&gl_cpt_page)[0] == NF_DATA_SIZE_H) /* check if end of data page */
  {
    nf_update_spare_data();
    Nf_send_command(NF_PAGE_PROGRAM_CMD);
    ((Byte*)&gl_cpt_page)[0] = 0;
    gl_ptr_mem++;
    if (!(((Byte*)&gl_ptr_mem)[3] & NF_BLOCK_MASK)) 
    {
      nf_busy = TRUE;
    }
    else
    {
      ((Byte*)&nf_current_physical_sector_addr)[3]++;
    }
  }

  return OK;
}


/*F**************************************************************************
* NAME: nf_write_sector
*----------------------------------------------------------------------------
* PARAMS:
*   global: gl_ptr_mem
*
* return:
*   write status: OK: write done
*                 KO: write not done
*----------------------------------------------------------------------------
* PURPOSE: 
*   This function is an optimized function that writes nb-sector * 512 bytes
*   from USB controller to NF card
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*   nb_sector always >= 1, can not be zero
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit nf_write_sector (Uint16 nb_sector)
{
Byte j;

  do
  {   
    if (nf_busy)
    {
      nf_busy = FALSE;
      /* If previous block have to de deleted */
      if (nf_block_used)       
      {
        nf_block_erase((Uint32)(nf_block_to_be_deleted) << 5);
      }
      /* increase the main buffer index */
      nf_gl_buf_idx++;
      /* if zone change */
      if (nf_gl_buf_idx >= nf_block_max)
      {
        nf_write_open(gl_ptr_mem);
      }
      else
      {
        /* if the block in the buffer is already assign, then invert it with a spare block */
        if (!(nf_buf[nf_gl_buf_idx].w & 0x8000))                 
        {                                                 
          if ((nf_buf_free[gl_buf_free_idx] & 0x7FFF) == nf_lut_block[nf_zone])
          {
            gl_buf_free_idx++;
            if (gl_buf_free_idx >= nf_spare_block)
            {
              gl_buf_free_idx = 0;
            }      
          }        
          /* invert the block and assign the next block to be deleted */
          nf_block_to_be_deleted       = nf_buf[nf_gl_buf_idx].w;
          nf_buf[nf_gl_buf_idx].w      = nf_buf_free[gl_buf_free_idx] & 0x7FFF;
          nf_buf_free[gl_buf_free_idx] = nf_block_to_be_deleted | 0x8000;
          /* block have to be deleted */
          nf_block_used = TRUE;
          /* increase the spare buffer index */
          if ((gl_buf_free_idx++) >= nf_spare_block)
          {
            gl_buf_free_idx = 0;
          }
        }
        else /* The block is not assigned. Nothing to do */
        {
          nf_buf[nf_gl_buf_idx].w &= 0x7FFF;
          nf_block_used = FALSE;
        }
        /* update the max index buffer */
        if (nf_gl_buf_idx > nf_gl_buf_idx_max)
          nf_gl_buf_idx_max = nf_gl_buf_idx;
  
        /* Update current physical sector */
        nf_current_physical_sector_addr = (Uint32)(nf_buf[nf_gl_buf_idx].w) << 5;
        /* increase the logical block */
        nf_logical_block++;
        /* calculate the redundant block address */
        nf_calc_logical_block();
      }
    }

    Nf_CS_ON();
  
    Nf_wait_busy();
    Nf_write_open_A_area(nf_current_physical_sector_addr, 0x00);

    for (j = 8; j != 0; j--)
    {
      while (!Usb_rx_complete());             /* wait end of reception */
      Nf_wr_byte(Usb_read_byte());            /* write 64 bytes to card */
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Nf_wr_byte(Usb_read_byte());
      Usb_clear_RXOUT_PP();                      /* usb read acknowledgement */
    }
  
    /* Update spare data */
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(((Byte*)&nf_redundant_logical_block_value)[0]);
    Nf_wr_byte(((Byte*)&nf_redundant_logical_block_value)[1]);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(0xFF);
    Nf_wr_byte(((Byte*)&nf_redundant_logical_block_value)[0]);
    Nf_wr_byte(((Byte*)&nf_redundant_logical_block_value)[1]);
  
    Nf_send_command (NF_PAGE_PROGRAM_CMD);
    /* increase gl_ptr_mem : next page */
    gl_ptr_mem++;              
    /* set flag busy */
    if (!(((Byte*)&gl_ptr_mem)[3] & NF_BLOCK_MASK)) 
    {
      nf_busy = TRUE;
    }
    else
    {
      ((Byte*)&nf_current_physical_sector_addr)[3]++;
    }
    nb_sector--;
  }
  while (nb_sector != 0);
  return OK;
}


/*F**************************************************************************
* NAME: nf_format
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*   Address of the format parameter structure in code
*----------------------------------------------------------------------------
* PURPOSE: 
*   This function is called by the fat_format function and returns a pointer
*   to a table containing the format parameters after erasing the NF.
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
s_format * nf_format (void)
{

#define CYL_16  (Uint16)((Uint16)(500) - (MEM_RESERVED_SIZE / (4 * 16)))
#define CYL_32  (Uint16)((Uint16)(500) - (MEM_RESERVED_SIZE / (8 * 16)))
#define CYL_64  (Uint16)((Uint16)(500) - (MEM_RESERVED_SIZE / (8 * 32)))
#define CYL_128 (Uint16)((Uint16)(500) - (MEM_RESERVED_SIZE / (16 * 32)))

code  s_format  nf_tab_format[]=
  {
   /* nb_cylinder, nb_head,  nb_sector, nb_hidden, nb_sector_per_cluster */
    { CYL_16, (Byte)4,  (Byte)16,  (Byte)57,  (Byte)32 }, /* 16MB */
    { CYL_32, (Byte)8,  (Byte)16,  (Byte)51,  (Byte)32 }, /* 32MB */
    { CYL_64, (Byte)8,  (Byte)32,  (Byte)39,  (Byte)32 }, /* 64MB */
    { CYL_128, (Byte)16, (Byte)32,  (Byte)63,  (Byte)32 }, /* 128MB */
  };

code  s_format  nf_tab_format_reserved[]=
  {
   /* nb_cylinder, nb_head,  nb_sector, nb_hidden, nb_sector_per_cluster */
    { (Uint16)500, (Byte)4,  (Byte)16,  (Byte)57,  (Byte)32 }, /* 16MB */
    { (Uint16)500, (Byte)8,  (Byte)16,  (Byte)51,  (Byte)32 }, /* 32MB */
    { (Uint16)500, (Byte)8,  (Byte)32,  (Byte)39,  (Byte)32 }, /* 64MB */
    { (Uint16)500, (Byte)16, (Byte)32,  (Byte)63,  (Byte)32 }, /* 128MB */
  };

  /* Erase all block */
  nf_erase_all_block();

  /* -- NF Type Selection -- */
  if (reserved_disk_space == FALSE)
  {
    if (nf_reserved_space == TRUE)
    {
      nf_mem_size -= MEM_RESERVED_SIZE;
      nf_reserved_space = FALSE;
    }
    return &nf_tab_format[NF_TYPE];
  }
  else
  {
    if (nf_reserved_space == FALSE)
    {
      nf_reserved_space = TRUE;
      nf_mem_size += MEM_RESERVED_SIZE;
    }
    return &nf_tab_format_reserved[NF_TYPE];
  }
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产成人99久久亚洲综合精品| 青青草国产成人99久久| 亚洲麻豆国产自偷在线| 亚洲在线成人精品| 久久精品国产精品青草| 成人高清av在线| 在线观看www91| 7777精品伊人久久久大香线蕉经典版下载 | 国产欧美精品一区二区色综合| 一区二区中文视频| 久久精品99国产精品| 色综合久久综合| 久久久www成人免费无遮挡大片 | 成人精品视频一区二区三区 | 欧美日韩精品二区第二页| 26uuu成人网一区二区三区| 亚洲精品va在线观看| 久久99国产精品麻豆| 一本到不卡精品视频在线观看| 日韩写真欧美这视频| 亚洲精品成人精品456| 精品一二三四区| 欧美日韩午夜在线| 亚洲天堂久久久久久久| 国产又粗又猛又爽又黄91精品| 欧美高清视频不卡网| **性色生活片久久毛片| 国产iv一区二区三区| 日韩一二三四区| 偷窥少妇高潮呻吟av久久免费| av影院午夜一区| 久久精品一区四区| 精品一区二区三区av| 91精品国产综合久久福利| 亚洲综合久久久| 国产一区二区三区国产| 日韩色在线观看| 日本亚洲三级在线| 欧美日韩一区二区电影| 综合久久给合久久狠狠狠97色| 高清不卡在线观看av| 欧美一区二区在线免费观看| 久久久www免费人成精品| 天堂在线一区二区| 欧美日韩国产经典色站一区二区三区 | 国产欧美日韩不卡| 国产精品99久久久久久久女警| 制服丝袜国产精品| 日韩黄色免费电影| 欧美日韩电影在线播放| 亚洲综合免费观看高清完整版在线| www..com久久爱| 日韩毛片视频在线看| 91在线观看免费视频| 一区二区成人在线| 色乱码一区二区三区88| 一区二区三区在线视频播放| 色88888久久久久久影院野外 | 色94色欧美sute亚洲线路一ni| 亚洲区小说区图片区qvod| 色视频欧美一区二区三区| 亚洲综合视频网| 欧美另类变人与禽xxxxx| 美国三级日本三级久久99| 久久女同精品一区二区| 福利电影一区二区三区| 中文字幕av资源一区| 成人动漫一区二区三区| 玉足女爽爽91| 日韩欧美成人一区| 成人性生交大片免费看中文网站| 国产精品久久久久久久第一福利| 色综合一个色综合亚洲| 亚洲午夜精品网| 精品伦理精品一区| 99精品在线免费| 亚洲一区二区黄色| 久久―日本道色综合久久| 波多野结衣中文字幕一区| 亚洲一区二区视频在线| 精品久久久久久久久久久久久久久 | 亚洲一区二区综合| 欧美成人性福生活免费看| 丰满亚洲少妇av| 亚洲一区精品在线| 国产午夜精品久久久久久久 | 欧美国产日本韩| 欧洲精品在线观看| 国内久久婷婷综合| 亚洲日本乱码在线观看| 日韩午夜电影av| 成人动漫一区二区| 亚洲成人免费视| 欧美大尺度电影在线| 91亚洲精品一区二区乱码| 久久99热国产| 图片区小说区国产精品视频| 国产精品污www在线观看| 9191久久久久久久久久久| 国产不卡免费视频| 免费观看成人鲁鲁鲁鲁鲁视频| 最新中文字幕一区二区三区| 91麻豆精品91久久久久同性| av电影一区二区| 激情都市一区二区| 五月天中文字幕一区二区| 久久久久久**毛片大全| 欧美日本在线观看| 91黄色免费版| 成人高清视频在线观看| 国产一区二区毛片| 日韩国产高清影视| 亚洲国产裸拍裸体视频在线观看乱了| 在线电影欧美成精品| 色婷婷久久久综合中文字幕| 国产91露脸合集magnet| 国产一区视频在线看| 蜜乳av一区二区| 日韩精彩视频在线观看| 亚洲综合小说图片| 亚洲日本va午夜在线影院| 日韩视频免费观看高清在线视频| 国产成人av一区| 国产一区二三区好的| 麻豆精品久久精品色综合| 人人狠狠综合久久亚洲| 日日骚欧美日韩| 午夜精品久久久久| 欧美a级一区二区| 免费在线看一区| 蜜桃视频免费观看一区| 亚洲精品成人悠悠色影视| 亚洲图片另类小说| 伊人色综合久久天天人手人婷| 国产免费成人在线视频| 精品国产一区二区三区忘忧草 | 国产欧美精品一区| 国产欧美一区二区三区沐欲| 久久久久久毛片| 国产亚洲va综合人人澡精品| www日韩大片| 亚洲精品福利视频网站| 蜜臀久久久99精品久久久久久| 国产精品一区二区免费不卡| 一本一道综合狠狠老| 日韩精品影音先锋| 亚洲三级视频在线观看| 美女视频黄频大全不卡视频在线播放| 国产精品亚洲午夜一区二区三区| 91在线视频观看| 日韩一级欧美一级| 亚洲免费在线播放| 精品一区免费av| 欧美视频第二页| 欧美国产日韩a欧美在线观看| 亚洲福利视频导航| 成人激情免费视频| 日韩免费看的电影| 亚洲精品成人精品456| 精品一区二区三区香蕉蜜桃| 色丁香久综合在线久综合在线观看| 日韩免费电影一区| 亚洲男人都懂的| 国产伦精品一区二区三区在线观看 | 成人伦理片在线| 欧美高清dvd| 亚洲色图在线看| 国产美女精品一区二区三区| 欧美图片一区二区三区| 国产欧美日韩久久| 狠狠色丁香婷综合久久| 欧美美女直播网站| 国产精品第一页第二页第三页| 青青青爽久久午夜综合久久午夜| 91免费国产在线| 国产精品人人做人人爽人人添| 久久电影网站中文字幕| 欧美在线一区二区三区| 中文字幕日韩av资源站| 国产精品一二三| 精品播放一区二区| 午夜国产精品影院在线观看| 91成人网在线| 中文字幕在线一区免费| 国产精品一区一区三区| 精品毛片乱码1区2区3区| 日韩精品国产精品| 日韩一区二区三区高清免费看看| 一区二区三区欧美视频| 在线观看视频一区二区| 亚洲视频在线一区二区| 97久久精品人人做人人爽| 国产精品伦一区二区三级视频| 国产精品系列在线观看| 国产农村妇女精品| 成人av在线播放网站| 国产精品久久久久永久免费观看 | 日本一区二区三区四区在线视频| 激情综合一区二区三区| 日韩精品一区二区三区视频|