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

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

?? mmc.c

?? ATMEGA32+Proteus仿真原理圖+C應(yīng)用程序
?? C
字號:
//=====================================================================



//=====================================================================
#include "mmc.h"
//=====================================================================

//---------------------------------------------------------------------
//Init MMC/SD card(SPI-MODE)
//---------------------------------------------------------------------
U08 mmc_init ()
{
	U08 Timeout = 0;
	MMC_Direction_REG &=~(1<<SPI_DI);			//MMC_DI    Input
	MMC_Direction_REG |= (1<<SPI_Clock);		//MMC_Clock Output
	MMC_Direction_REG |= (1<<SPI_DO);			//MMC_DO    Output
	MMC_Direction_REG |= (1<<MMC_Chip_Select);	//MMC_CS    Output
	MMC_Direction_REG |= (1<<SPI_SS);	
	MMC_Write |= (1<<MMC_Chip_Select);			//MMC_CS    HIGH
    
	unsigned char a;
    for(a=0;a<200;a++){nop(); };		//Wait ......

	#if SPI_Mode   //SPI INIT
		SPCR = (1<<SPE)|(1<<MSTR)|(1<<SPR0)|(1<<SPR1); //Enable SPI, SPI in Master Mode	
		SPSR = (0<<SPI2X);
	#endif
	for (a = 0;a<0x0f;a++){mmc_write_byte(0xff);}//wait  >74  Clk
	
	//--------- send CMD0  ---------
	U08 CMD[] = {0x40,0x00,0x00,0x00,0x00,0x95};
	while(mmc_write_command (CMD) !=1)
	{
		if (Timeout++ > 200)
		   { return(1); }// CMD0 Error!
	}
    //--------- send CMD1  ---------
	Timeout = 0;
	CMD[0] = 0x41;
	CMD[5] = 0xFF;
	while( mmc_write_command (CMD) !=0)
	{
		if (Timeout++ > 100)
			{
			return(2); //CMD1 Error!
			}
	}
	#if SPI_Mode    // SPI clk 
		SPCR &= ~((1<<SPR0) | (1<<SPR1));
		SPSR = SPSR|(1<<SPI2X);
	#endif
	MMC_Disable();//MMC_CS = high
	return(0);
}

//---------------------------------------------------------------------
//Send a Command to MMC/SD-Card
//Return: the second byte of response register of MMC/SD-Card
//---------------------------------------------------------------------
U08 mmc_write_command (U08 *cmd)
{
	U08 tmp = 0xff;
	U16 Timeout = 0;

	MMC_Disable();        //MMC_CS = HIGH
	mmc_write_byte(0xFF); //send 8 Clock Impulse
	MMC_Enable();         //MMC_CS = LOW   

	//send 6 Byte Command
    U08 a;
	for (a = 0;a<0x06;a++)  
		{
		  mmc_write_byte(*cmd++);
		}

	//get 16 bit response
	while (tmp == 0xff)	
		{
		tmp = mmc_read_byte();  //Only last 8 bit is used here.Read it out. 
		if (Timeout++ > 500){break;}
		}
	return(tmp);
}

//---------------------------------------------------------------------
//Routine for reading a byte from MMC/SD-Card
//---------------------------------------------------------------------
inline U08 mmc_read_byte (void)
{
	U08 Byte = 0;

    #if SPI_Mode	 
	  SPDR = 0xff;
	  while(!(SPSR & (1<<SPIF))){};
	  Byte = SPDR;
    #else			//Software SPI
	
	  for (U08 a=8; a>0; a--) //1 Byte  ( MSB First)
	      {
             MMC_Write &=~(1<<SPI_Clock); //MMC_SCK (Low) 
		     if (bit_is_set(MMC_Read,SPI_DI) > 0)  
		        {
			    	Byte |= (1<<(a-1));
			     }
			  else
			     {
			         Byte &=~(1<<(a-1));
				  }
		       MMC_Write |=(1<<SPI_Clock); //MMC_SCK (High)		
		  }
    #endif
	return (Byte);
}

//---------------------------------------------------------------------
//Routine for sending a byte to MMC/SD-Card
//---------------------------------------------------------------------
inline void mmc_write_byte (U08 Byte)
{
    #if SPI_Mode		 
	  SPDR = Byte; 	 
	  while(!(SPSR & (1<<SPIF))) {}
    #else			
	  for (U08 a=8; a>0; a--) // 1 Byte ( MSB First)
	    {
		  if (bit_is_set(Byte,(a-1))>0)	{MMC_Write |= (1<<SPI_DO); }//MMC.DO  High
		  else {MMC_Write &= ~(1<<SPI_DO);}//MMC.DO  Low
		  MMC_Write &= ~(1<<SPI_Clock);	//MMC.SCK  (LOW)
		  MMC_Write |= (1<<SPI_Clock);   //MMC.SCK  (High)
	     }
	   MMC_Write |= (1<<SPI_DO);	       //MMC.DO  High
    #endif
}

//---------------------------------------------------------------------
//Blocks(512Byte) 
//Routine for writing a Block(512Byte) to MMC/SD-Card
//---------------------------------------------------------------------
U08 mmc_write_sector (U32 addr,U08 *Buffer)
{
	unsigned char tmp;
	unsigned char cmd[] = {0x58,0x00,0x00,0x00,0x00,0xFF}; //CMD 24  

	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)
	tmp = mmc_write_command (cmd);
	if (tmp != 0) { return(tmp); }  ////send commamd Error!

	//Before writing,send 100 clock to MMC/SD-Card
	unsigned char  a;

	for (a=0;a<100;a++)
		{
		mmc_read_byte();
		}
 
 	mmc_write_byte(0xFE);//Send Start Byte to MMC/SD-Card	


	//Now send real data Bolck (512Bytes) to MMC/SD-Card
    int   b;
    for (b=0;b<512;a++)
		{
		mmc_write_byte(*Buffer++);
		}
	
	//CRC-Byte  
	mmc_write_byte(0xFF); //Dummy CRC
	mmc_write_byte(0xFF); //CRC Code 
	
	//Wait till MMC/SD-Card is not busy
	while (mmc_read_byte() != 0xff){};
	
	//set MMC_CS    high 
	MMC_Disable();
	
return(0);
}

//---------------------------------------------------------------------
//Routine for reading data Registers of MMC/SD-Card
//Return 0 if no Error.
//---------------------------------------------------------------------

void mmc_read_block(U08 *cmd,U08 *Buffer,U16 Bytes)
{	
	//Send CMD0
	if (mmc_write_command (cmd) != 0)
			{
			 return;//block write Error!
			}

	//Read Start Byte form MMC/SD-Card (FEh/Start Byte)
	while (mmc_read_byte() != 0xfe){};

	//Write blocks(normal 512Bytes) to MMC/SD-Card
    int   a;
	for (a=0;a<Bytes;a++)
		{
		*Buffer++ = mmc_read_byte();
		}
	//CRC-Byte  
	mmc_read_byte();//CRC - Byte 
	mmc_read_byte();//CRC - Byte 
	
	MMC_Disable();//MMC_CS = high (MMC/SD-Card no active )
	
	return;
}

//---------------------------------------------------------------------
//Routine for reading Blocks(512Byte) from MMC/SD-Card
//Return 0 if no Error.
//---------------------------------------------------------------------
U08 mmc_read_sector (U32 addr,U08 *Buffer)
{	
	//Command 16 is reading Blocks from MMC/SD-Card
	U08 cmd[] = {0x51,0x00,0x00,0x00,0x00,0xFF}; 
	
	//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 );

    mmc_read_block(cmd,Buffer,512);

	return(0);
}

//---------------------------------------------------------------------
//Routine for reading CID Registers from MMC/SD-Card (16Bytes) 
//Return 0 if no Error.
//---------------------------------------------------------------------
U08 mmc_read_cid (U08 *Buffer)
{
	U08 cmd[] = {0x4A,0x00,0x00,0x00,0x00,0xFF}; //Command for reading CID Registers
	mmc_read_block(cmd,Buffer,16);
	return(0);
}

//---------------------------------------------------------------------
//Routine for reading CSD Registers from MMC/SD-Card (16Bytes)
//Return 0 if no Error.
//---------------------------------------------------------------------
U08 mmc_read_csd (U08 *Buffer)
{	
	U08 cmd[] = {0x49,0x00,0x00,0x00,0x00,0xFF}; //Command for reading CSD Registers
	mmc_read_block(cmd,Buffer,16);
	return(0);
}
 

//---------------------------------------------------------------------


//---------------------------------------------------------------------

//---------------------------------------------------------------------


//---------------------------------------------------------------------


//---------------------------------------------------------------------

//---------------------------------------------------------------------


//---------------------------------------------------------------------





?? 快捷鍵說明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
樱桃视频在线观看一区| 免费的成人av| 久久精品亚洲麻豆av一区二区| 99久久99久久综合| 蜜桃精品视频在线| 亚洲精品成人精品456| 久久久久99精品一区| 欧美日韩高清在线播放| 色综合久久久久综合| 国产自产视频一区二区三区| 午夜影院久久久| 自拍偷拍欧美激情| 国产欧美一区二区精品性色 | 高清不卡在线观看av| 日本欧美一区二区在线观看| 亚洲男人天堂av网| 国产精品福利av| 国产日韩精品一区二区浪潮av| 91精品福利在线一区二区三区| 在线欧美日韩精品| 91丨九色porny丨蝌蚪| 成人午夜视频在线观看| 国内精品在线播放| 久久精品99国产精品日本| 丝袜亚洲另类欧美综合| 一区二区三区影院| 亚洲精品乱码久久久久久黑人| 国产精品久久久久aaaa樱花| 久久久www成人免费无遮挡大片| 日韩欧美专区在线| 日韩欧美国产成人一区二区| 欧美电影一区二区三区| 欧美日韩亚洲另类| 欧美日韩亚洲综合一区二区三区 | 欧美成人在线直播| 日韩视频中午一区| 欧美大片一区二区| 久久亚洲二区三区| 国产肉丝袜一区二区| 国产精品午夜在线| 国产精品久久一卡二卡| 亚洲色图制服丝袜| 亚洲综合色在线| 午夜免费欧美电影| 免费在线视频一区| 精品一区二区精品| 紧缚奴在线一区二区三区| 狠狠色丁香久久婷婷综合_中| 精品综合免费视频观看| 国产91丝袜在线播放0| 成av人片一区二区| 欧美三级在线看| 欧美大片国产精品| 国产女主播一区| 亚洲猫色日本管| 丝袜美腿高跟呻吟高潮一区| 丝袜诱惑亚洲看片| 国产综合色视频| 91偷拍与自偷拍精品| 欧美在线看片a免费观看| 9191成人精品久久| 久久精品视频网| 亚洲日本一区二区| 免费在线观看日韩欧美| 国产高清在线观看免费不卡| 99久免费精品视频在线观看 | 欧美日韩国产免费一区二区| 欧美一级高清片在线观看| 国产色综合一区| 亚洲在线成人精品| 精品中文字幕一区二区小辣椒| 成人免费av网站| 欧美日韩电影一区| 久久精品水蜜桃av综合天堂| 亚洲综合自拍偷拍| 国产一区二区在线视频| 91在线视频18| 欧美成va人片在线观看| 亚洲欧美日韩一区二区 | 久久国内精品自在自线400部| 成人高清免费观看| 欧美日韩高清影院| 国产精品色婷婷| 日韩中文字幕一区二区三区| 成人三级在线视频| 91精品国产色综合久久不卡蜜臀 | 香蕉成人伊视频在线观看| 国产麻豆视频精品| 欧洲精品视频在线观看| 久久精子c满五个校花| 亚洲成av人片一区二区| 成人91在线观看| 26uuu精品一区二区在线观看| 亚洲婷婷国产精品电影人久久| 久久成人免费电影| 欧美日韩久久久| 国产精品久线在线观看| 久久99国产精品尤物| 欧美日韩大陆一区二区| 国产精品久久一卡二卡| 国精产品一区一区三区mba桃花| 色先锋资源久久综合| 欧美mv日韩mv国产| 午夜精品一区在线观看| 99久久精品国产精品久久| wwwwww.欧美系列| 日韩精品一二区| 欧日韩精品视频| 亚洲私人影院在线观看| 国产成人精品免费看| 精品欧美一区二区在线观看| 婷婷中文字幕一区三区| 欧洲精品一区二区三区在线观看| 中文字幕制服丝袜成人av| 国产精品1区二区.| 久久久噜噜噜久久人人看 | 在线视频一区二区三区| 国产精品嫩草影院com| 国产一区二区在线免费观看| 日韩一二在线观看| 三级欧美在线一区| 4438x成人网最大色成网站| 一区二区高清在线| 91精品福利在线| 亚洲色图在线看| 色综合天天综合狠狠| 中文字幕一区二区三区在线观看| 国产精品一二二区| 久久久噜噜噜久噜久久综合| 国内精品国产成人| 久久综合色综合88| 国产综合色在线视频区| 国产亚洲精品福利| 国产成人亚洲综合色影视| 久久精品人人做人人综合 | 首页国产欧美久久| 欧美一区二区三区在线观看| 日本不卡免费在线视频| 欧美一级理论性理论a| 老色鬼精品视频在线观看播放| 欧美成人国产一区二区| 国产精品99久久久久久宅男| 国产三级精品三级| 91玉足脚交白嫩脚丫在线播放| 亚洲三级在线免费| 欧美丝袜丝交足nylons| 偷拍一区二区三区| 欧美精品一区二区三区很污很色的| 久久99精品久久久久| 国产亚洲欧洲997久久综合| 99久久亚洲一区二区三区青草| 亚洲三级在线看| 91精品欧美福利在线观看| 麻豆极品一区二区三区| 国产午夜亚洲精品不卡| 成人免费看片app下载| 亚洲综合一区二区三区| 欧美一区二区三区四区视频| 国产一区二区三区久久悠悠色av| 国产精品美女久久久久av爽李琼| 91网站在线观看视频| 天天色 色综合| 国产午夜亚洲精品午夜鲁丝片| 色综合一区二区三区| 国产欧美一区二区三区网站 | 91 com成人网| 久久se这里有精品| 国产精品免费av| 欧美综合亚洲图片综合区| 欧美a级理论片| 国产精品色哟哟| 欧美精品在线视频| 国产一区二区三区免费| 一区二区三区欧美在线观看| 欧美一级黄色录像| 99久久国产综合精品麻豆| 天天综合日日夜夜精品| 国产欧美日韩亚州综合| 欧美精品日韩一本| 粉嫩在线一区二区三区视频| 亚洲成人精品影院| 国产精品午夜久久| 欧美一区二区三区在| youjizz国产精品| 日本一区中文字幕| 中文字幕一区二区三区在线播放 | 18涩涩午夜精品.www| 欧美日韩亚洲丝袜制服| 国产高清久久久久| 亚洲va欧美va天堂v国产综合| 国产亚洲成av人在线观看导航| 欧美日韩黄视频| 粉嫩aⅴ一区二区三区四区| 亚洲第一福利视频在线| 国产精品第五页| 久久精品人人做人人综合| 欧美肥妇bbw| 欧美亚洲高清一区二区三区不卡| 国产成都精品91一区二区三| 美洲天堂一区二卡三卡四卡视频|