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

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

?? nf.c

?? 單片機學習資料主要講述MP3開發 適合初學者進行開發學習
?? C
?? 第 1 頁 / 共 5 頁
字號:
bit nf_write_byte (Byte b)
{
  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) << NF_SHIFT_SECTOR_BLOCK);
    }
    /* 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 << 2);
    }
    else
    {
      /* if the block in the buffer is already assign, then invert it with a spare block */
      nf_invert_block();
      nf_logical_block++;         /* increase the logical block */
      nf_calc_logical_block();    /* calculate the redundant block address */
    }
  }

  if (nf_wr_open)
  {
    Nf_CS_ON();
    Nf_wait_busy();
    Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);
    Nf_send_address ( ((Byte*)&gl_cpt_page)[1]);
    Nf_send_address ( ((Byte*)&gl_cpt_page)[0]);
    Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[3]);    /* row address Byte 0 */
    Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[2]);    /* row address Byte 1 */
    if (NF_5_CYCLE_ADDRESS_BIT)                                         /* nf > 128Mbytes ?   */
      Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[1] ); /* row address Byte 2 */
    nf_wr_open = FALSE;
    Nf_CS_OFF();
  }

  Nf_wr_byte(b);
  gl_cpt_page++;

  if ( ((Byte*)&gl_cpt_page)[0] == 0x08)        /* end of sector */
  {
    nf_update_spare_data();
    Nf_send_command(NF_PAGE_PROGRAM_CMD);       /* valid the page programmation */  
    nf_wr_open = TRUE;                          /* next time send write open command */
    gl_ptr_mem++;
    gl_cpt_page = 0;      

    if (!(((Byte*)&gl_ptr_mem)[3] & 0x3F))      /* If there is a block change */
    {
      nf_busy = TRUE;                           /* then set busy flag */
    }
    else
    {
      nf_current_physical_sector_addr++;        /* else write next sector */
    }
  }
  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;
Uint16 i;
  for (i = nb_sector; i != 0; i--)
  {
    if (nf_busy)                              /* if there is a block change */
    {
      nf_busy = FALSE;

      if (nf_block_used)                      /* if previous block have to be deleted */
      {
        nf_block_erase((Uint32)(nf_block_to_be_deleted) << NF_SHIFT_SECTOR_BLOCK);
      }

      nf_gl_buf_idx++;                        /* increase the main buffer index */
      if (nf_gl_buf_idx >= nf_block_max)      /* if zone change or block is not in the cache */
      {
        nf_write_advanced = FALSE;            /* desactive optimized process to force cache reconstruction */
        nf_write_open(gl_ptr_mem << 2);
      }
      else
      {
        nf_invert_block();      /* invert block if necessary and update physical sector addr  */
        nf_logical_block++;     /* increase the logical block                                 */
        nf_calc_logical_block();/* calculate the redundant block address                      */
      }
    }
  
  
    if (nf_wr_open) 
    {
      Nf_CS_ON();
      nf_wr_open = FALSE;
      Nf_wait_busy();
      Nf_send_command (NF_SEQUENTIAL_DATA_INPUT_CMD);
      Nf_send_address ( ((Byte*)&gl_cpt_page)[1]);
      Nf_send_address ( ((Byte*)&gl_cpt_page)[0]);
      Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[3]);    /* Row address Byte 0         */
      Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[2]);    /* Row address Byte 1         */
      if (NF_5_CYCLE_ADDRESS_BIT)                                         /* Size of card >= 128Mbytes ?*/
        Nf_send_address ( ((Byte*)&nf_current_physical_sector_addr)[1] ); /* Row address Byte 2         */
      Nf_CS_OFF();
    }

    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 */
    }

    ((Byte*)&gl_cpt_page)[0] += 2;
    if ( ((Byte*)&gl_cpt_page)[0] == 0x08)            /* end of sector */
    {
      nf_update_spare_data();                         /* before, update spare data */
      gl_ptr_mem++;                                   /* increase gl_ptr_mem : next page */
      if (!(((Byte*)&gl_ptr_mem)[3] & 0x3F))          /* if we change block */
      {
        Nf_send_command (NF_PAGE_PROGRAM_CMD);        /* launch programming */
        nf_busy = TRUE;                               /* then set busy flag -> find a new free block */
      }
      else
      {
        ((Byte*)&nf_current_physical_sector_addr)[3]++;/* else compute next sector */
        if (i == 1)                                    /* if last sector */
        {
          Nf_send_command (NF_PAGE_PROGRAM_CMD);       /* then send program command */
        }
        else
        {
          Nf_send_command (NF_CACHE_PROGRAM_CMD);     /* else send cache commmand */
        }
      }
      nf_wr_open = TRUE;                              /* next time, send an open program command */
      gl_cpt_page = 0;                                /* reset the global page counter */
    }
  }

  if (!nf_busy)
  {
    nf_write_advanced = TRUE;       /* active write optimization */
  }

  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_128  (Uint16)((Uint16)(500) -  (MEM_RESERVED_SIZE / (16 * 32)))
#define CYL_256  (Uint16)((Uint16)(500) -  (MEM_RESERVED_SIZE / (16 * 64)))
#define CYL_512  (Uint16)((Uint16)(1000) - (MEM_RESERVED_SIZE / (16 * 64)))
#define CYL_1024 (Uint16)((Uint16)(2000) - (MEM_RESERVED_SIZE / (16 * 64)))
#define CYL_2048 (Uint16)((Uint16)(4000) - (MEM_RESERVED_SIZE / (16 * 64)))

code  s_format  nf_tab_format[]=
  {
   /* nb_cylinder, nb_head,   nb_sector, nb_hidden,   nb_sector_per_cluster  */
    { CYL_128,     (Byte)16,  (Byte)32,  (Byte)107,   (Byte)4 },   /* 128MB  */
    { CYL_256,     (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },   /* 256MB  */
    { CYL_512,     (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },   /* 512MB  */
    { CYL_1024,    (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },   /* 1024MB */
    { CYL_2048,    (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },   /* 2048MB */

  };

code  s_format  nf_tab_format_reserved[]=
  {
   /* nb_cylinder,  nb_head,   nb_sector, nb_hidden,   nb_sector_per_cluster */
    { (Uint16)500,  (Byte)16,  (Byte)32,  (Byte)107,   (Byte)4 },  /* 128MB  */
    { (Uint16)500,  (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },  /* 256MB  */
    { (Uint16)1000, (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },  /* 512MB  */
    { (Uint16)2000, (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },  /* 1024MB */
    { (Uint16)4000, (Byte)16,  (Byte)64,  (Byte)107,   (Byte)8 },  /* 2048MB */

  };
  /* 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一区二区三区免费野_久草精品视频
国产又黄又大久久| 色综合久久中文综合久久牛| 在线精品视频小说1| 久久亚洲综合色| 亚洲电影一级片| voyeur盗摄精品| 精品久久国产老人久久综合| 亚洲一区二区三区四区在线 | 91免费版pro下载短视频| 欧美不卡一区二区| 婷婷一区二区三区| 欧美在线三级电影| 亚洲欧洲另类国产综合| 国产成人精品网址| 久久精品综合网| 国内精品视频666| 精品国一区二区三区| 狠狠色综合色综合网络| 欧美精品久久99| 亚洲国产美国国产综合一区二区| 成人精品视频网站| 中文字幕av一区二区三区高| 国产专区欧美精品| 久久久久久影视| 久久99精品久久久久婷婷| 欧美日本不卡视频| 日韩在线观看一区二区| 欧美日韩国产美| 五月激情六月综合| 欧美丰满高潮xxxx喷水动漫| 午夜影院久久久| 欧美一卡二卡三卡| 久草热8精品视频在线观看| 精品久久免费看| 国产精品系列在线播放| 亚洲精品在线观看视频| 国产一区二区三区四| 国产精品伦理一区二区| 一本高清dvd不卡在线观看| 亚洲精品视频在线观看免费| 在线观看av一区二区| 亚洲va国产天堂va久久en| 欧美男男青年gay1069videost | 免费成人在线观看视频| 欧美tickle裸体挠脚心vk| 国产一区激情在线| 国产精品毛片大码女人| 91麻豆国产福利在线观看| 亚洲高清免费在线| 日韩欧美精品在线| 国产精品综合久久| 亚洲欧美日韩在线不卡| 欧美久久久久久久久| 国产一区二区免费在线| 中文字幕一区三区| 欧美色爱综合网| 精品亚洲国产成人av制服丝袜| 国产农村妇女毛片精品久久麻豆 | 久88久久88久久久| 国产精品美女久久久久久久| 91美女福利视频| 美女爽到高潮91| 国产精品久久久久国产精品日日| 欧美日韩午夜在线视频| 裸体一区二区三区| 综合婷婷亚洲小说| 日韩三级免费观看| 91一区二区在线| 麻豆国产精品777777在线| 亚洲欧洲韩国日本视频| 91精品一区二区三区久久久久久| 蜜臀久久99精品久久久画质超高清 | 国产曰批免费观看久久久| 日韩女优av电影在线观看| 七七婷婷婷婷精品国产| 国产精品久久久久三级| 91精品国产一区二区三区| 成人在线视频一区二区| 日本麻豆一区二区三区视频| 亚洲欧洲一区二区在线播放| 欧美不卡在线视频| 欧美日本一道本| 日韩激情中文字幕| 亚洲日本乱码在线观看| 欧美刺激午夜性久久久久久久| 色偷偷久久人人79超碰人人澡| 日本亚洲天堂网| 亚洲欧美激情小说另类| 久久久噜噜噜久久人人看| 91福利视频网站| 国产91精品一区二区| 亚洲欧美一区二区三区久本道91| 久久久久国产一区二区三区四区| 欧美丝袜自拍制服另类| 高潮精品一区videoshd| 国产精品中文字幕欧美| 激情综合色丁香一区二区| 亚洲成人激情社区| 亚洲另类一区二区| 中文字幕乱码日本亚洲一区二区| 欧美一区二区观看视频| 99r精品视频| 99re这里都是精品| 久久av资源网| 国产一区二区主播在线| 国产电影一区在线| 99re亚洲国产精品| 欧美一级一区二区| 久久综合国产精品| 国产欧美日韩视频一区二区| 国产精品成人一区二区艾草 | 久久久精品欧美丰满| 国产日韩欧美麻豆| 一区二区三区四区不卡视频 | 亚洲综合另类小说| 亚洲成人自拍网| 免费在线观看一区二区三区| 国产一区二区视频在线播放| 国产成人精品一区二区三区四区 | 亚洲美女区一区| 午夜精品久久久久久久99水蜜桃| 国产一区欧美日韩| 91色porny蝌蚪| 精品久久久久久综合日本欧美| 国产精品视频一二三| 伊人一区二区三区| 全国精品久久少妇| 国内精品免费**视频| 欧美日韩国产另类一区| 日韩欧美三级在线| 国产精品水嫩水嫩| 日韩黄色免费电影| 国产成人综合自拍| 欧美综合天天夜夜久久| 日韩欧美成人一区二区| 中文字幕制服丝袜一区二区三区| 亚洲伦理在线免费看| 日本午夜精品一区二区三区电影| 成人一区在线观看| 欧美美女一区二区三区| 国产午夜精品福利| 亚洲一区二区三区四区五区黄| 国产在线一区观看| 欧洲视频一区二区| 久久精品日韩一区二区三区| 亚洲一级二级在线| 国产精品自在欧美一区| 91一区二区三区在线观看| 国产欧美一区二区在线观看| 天天影视色香欲综合网老头| 成人免费视频视频| 日韩欧美精品在线| 亚洲小少妇裸体bbw| 久久精品久久99精品久久| 欧美日韩黄视频| 国产精品色一区二区三区| 麻豆国产91在线播放| 欧美在线啊v一区| 中文字幕制服丝袜一区二区三区 | 国产精品久久久久久福利一牛影视| 国产剧情av麻豆香蕉精品| 欧美日韩精品一区二区在线播放| 国产欧美精品国产国产专区| 美国十次了思思久久精品导航| 色老头久久综合| 中文字幕在线不卡国产视频| 粉嫩av一区二区三区在线播放| 欧美一区二区三区四区久久| 伊人婷婷欧美激情| 99久久免费视频.com| 久久久亚洲精品石原莉奈| 日韩黄色免费电影| 在线电影欧美成精品| 亚洲蜜臀av乱码久久精品| 成人免费黄色在线| 国产日产欧美一区| 成人免费观看男女羞羞视频| 国产亚洲综合在线| 日本不卡中文字幕| 欧美成人女星排名| 蜜臀av一区二区在线免费观看 | 日韩一区二区三区视频| 石原莉奈一区二区三区在线观看 | 久久久久久夜精品精品免费| 日本怡春院一区二区| 久久综合九色综合欧美98 | 欧美日韩亚洲综合一区 | 国产精品高潮呻吟久久| 成人亚洲一区二区一| 国产精品视频yy9299一区| 国产69精品一区二区亚洲孕妇| 欧美日韩国产片| 日韩成人精品视频| 欧美影院一区二区| 婷婷综合另类小说色区| 欧美一区二区免费视频| 久久电影国产免费久久电影| 国产午夜精品福利| av不卡在线播放| 亚洲综合色视频|