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

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

?? smc.c

?? ATMEL 89c51sndc mp3外接硬盤源碼
?? C
?? 第 1 頁 / 共 5 頁
字號:
            if (temp_address >= ((Uint32)(smc_zone + 1) << 15) )
                temp_address = (Uint32)(smc_zone) << 15;
            Smc_read_open_C_area(temp_address, 0x05);
            byte_5 = Smc_rd_byte();                          /* Invalid/Valid block        */
            byte_6 = Smc_rd_byte();                          /* Used/Unused block          */
          }
          while ( ( (byte_6 != 0xFF) && (byte_6 != 0xE8) ) || (byte_5 != 0xFF) );

          free_bloc_pos = temp_address >> 5;
          gl_buffer[i] = (free_bloc_pos >> 8) + 0x80;
          gl_buffer[i + 1] = free_bloc_pos;
        }
      }

      Smc_write_open_B_area(gl_address, 0x00);        /* Write second part of LUT */
      smc_download_buffer();

      /* Write redundant data */
      Smc_wr_byte(0xFF); Smc_wr_byte(0xFF); Smc_wr_byte(0xFF);
      Smc_wr_byte(0xFF); Smc_wr_byte(0xFF);
      Smc_wr_byte(0xFF);
      Smc_wr_byte(0xE8); Smc_wr_byte(0xFF);                     /* Logical block value */
      Smc_wr_byte(0xFF); Smc_wr_byte(0xFF); Smc_wr_byte(0xFF);  /* ECC area 2 */
      Smc_wr_byte(0xE8); Smc_wr_byte(0xFF);                     /* Logical block value */
      Smc_wr_byte(0xFF); Smc_wr_byte(0xFF); Smc_wr_byte(0xFF);  /* ECC area 1 */
       
      Smc_send_command(SMC_PAGE_PROGRAM_CMD);
      start += 0x80;
      end   += 0x80;
      gl_address++;        /* Increase the address of the conversion table */
    }
    while (start < SMC_BLOCK_PER_ZONE);
  }
  Smc_wait_busy();
}


/*F**************************************************************************
* NAME: smc_init
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   SMC initialisation
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit smc_init (void)
{
  P2 = SMC_IDLE_STATE_ADD;
  if ( Smc_card_detect() == KO )
  {
    gl_mem_failure = TRUE;
    Smc_CS_OFF();
    return KO;
  }

  Smc_CS_ON();

  Smc_send_command(SMC_RESET_CMD);
  Smc_wait_busy();
  do
  {
    Smc_send_command(SMC_READ_ID_CMD);   /* Read ID code */
    Smc_send_address(0x00);
    Smc_wait_busy();
  } while (Smc_rd_byte() == 0x00);

  switch (Smc_rd_byte())                  /* Device code */
  {
    case 0x73 :                           /* 16 Mbyte  */
      smc_device_type = SMC_SIZE_16MB;
      smc_zone_max = 1;
      smc_disk_size =  SMC_SECTOR_SIZE_16MB;
      smc_64 = 0;
      break;
    case 0x75 :                           /* 32 Mbyte  */
      smc_device_type = SMC_SIZE_32MB;
      smc_zone_max = 2;
      smc_disk_size =  SMC_SECTOR_SIZE_32MB;
      smc_64 = 0;
      break;
    case 0x76 :                           /* 64 Mbyte  */
      smc_device_type = SMC_SIZE_64MB;
      smc_zone_max = 4;
      smc_disk_size =  SMC_SECTOR_SIZE_64MB;
      smc_64 = 1;                         /* 4 address cycles */
      break;
    case 0x79 :                           /* 128 Mbyte */
      smc_device_type = SMC_SIZE_128MB;
      smc_zone_max = 8;
      smc_disk_size =  SMC_SECTOR_SIZE_128MB;
      smc_64 = 1;                         /* 4 address cycles */
      break;
  }

  read_spare_byte();
  return OK;
}

/*F**************************************************************************
* NAME: smc_read_open
*----------------------------------------------------------------------------
* PARAMS:
*   pos: address of the logic sector to read (size 512 bytes)
*
* return:
*   Update memory for reading
*----------------------------------------------------------------------------
* PURPOSE:
*   Low level memory read update
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
bit smc_read_open (Uint32 pos)
{
Uint16 physical_block;

  Smc_CS_ON();

  if ( Smc_card_detect() == KO )
  {
    gl_mem_failure = TRUE;
    return 0xFF;
  }

  if (smc_lut_modified)
  {
    smc_reassign_block();
    smc_lut_modified = FALSE;
  }

  gl_ptr_mem = pos;
  gl_cpt_page = 0;

  /* Determine the logical block value */
  smc_logical_block = (gl_ptr_mem >> 5);

  /* Determinate zone */
  smc_zone = smc_logical_block / 1000;

  /* Each zone have 1000 data blocks */
  smc_logical_block = smc_logical_block - (1000 * (Uint16)(smc_zone));

  /* Calculate the address where are the physical block value */
  gl_address  = ((Uint32)(smc_lut_block[smc_zone])<<5) + ((Uint32)(smc_logical_block) >> 8);
  gl_address += ((Uint32)(smc_lut_index[smc_zone])<<2);
  /* Open the look-up table */
  Smc_wait_busy();
  if (smc_logical_block & 0x80)
  {
    Smc_send_command(SMC_READ_B_AREA_CMD);            /* 2nd half page */
    Smc_send_address( (smc_logical_block << 1) - 256);
  }
  else
  {
    Smc_send_command(SMC_READ_A_AREA_CMD);            /* first half page */
    Smc_send_address(smc_logical_block << 1);
  }

  Smc_send_address ( ((Byte*)&gl_address)[3] );   /* 2nd address cycle         */
  Smc_send_address ( ((Byte*)&gl_address)[2] );   /* 3rd address cycle         */
  if (smc_64)                                        /* Size of card >= 64Mbytes ?*/
    Smc_send_address ( ((Byte*)&gl_address)[1] ); /* 4th address cycle         */
  
  Smc_wait_busy();

  /* Read the physical block number */
  ((Byte*)&physical_block)[0] = Smc_rd_byte();
  ((Byte*)&physical_block)[1] = Smc_rd_byte();

  /* Calculate the physical sector address */
  smc_current_physical_sector_addr = ((Uint32)(physical_block) << 5) + (gl_ptr_mem & 0x1F); 
  Smc_CS_OFF();
  return OK;
}


/*F**************************************************************************
* NAME: smc_read_close
*----------------------------------------------------------------------------
* PARAMS:
*
* return:
*----------------------------------------------------------------------------
* PURPOSE:
*   Low level memory read close
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
*****************************************************************************/
void smc_read_close (void)
{
  Smc_CS_OFF();
}


/*F*************************************************************************
* NAME: smc_read_byte
*---------------------------------------------------------------------------
* PARAMS:
*
* return:
*   Data read from memory
*---------------------------------------------------------------------------
* PURPOSE:
*   Low level memory read function
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE: 
*----------------------------------------------------------------------------
* REQUIREMENTS: 
****************************************************************************/
Byte smc_read_byte (void)
{
Byte b;

  if ( Smc_card_detect() == KO )
  {
    gl_mem_failure = TRUE;
    Smc_CS_OFF();
    return KO;
  }
  
  Smc_wait_busy();
  if (!gl_cpt_page)
  {
    Smc_CS_ON();
    Smc_read_open_A_area(smc_current_physical_sector_addr, 0x00);
    b = Smc_rd_byte();
    Smc_CS_OFF();
  }
  else
  {
    b = Smc_rd_byte();
  }

  
  gl_cpt_page++;
  
  /* Detection of the end of data page */
  if (gl_cpt_page == SMC_DATA_SIZE)                 
  {
    /* read spare data bytes */
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();
    Smc_rd_byte();

    gl_ptr_mem++;                           /* new page          */

    gl_cpt_page=0;                          /* start at column 0 */

    if ( !(gl_ptr_mem & 0x1F) )   /* New block ? */
    {
      smc_read_open(gl_ptr_mem);
    }
    else
    {
      smc_current_physical_sector_addr++;
    }
  }
  return b;
}


/*F**************************************************************************
* NAME: smc_read_sector
*----------------------------------------------------------------------------
* PARAMS:
*   global: gl_ptr_mem
*
* return: OK read done
*         KO read failure
*----------------------------------------------------------------------------
* PURPOSE: 
*   This function is an optimized function that writes 512 bytes from SMC
*   card to USB controller 
*----------------------------------------------------------------------------
* EXAMPLE:
*----------------------------------------------------------------------------
* NOTE:
*----------------------------------------------------------------------------
* REQUIREMENTS:
*****************************************************************************/
bit smc_read_sector(Uint16 nb_sector)
{
Byte i;
bit   begin_ping_pong;

  begin_ping_pong = TRUE;

  do
  {
    if ( Smc_card_detect() == KO )
    {
      gl_mem_failure = TRUE;
      Smc_CS_OFF();
      return KO;
    }
    Smc_CS_ON();
    Smc_wait_busy();
    Smc_read_open_A_area(smc_current_physical_sector_addr, 0x00);
    for (i = 8; i != 0; i--)
    {
      Usb_write_byte(Smc_rd_byte());            /* read 64 bytes from card */
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());
      Usb_write_byte(Smc_rd_byte());

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
一本色道久久综合精品竹菊| 精品免费国产二区三区| 日韩午夜在线播放| 亚洲三级在线观看| 国产美女视频一区| 日韩一区二区不卡| 亚洲国产乱码最新视频 | 美国欧美日韩国产在线播放| 色香蕉成人二区免费| 国产欧美日韩不卡| 久久超碰97人人做人人爱| 欧美性猛交xxxxxxxx| 国产精品九色蝌蚪自拍| 国产精品一区在线观看乱码| 欧美一区二区性放荡片| 亚洲国产精品一区二区久久 | 精品一区二区三区影院在线午夜 | 成人亚洲精品久久久久软件| 欧美成人乱码一区二区三区| 午夜欧美电影在线观看| 欧美日韩免费电影| 夜夜嗨av一区二区三区四季av| av中文字幕在线不卡| 国产精品毛片久久久久久久| 国产成a人无v码亚洲福利| 国产午夜精品久久| 国产suv精品一区二区三区| 久久只精品国产| 国产成人丝袜美腿| 欧美国产精品专区| 成人白浆超碰人人人人| 国产精品国产三级国产| 色综合久久综合中文综合网| 亚洲精品亚洲人成人网| 欧美性猛交xxxx乱大交退制版| 亚洲综合av网| 欧美喷潮久久久xxxxx| 日本在线不卡一区| 日韩欧美一区电影| 国产在线视视频有精品| 日本一区二区视频在线观看| 懂色av噜噜一区二区三区av| 国产精品毛片无遮挡高清| 99久久国产综合色|国产精品| 亚洲欧美色一区| 欧美日韩视频在线第一区| 蜜臀99久久精品久久久久久软件| 精品国产123| av不卡免费在线观看| 亚洲激情图片小说视频| 亚洲靠逼com| 福利视频网站一区二区三区| 欧美国产在线观看| 日本高清无吗v一区| 日韩精品国产欧美| 美女网站一区二区| 久久综合久久久久88| 99久久国产综合色|国产精品| 亚洲精品日日夜夜| 精品久久久久av影院| 成人中文字幕电影| 亚洲国产aⅴ天堂久久| 亚洲精品一线二线三线| 国产999精品久久久久久绿帽| 曰韩精品一区二区| 精品欧美一区二区久久| 99久久精品免费观看| 日韩在线播放一区二区| 中文字幕精品综合| 欧美一级黄色大片| 一本色道久久综合亚洲精品按摩| 久久草av在线| 一区视频在线播放| 欧美成人三级在线| 欧美怡红院视频| 国产夫妻精品视频| 日韩中文字幕麻豆| 日韩码欧中文字| 精品奇米国产一区二区三区| 色呦呦国产精品| 国产精品 欧美精品| 日韩高清不卡一区二区三区| 亚洲视频网在线直播| 久久九九久久九九| 日韩丝袜情趣美女图片| 在线精品亚洲一区二区不卡| 成人一级片网址| 久久99日本精品| 爽爽淫人综合网网站| 一区二区日韩电影| 亚洲视频1区2区| 亚洲国产精品黑人久久久| 精品国产乱码久久久久久免费| 精品视频色一区| 在线精品视频免费播放| 91同城在线观看| 99久久精品国产麻豆演员表| 国产美女av一区二区三区| 美脚の诱脚舐め脚责91| 97精品久久久久中文字幕 | 亚洲国产wwwccc36天堂| 国产精品久久久爽爽爽麻豆色哟哟| xnxx国产精品| 亚洲精品在线免费播放| 欧美成人vps| 2020国产成人综合网| 欧美成人女星排行榜| 久久综合久久99| 国产喂奶挤奶一区二区三区| 久久综合色综合88| 久久精品一区二区三区四区| 久久五月婷婷丁香社区| 久久久久久久综合日本| 欧美精品一区男女天堂| 久久综合九色综合97_久久久| 精品国产一区二区精华| 久久久久久久久岛国免费| 久久久91精品国产一区二区精品 | 自拍偷拍欧美精品| 欧美一区二区成人| 91精品国产综合久久久久久漫画 | 欧美一区二区三区四区久久 | 久久精品999| 久久精品久久综合| 韩国一区二区在线观看| 国产一区二区免费看| 国产成人午夜精品影院观看视频 | 久久久777精品电影网影网 | 国产亚洲一区二区三区在线观看| 久久久精品天堂| 日韩美女啊v在线免费观看| 夜夜操天天操亚洲| 男男gaygay亚洲| 国产成人精品一区二| 国产成人免费av在线| 91伊人久久大香线蕉| 欧美老肥妇做.爰bbww| 日韩一级大片在线| 国产精品蜜臀av| 亚洲永久精品大片| 久久精品理论片| 91欧美激情一区二区三区成人| 欧美亚一区二区| 亚洲精品在线观看网站| 国产精品久久久久久久久晋中| 亚洲成av人片在线观看无码| 精品一区二区三区久久| 91论坛在线播放| 日韩欧美一二三四区| 亚洲欧美韩国综合色| 久久国产精品99久久人人澡| 91老师片黄在线观看| 日韩欧美精品三级| 一区二区三区不卡视频在线观看| 美女免费视频一区二区| 91久久国产最好的精华液| 久久亚洲二区三区| 水蜜桃久久夜色精品一区的特点| 国产成人精品免费看| 884aa四虎影成人精品一区| 国产精品午夜电影| 麻豆高清免费国产一区| 97久久超碰国产精品电影| 精品日韩一区二区| 亚洲高清免费观看高清完整版在线观看| 国产一区 二区| 91精品一区二区三区久久久久久| 中文字幕一区二区三| 国产又粗又猛又爽又黄91精品| 91福利精品视频| 中文字幕在线不卡一区| 国产在线乱码一区二区三区| 欧美日韩精品欧美日韩精品一| 国产精品视频yy9299一区| 成人午夜激情视频| 精品国产99国产精品| 亚洲午夜私人影院| 色综合天天在线| 欧美激情资源网| 精品亚洲欧美一区| 日韩三级精品电影久久久| 无吗不卡中文字幕| 91福利区一区二区三区| 国产精品国产三级国产三级人妇| 国产在线视频一区二区| 欧美videos大乳护士334| 青草av.久久免费一区| 欧美日本国产一区| 亚洲综合视频网| 在线一区二区三区做爰视频网站| 国产精品久久久久7777按摩| 国产精品一区二区三区四区| 久久久久久久久岛国免费| 黄网站免费久久| 久久奇米777| 国产成人精品免费| 欧美激情一区二区三区在线| 国产成人小视频| 亚洲国产精品99久久久久久久久| 国产精品一线二线三线|