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

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

?? sd.c

?? AVR單片機做的MP3
?? C
字號:
#include<iom16v.h>
#include<main.h>
#include<sd.h>


extern uint8 BUFFER[512];

uint8 SPI_ReadByte(void)
{
   SPDR = 0xFF;
   while (!(SPSR & 0x80)); 
   return SPDR;
}
void SPI_TransferByte(uint8 cmp1)  
{   
 SPDR=cmp1;
 while(!(SPSR&(1<<SPIF)));    
} 

void SD_Port_Init(void)
//****************************************************************************
{
        SD_PORT        |=  (1<<SD_SS);//(1<<SD_SCK)
        SD_DDR         |=  (1<<SD_SCK)|(1<<SD_MOSI)|(1<<SD_SS);
        SD_DDR         &= ~(1<<SD_MISO);
		SD_Disable();
}

//****************************************************************************
//Routine for Init MMC/SD card(SPI-MODE)
uint8 SD_Init(void)
//****************************************************************************
{
        uint8 retry,temp;
        uint8 i;

       uint8 CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
   SD_Port_Init(); //Init SPI port  

   for (i = 0; i < 200; i++) asm("nop"); //Wait MMC/SD ready...
   
   //Active SPI bus at low speed 
   SPCR=0x53; //SPI Master,MSB First 
   SPSR=0x00; //double speed disable,Fsck=Fosc/128 

   for (i = 0; i < 16; i++)
      SPI_TransferByte(0xff); //send 74 clock at least!!! 
	
   //Send Command CMD0 to MMC/SD Card
   SD_Enable();
   retry = 0;
   do
   { //retry 200 times to send CMD0 command 
     temp = Write_Command_SD(CMD);
     if (retry++ == 200) 
       return INIT_CMD0_ERROR;//CMD0 Error!
   }
   while (temp != 1);
   
   //Send Command CMD1 to MMC/SD-Card
   CMD[0] = 0x41; //Command 1
   CMD[5] = 0xFF;
   retry = 0;
   do
   { //retry 100 times to send CMD1 command 
     temp = Write_Command_SD(CMD);
     if (retry++ == 100) 
       return INIT_CMD1_ERROR;//CMD1 Error!
   } 
   while (temp != 0);
   
   //Active High-speed SPI mode(Fsck=Fosc/2) 
   SPCR = 0x50; 
   SPSR = 0x00; 

   SD_Disable();  //set MMC_Chip_Select to high 
   return INIT_OK; //All commands have been taken.
}

//****************************************************************************
//Send a Command to MMC/SD-Card
//Return: the second byte of response register of MMC/SD-Card
uint8 Write_Command_SD(uint8 *cmd)
//****************************************************************************
{
        uint8 tmp,i;
        uint8 retry=0;
        SD_Disable();
		SPI_TransferByte(0xFF);
		SD_Enable();
		for(i=0;i<6;i++)
		{
        SPI_TransferByte(*cmd++);
        }
        SPI_ReadByte();
        
        do{
                tmp = SPI_ReadByte();
        }while((tmp==0xff)&&(retry++ <100));
        return(tmp);
}

uint8 SD_Read_Block(uint8 *CMD,uint8 *Buffer,uint16 Bytes)
//****************************************************************************
{  
   uint16 i;
   uint8 retry, temp;
    
   //Send Command CMD to MMC/SD-Card
   retry=0;
   do
   {  //Retry 100 times to send command.
      temp=Write_Command_SD(CMD);
      if(retry++ == 100) 
        return READ_BLOCK_ERROR; //block write Error!
   }
   while (temp != 0); 
   			
   //Read Start Byte form MMC/SD-Card (FEh/Start Byte)
   while (SPI_ReadByte() != 0xfe);
	
   //Write blocks(normal 512Bytes) to MMC/SD-Card
   for (i = 0; i < Bytes; i++)
   {
      *Buffer++ = SPI_ReadByte();
	 // put_c(*Buffer);
   }
   
   //CRC-Byte
   SPI_ReadByte();//CRC - Byte 
   SPI_ReadByte();//CRC - Byte
	
   //set MMC_Chip_Select to high (MMC/SD-Card invalid)
   SD_Disable();
   return READ_BLOCK_OK;
}

//****************************************************************************
//Routine for writing a Block(512Byte) to MMC/SD-Card
//Return 0 if sector writing is completed.
uint8 SD_read_sector(uint32 addr,uint8 *Buffer)
//****************************************************************************
{
       //Command 16 is reading Blocks from MMC/SD-Card
   uint8 CMD[] = {0x51,0x00,0x00,0x00,0x00,0xFF}; 
   
   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 );

   return SD_Read_Block(CMD, Buffer, 512);
        
}
uint8 SD_write_sector(uint32 addr,uint8 *Buffer)
//****************************************************************************
{  
   uint8 tmp,retry;
   uint16 i;
   //Command 24 is a writing blocks command for MMC/SD-Card.
   uint8 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_SD(CMD);
      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++)
      SPI_ReadByte();
	
   //Send Start Byte to MMC/SD-Card
   SPI_TransferByte(0xFE);	
	
   //Now send real data Bolck (512Bytes) to MMC/SD-Card
   for (i = 0; i < 512; i++)
      SPI_TransferByte(*Buffer++); //send 512 bytes to Card

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

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
视频在线在亚洲| 波多野结衣精品在线| 久久国产精品一区二区| 成人国产精品免费观看视频| 成人18视频日本| 成人高清伦理免费影院在线观看| 欧美系列一区二区| 久久欧美中文字幕| 日韩久久一区二区| 免费成人你懂的| 99re热视频精品| 欧美一级淫片007| 中文字幕亚洲综合久久菠萝蜜| 亚洲午夜精品在线| 久久99精品国产.久久久久久| 不卡欧美aaaaa| 日韩女优视频免费观看| 亚洲天堂久久久久久久| 国产米奇在线777精品观看| 色综合久久综合网97色综合 | 色综合网色综合| 欧美一区二区免费| 18欧美乱大交hd1984| 美女视频黄久久| 在线亚洲一区二区| 国产日本一区二区| 日本va欧美va欧美va精品| 久久99久久99精品免视看婷婷 | 国产精品综合二区| 欧美区一区二区三区| 久久新电视剧免费观看| 天堂一区二区在线| 在线观看国产日韩| 国产精品国产三级国产aⅴ无密码| 免费看日韩a级影片| 欧美日韩一区二区三区四区| 国产精品国产精品国产专区不蜜 | 亚洲老妇xxxxxx| 成人久久视频在线观看| 精品国产123| 日韩精品一卡二卡三卡四卡无卡| 91猫先生在线| 亚洲桃色在线一区| 99天天综合性| 亚洲区小说区图片区qvod| 国产成人在线观看免费网站| 精品国产sm最大网站免费看| 精品在线免费观看| 欧美tickling挠脚心丨vk| 日韩福利视频导航| 欧美二区三区的天堂| 亚洲主播在线播放| 欧美视频中文字幕| 午夜精品久久一牛影视| 欧美日韩高清不卡| 首页国产欧美久久| 日韩一级片在线观看| 美国精品在线观看| 精品少妇一区二区三区在线视频 | 免费成人在线视频观看| 精品久久国产老人久久综合| 韩日精品视频一区| 国产亚洲综合在线| 国产精品中文字幕欧美| 中文字幕精品三区| 一本到一区二区三区| 亚洲一卡二卡三卡四卡五卡| 欧美福利视频一区| 国内欧美视频一区二区| 久久亚区不卡日本| 91天堂素人约啪| 无码av免费一区二区三区试看| 欧美日韩在线播放| 紧缚捆绑精品一区二区| 中日韩av电影| 欧美嫩在线观看| 欧美aa在线视频| 欧美激情一区二区三区全黄| 色综合天天做天天爱| 日本成人超碰在线观看| 国产日韩亚洲欧美综合| 欧美亚日韩国产aⅴ精品中极品| 日韩有码一区二区三区| 国产色91在线| 欧美亚洲国产一区二区三区va| 老司机免费视频一区二区三区| 亚洲国产激情av| 91精品国产色综合久久ai换脸 | 一本久久a久久免费精品不卡| 视频一区二区欧美| 欧美高清在线一区二区| 这里只有精品电影| av电影一区二区| 麻豆极品一区二区三区| 亚洲精品国产第一综合99久久| 欧美二区在线观看| 91在线国产福利| 天天综合网天天综合色| 亚洲视频狠狠干| 久久综合色8888| 欧美日韩一区二区三区视频| 国产九色精品成人porny| 五月天国产精品| 国产精品国产三级国产普通话蜜臀 | 在线电影院国产精品| 国产一区二区福利| 日本亚洲一区二区| 洋洋av久久久久久久一区| 国产三级精品三级| 日韩一区二区三区电影| 91福利在线观看| av不卡在线播放| 国产精品一区二区x88av| 日本免费在线视频不卡一不卡二 | 色婷婷av一区| 成人午夜av电影| 国产毛片一区二区| 麻豆成人av在线| 日韩福利视频网| 石原莉奈在线亚洲三区| 亚洲国产cao| 亚洲一区在线免费观看| 中文字幕亚洲区| 久久亚洲综合av| 久久品道一品道久久精品| 日韩一区二区三区免费看 | 欧美日韩精品三区| 在线视频一区二区三| 色婷婷国产精品久久包臀| 色婷婷亚洲精品| 欧美三级电影一区| 欧美在线免费观看视频| 欧美日韩一区二区三区高清| 91成人免费电影| 一区二区三区不卡视频在线观看| 国产精品乱码久久久久久| 国产精品卡一卡二卡三| 中文字幕在线观看一区| 国产精品乱码久久久久久| 国产精品传媒视频| 国产精品毛片高清在线完整版| 国产精品久久久久久久久图文区| 国产精品女主播在线观看| 中文字幕中文字幕一区| 一区二区三区自拍| 亚洲国产综合色| 免费一级片91| 高清国产午夜精品久久久久久| 国产suv精品一区二区6| 成人午夜av影视| 欧美综合在线视频| 在线综合亚洲欧美在线视频| 久久精品免视看| 午夜精品影院在线观看| 高清不卡一二三区| 欧美三级日韩三级| 欧美国产丝袜视频| 日本不卡在线视频| 91麻豆精品秘密| 久久久精品2019中文字幕之3| 一区av在线播放| 国产精品18久久久久| 欧美精选一区二区| 亚洲欧洲成人精品av97| 久草中文综合在线| 欧美日韩一区高清| 国产精品国产a| 国产精品18久久久| 欧美一卡2卡三卡4卡5免费| 亚洲日本va午夜在线影院| 激情欧美一区二区| 欧美日韩成人在线一区| 亚洲图片激情小说| 国产成人在线视频网站| 欧美大片国产精品| 五月天亚洲精品| 欧美亚男人的天堂| 自拍av一区二区三区| 成人丝袜高跟foot| 久久只精品国产| 麻豆精品一区二区三区| 欧美日本一区二区| 一区二区三区四区不卡在线| 不卡一卡二卡三乱码免费网站| 久久久久久久性| 麻豆久久久久久久| 欧美一级高清片| 视频一区二区欧美| 欧美精品欧美精品系列| 一区二区三区四区激情| 色94色欧美sute亚洲线路二| 日韩一区中文字幕| 99re亚洲国产精品| 亚洲色图制服丝袜| 91丨porny丨最新| 国产精品进线69影院| eeuss鲁一区二区三区| 国产精品免费网站在线观看| 粉嫩嫩av羞羞动漫久久久 | 91精品久久久久久蜜臀|