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

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? mmc.c

?? under Gcc compiler
?? C
?? 第 1 頁 / 共 2 頁
字號(hào):
   //Command 24 is a writing blocks command for MMC/SD-Card.
   unsigned char CMD[] = {0x58,0x00,0x00,0x00,0x00,0xFF}; 
   
   asm("cli"); //clear all interrupt.
   addr = addr << 9; //addr = addr * 512
	
   CMD[1] = ((addr & 0xFF000000) >>24 );
   CMD[2] = ((addr & 0x00FF0000) >>16 );
   CMD[3] = ((addr & 0x0000FF00) >>8 );

   //Send Command CMD24 to MMC/SD-Card (Write 1 Block/512 Bytes)
   retry=0;
   do
   {  //Retry 100 times to send command.
      tmp=Write_Command_MMC(CMD);
      retry++;
      if(retry==100) 
      { 
        return(tmp); //send commamd Error!
      }
   }
   while(tmp!=0); 
   
   //Before writing,send 100 clock to MMC/SD-Card
   for (i=0;i<100;i++)
   {
      Read_Byte_MMC();
   }
	
   //Send Start Byte to MMC/SD-Card
   Write_Byte_MMC(0xFE);	
	
   //Now send real data Bolck (512Bytes) to MMC/SD-Card
   for (i=0;i<512;i++)
   {
      Write_Byte_MMC(*Buffer++); //send 512 bytes to Card
   }

   //CRC-Byte 
   Write_Byte_MMC(0xFF); //Dummy CRC
   Write_Byte_MMC(0xFF); //CRC Code
   
    
   tmp=Read_Byte_MMC();   // read response
   if((tmp & 0x1F)!=0x05) // data block accepted ?
   {
     MMC_Disable();
     return(WRITE_BLOCK_ERROR); //Error!
   }
   //Wait till MMC/SD-Card is not busy
   while (Read_Byte_MMC()!=0xff){};
	
   //set MMC_Chip_Select to high (MMC/SD-Card Invalid)
   MMC_Disable();
   return(0);
} 

//****************************************************************************
//Routine for reading data Registers of MMC/SD-Card
//Return 0 if no Error.
unsigned char MMC_Read_Block(unsigned char *CMD,unsigned char *Buffer,unsigned int Bytes)
//****************************************************************************
{  
   unsigned int i; unsigned retry,temp;
    
   //Send Command CMD to MMC/SD-Card
   retry=0;
   do
   {  //Retry 100 times to send command.
      temp=Write_Command_MMC(CMD);
      retry++;
      if(retry==100) 
      {
        return(READ_BLOCK_ERROR); //block write Error!
      }
   }
   while(temp!=0); 
   			
   //Read Start Byte form MMC/SD-Card (FEh/Start Byte)
   while (Read_Byte_MMC() != 0xfe){};
	
   //Write blocks(normal 512Bytes) to MMC/SD-Card
   for (i=0;i<Bytes;i++)
   {
      *Buffer++ = Read_Byte_MMC();
   }
   
   //CRC-Byte
   Read_Byte_MMC();//CRC - Byte 
   Read_Byte_MMC();//CRC - Byte
	
   //set MMC_Chip_Select to high (MMC/SD-Card invalid)
   MMC_Disable();
   return(0);
}

//****************************************************************************
//Routine for reading Blocks(512Byte) from MMC/SD-Card
//Return 0 if no Error.
unsigned char MMC_read_sector(unsigned long addr,unsigned char *Buffer)
//****************************************************************************
{	
   //Command 16 is reading Blocks from MMC/SD-Card
   unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF}; 
   unsigned char temp;
   
   asm("cli"); //clear all interrupt.
   //Address conversation(logic block address-->byte address)  
   addr = addr << 9; //addr = addr * 512

   CMD[1] = ((addr & 0xFF000000) >>24 );
   CMD[2] = ((addr & 0x00FF0000) >>16 );
   CMD[3] = ((addr & 0x0000FF00) >>8 );

   temp=MMC_Read_Block(CMD,Buffer,512);
   
   return(temp);
}

//***************************************************************************
//Routine for reading CID Registers from MMC/SD-Card (16Bytes) 
//Return 0 if no Error.
unsigned char Read_CID_MMC(unsigned char *Buffer)
//***************************************************************************
{
   //Command for reading CID Registers
   unsigned char CMD[] = {0x4A,0x00,0x00,0x00,0x00,0xFF}; 
   unsigned char temp;
   temp=MMC_Read_Block(CMD,Buffer,16); //read 16 bytes

   return(temp);
}

//***************************************************************************
//Routine for reading CSD Registers from MMC/SD-Card (16Bytes)
//Return 0 if no Error.
unsigned char Read_CSD_MMC(unsigned char *Buffer)
//***************************************************************************
{	
   //Command for reading CSD Registers
   unsigned char CMD[] = {0x49,0x00,0x00,0x00,0x00,0xFF};
   unsigned char temp;
   temp=MMC_Read_Block(CMD,Buffer,16); //read 16 bytes

   return(temp);
}

//***************************************************************************
//Return: [0]-success or something error!
unsigned char MMC_Start_Read_Sector(unsigned long sector)
//***************************************************************************
{  
   unsigned char retry;
   //Command 16 is reading Blocks from MMC/SD-Card
   unsigned char CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF}; 
   unsigned char temp;
   
   asm("cli"); //clear all interrupt.
   //Address conversation(logic block address-->byte address)  
   sector = sector << 9; //sector = sector * 512

   CMD[1] = ((sector & 0xFF000000) >>24 );
   CMD[2] = ((sector & 0x00FF0000) >>16 );
   CMD[3] = ((sector & 0x0000FF00) >>8 );
   //Send Command CMD to MMC/SD-Card
   retry=0;
   do
   {  //Retry 100 times to send command.
      temp=Write_Command_MMC(CMD);
      retry++;
      if(retry==100) 
      {
        return(READ_BLOCK_ERROR); //block write Error!
      }
   }
   while(temp!=0); 
   			
   //Read Start Byte form MMC/SD-Card (FEh/Start Byte)
   //Now data is ready,you can read it out.
   while (Read_Byte_MMC() != 0xfe){};
   return 0; //Open a sector successfully!
}

//***************************************************************************
void MMC_get_data(unsigned int Bytes,unsigned char *buffer) 
//***************************************************************************
{
   unsigned int j;
   
   asm("cli"); //clear all interrupt.
   for (j=0;((j<Bytes) && (readPos<512));j++)
   {	
      *buffer++ = Read_Byte_MMC();
      readPos++; //read a byte,increase read position
   }
   if (readPos==512)  
   {  //CRC-Bytes
      Read_Byte_MMC();//CRC - Byte 
      Read_Byte_MMC();//CRC - Byte
      readPos=0;      //reset sector read offset 
      sectorPos++;    //Need to read next sector
      LBA_Opened=0;   //Set to 1 when a sector is opened.
      //set MMC_Chip_Select to high (MMC/SD-Card invalid)
      MMC_Disable();  //MMC disable
   }
}

//***************************************************************************
void MMC_get_data_LBA(unsigned long lba, unsigned int Bytes,unsigned char *buffer)
//***************************************************************************
{ //get data from lba address of MMC/SD-Card
  //If a new sector has to be read then move head
  if (readPos==0) MMC_Start_Read_Sector(lba); 
  MMC_get_data(Bytes,buffer);
}

//***************************************************************************
void MMC_GotoSectorOffset(unsigned long LBA,unsigned int offset)
//***************************************************************************
{  
   //Find the offset in the sector
   unsigned char temp[1];
   MMC_LBA_Close(); //close MMC when read a new sector(readPos=0)
   while (readPos<offset) MMC_get_data_LBA(LBA,1,temp); //go to offset  
}

//***************************************************************************
void MMC_LBA_Close()
//***************************************************************************
{  
   unsigned char temp[1];
   while((readPos!=0x00)|(LBA_Opened==1))
   { //read MMC till readPos==0x00
     MMC_get_data(1, temp); //dummy read,temp is a valid data.
   }  
}

//---------------------------------------------------------------------------- 
#endif //USE_MMC

?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
专区另类欧美日韩| 欧美经典一区二区三区| 午夜久久电影网| 欧美群妇大交群的观看方式| 日本在线播放一区二区三区| 欧美mv和日韩mv国产网站| 蜜桃av噜噜一区| 久久视频一区二区| 成人三级在线视频| 一区二区三区在线视频播放| 欧美中文字幕不卡| 美女在线视频一区| 欧美激情一区在线观看| 色嗨嗨av一区二区三区| 免播放器亚洲一区| 国产精品视频在线看| 欧美日韩免费在线视频| 国产自产高清不卡| 亚洲精品国产无天堂网2021| 欧美精品xxxxbbbb| 韩国欧美一区二区| 亚洲色图.com| 精品福利一二区| 91蝌蚪porny九色| 麻豆传媒一区二区三区| 国产精品久久久久7777按摩| 欧美精品久久久久久久久老牛影院| 国内成+人亚洲+欧美+综合在线 | 成人av网站在线| 亚洲国产综合在线| 久久精品欧美日韩精品| 欧美日韩国产大片| 懂色中文一区二区在线播放| 亚洲成人免费电影| 日本一区二区三区四区在线视频| 欧美日韩极品在线观看一区| 国产中文一区二区三区| 伊人一区二区三区| 久久免费午夜影院| 欧美精品久久99久久在免费线| 粉嫩13p一区二区三区| 日本欧美在线观看| 亚洲精品日日夜夜| 亚洲国产精品黑人久久久| 欧美高清视频www夜色资源网| av不卡免费电影| 精品无人码麻豆乱码1区2区| 亚洲一区二区欧美日韩| 亚洲国产成人在线| 久久精品水蜜桃av综合天堂| 欧美一区二区三区在线看| 在线精品视频一区二区三四| 国产成人精品一区二区三区四区 | 欧美色涩在线第一页| 高清不卡在线观看| 激情亚洲综合在线| 亚洲综合网站在线观看| 国产精品传媒视频| 国产日韩欧美一区二区三区乱码| 欧美福利视频一区| 欧美性大战久久久| 一本大道久久a久久精品综合| 成人免费av网站| 国产精品一区二区在线观看不卡 | 五月综合激情日本mⅴ| 亚洲精品精品亚洲| 1024成人网| 国产精品每日更新在线播放网址| 久久久久青草大香线综合精品| 日韩视频永久免费| 91精品国产欧美一区二区成人| 欧美精品一卡二卡| 337p亚洲精品色噜噜狠狠| 欧美久久高跟鞋激| 91麻豆精品国产91久久久久久久久| 欧美日韩一二三区| 欧美视频日韩视频| 这里只有精品免费| 日韩欧美色综合网站| 日韩欧美专区在线| 欧美电影免费提供在线观看| 精品国精品自拍自在线| www激情久久| 国产精品沙发午睡系列990531| 中文字幕第一区综合| 日韩美女视频一区| 亚洲综合成人在线视频| 同产精品九九九| 另类专区欧美蜜桃臀第一页| 久久99国产精品麻豆| 国产精品一线二线三线| 成人午夜碰碰视频| 成人禁用看黄a在线| 色狠狠色狠狠综合| 欧美一区二区日韩| 国产网站一区二区三区| 日韩一区欧美小说| 日韩高清一区二区| 国产精品911| 在线视频亚洲一区| 欧美成人一区二区三区| 国产精品三级视频| 亚洲成av人片| 国产呦精品一区二区三区网站| 不卡视频一二三四| 欧美三电影在线| 精品福利av导航| 国产精品成人一区二区艾草| 一区二区三区欧美视频| 久久成人免费电影| 色视频欧美一区二区三区| 欧美一区二区三区视频在线观看| 久久精品在这里| 亚洲小说春色综合另类电影| 激情综合色播激情啊| 一本色道综合亚洲| 2021久久国产精品不只是精品| 综合自拍亚洲综合图不卡区| 视频一区国产视频| www.欧美色图| 日韩一区二区三区免费看| 国产人成亚洲第一网站在线播放| 樱桃视频在线观看一区| 狠狠色狠狠色综合系列| 在线观看亚洲精品| 日本一区二区免费在线| 美腿丝袜亚洲色图| 91成人在线观看喷潮| 久久一区二区三区四区| 亚洲国产综合在线| 成人精品国产福利| 精品国产一区二区在线观看| 亚洲高清久久久| 99国产精品视频免费观看| 精品国产一区二区三区av性色 | 这里只有精品电影| 亚洲色欲色欲www| 国内精品伊人久久久久av影院 | 国产99久久久久久免费看农村| 欧美福利视频导航| 一区二区三区在线免费播放| 成人h动漫精品一区二| 精品国精品国产| 日本欧美一区二区| 欧美日韩日本视频| 亚洲综合在线免费观看| 99亚偷拍自图区亚洲| 国产片一区二区三区| 久草中文综合在线| 欧美一区二区人人喊爽| 日产精品久久久久久久性色| 欧美日韩精品福利| 亚洲一级不卡视频| 色婷婷久久一区二区三区麻豆| 中文字幕中文字幕一区| 成人av网站在线| 欧美极品美女视频| 成人一区二区三区中文字幕| 久久久午夜电影| 国产成人亚洲精品青草天美| 精品国产三级电影在线观看| 久久精品免费看| 精品国产乱码久久久久久浪潮| 免费日本视频一区| 欧美成人r级一区二区三区| 卡一卡二国产精品| 精品粉嫩aⅴ一区二区三区四区| 久久99热国产| 亚洲精品在线观看网站| 国产一区二区在线观看免费| 久久嫩草精品久久久精品一| 国产白丝精品91爽爽久久| 欧美激情自拍偷拍| 91免费视频大全| 亚洲一区日韩精品中文字幕| 欧美精品高清视频| 久久99精品久久久久久国产越南 | 国产精品日韩成人| 成人黄色片在线观看| 亚洲欧美综合在线精品| 在线免费亚洲电影| 国产v日产∨综合v精品视频| 国产日韩影视精品| 成人性生交大片免费看中文| 亚洲精品自拍动漫在线| 欧美日本国产视频| 国产在线播放一区三区四| 国产精品视频yy9299一区| 欧美性色黄大片| 经典三级一区二区| 中文字幕一区二区5566日韩| 欧美午夜一区二区三区免费大片| 欧美bbbbb| 国产精品色眯眯| 欧美日韩在线精品一区二区三区激情| 看片的网站亚洲| 亚洲天堂久久久久久久| 7777精品伊人久久久大香线蕉超级流畅 | 蜜桃视频在线观看一区二区| 国产精品素人视频|