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

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

?? cf_tureide.c

?? ARM9.rar
?? C
?? 第 1 頁 / 共 3 頁
字號:
********************************************************************************************************/
void ATA_ReadSetting(U32 Sectors , U8 Count)
{
   	ATA_CommandSet( 									/*ATA指令設置*/
 		CF_NULL,											/*Feature,特征寄存器*/
		(U8)Count, 									/*SecCnt,扇區計數寄存器*/
		(U8)Sectors, 								/*SecNum,扇區號寄存器*/
		(U8)(Sectors/0x100),							/*CylLow,柱面低寄存器*/
		(U8)(Sectors/0x10000),						/*CylHigh,柱面高寄存器*/
		(U8)(((Sectors/0x1000000)&0x0f)|ATA_DevReg),	/*C_D_H,設備磁頭寄存器*/
		(U8)IDE_CMD_READ 							/*Command,指令寄存器*/ 
				  );
}

/*********************************************************************************************************
** 函數名稱: ATA_ReadData512B
** 功能描述: 從硬盤讀出一個512B,在指定的緩沖區里
** 輸   入: Buffer,緩沖區地址
** 輸   出: 無
** 全局變量: 無
** 調用模塊: GetData(),從ATA數據寄存器讀取一個字節
********************************************************************************************************/
void ATA_ReadData512B(U16 * Buffer)
{ 	U16 i;
	for(i = 0; i < 256; i ++)					/*連續讀256個字(512字節)數據*/
    {
    	*(Buffer ++) = GetData();				/*讀數據寄存器一個字數據*/
    }
}

/*********************************************************************************************************
** 函數名稱: ATA_ReadSector					所在文件:IDE.C
** 功能描述: 從硬盤讀取一或多個扇區,放入到形參指定的內存中
** 輸   入: Device,設備號
**			 Buffer,讀出數據存放的緩沖區地址
**			 Sector,讀扇區號
**			 count, 讀扇區數
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設備狀態及信息結構體
** 調用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設備
**			 ATA_ReadSetting(),讀扇區設置
**			 ATA_WaitOnBusyNDrq(),等待數據請求
**			 ATA_ReadData512B(),讀512字節數據
**			 ATA_WaitOnBusyNDrdy(),等待設備準備好
**			 OSSemPost(),發送信號量
********************************************************************************************************/
U8 ATA_ReadSector(U8 Device,U16 *Buffer,U32 Sector,U8 count)
{	
	U8	Status=FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 				/*設備不可用,立即返回*/
		return	FALSE;							/*設備無效直接返回*/

	if(ATA_SelectDevice(Device))				/*選擇主從設備*/
	{
		ATA_ReadSetting( Sector, count);		/*讀扇區設置*/
		do
		{	
			count--;							/*扇區數減1*/
			if(ATA_WaitOnBusyNDrq())			/* 等待設備請求數據傳輸*/
		    {	
			   	ATA_ReadData512B( Buffer );		/*連續讀取一扇區的數據*/
			   	Buffer +=256;					/*調整數據格式*/
			}
			else
			   	break;							/*出錯,退出d0...while*/
		}while(count>0);						/*所有扇區數據傳輸完成*/
			
		if(ATA_WaitOnBusyNDrdy())				/*等待設備就緒,讀取狀態寄存器同時檢測設備是否出錯*/
			Status = TRUE;						/*操作正確*/
	}	

	return Status;								/*返回*/
}

/*********************************************************************************************************
** 函數名稱: ATA_WriteSetting					所在文件:IDE.C
** 功能描述: 寫扇區指令設置相關的寄存器。
** 輸   入: Sectors,寫入的起始扇區號
**           Count,扇區數
** 輸   出: 無
** 全局變量: ATA_DevReg,確定選擇的是主設備或是從設備和地址模式(本驅動使用LBA模式)
** 調用模塊: ATA_CommandSet(),寫命令設置
********************************************************************************************************/
void ATA_WriteSetting(U32 Sectors , U8 Count)
{
	ATA_CommandSet( 									/*ATA指令設置*/
 		CF_NULL,											/*Feature,特征寄存器*/
		(U8)Count, 									/*SecCnt,扇區計數寄存器*/
		(U8)Sectors, 								/*SecNum,扇區號寄存器*/
		(U8)(Sectors/0x100),							/*CylLow,柱面低寄存器*/
		(U8)(Sectors/0x10000),						/*CylHigh,柱面高寄存器*/
		(U8)(((Sectors/0x1000000)&0x0f)|ATA_DevReg),	/*C_D_H,設備磁頭寄存器*/
		(U8)IDE_CMD_WRITE 							/*Command,指令寄存器*/ 
				  );	
} 

/*********************************************************************************************************
** 函數名稱: ATA_WriteData512B
** 功能描述: 寫入ATA設備512字節數據
** 輸   入: Buffer,緩沖區地址
** 輸   出: 無
** 全局變量: 無
** 調用模塊: SetData(),從ATA數據寄存器讀取一個字節
********************************************************************************************************/
void ATA_WriteData512B(U16 * Buffer)
{   	
	U16 i;
   	for(i = 0; i < 256; i ++)			/*連續寫256個字(512字節)數據*/
   	{
     	SetData(*(Buffer++)); 			/*寫數據寄存器一個字數據*/    	
   	}
}

/*********************************************************************************************************
** 函數名稱: WriteSector					所在文件:IDE.C
** 功能描述: 向硬盤寫入一或多個扇區
** 輸   入: Device,選擇主設備或從設備
**			 Buffer,緩沖區地址
**			 Sector,寫入扇區號
**			 count, 寫入扇區數
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設備狀態及信息結構體
** 調用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設備
**			 ATA_ReadSetting(),讀扇區設置
**			 ATA_WaitOnBusyNDrq(),等待數據請求
**			 ATA_WriteData512B(),寫512字節數據
**			 ATA_WaitOnBusyNDrdy(),等待設備準備好
**			 OSSemPost(),發送信號量
********************************************************************************************************/
U8 ATA_WriteSector(U8 Device,U16 * Buffer, U32 Sector ,U8 count)
{	
	U8	Status=FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;
	
	if(ATA_SelectDevice(Device))			/*選擇需要操作的設備*/
	{
		ATA_WriteSetting( Sector, count);	/*寫扇區設置*/
	    do
	    {	count--;
	    	if(ATA_WaitOnBusyNDrq())		/*等待設備請求數據傳輸*/
			{
	    		ATA_WriteData512B(Buffer);	/*寫入一個扇區數據*/
	    		Buffer +=256;				/*調要寫入數據緩沖區的指針*/
			}
			else
				break;						/*出錯退出*/
		}while(count>0);

		if(ATA_WaitOnBusyNDrdy())			/*等待設備就緒,讀取狀態寄存器同時檢測設備是否出錯*/
			Status = TRUE;					/*操作正確*/
	}

	return Status;							/*返回*/
}


/*********************************************************************************************************
** 函數名稱: ATA_IdleImmediate					所在文件:IDE.C
** 功能描述: 直接進入空閑狀態(硬件轉動)
** 輸   入: Device,選擇主設備或從設備
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設備狀態及信息結構體
**			 CFIDESem,信號量
**			 ATA_DevReg,確定選擇的是主設備或是從設備和地址模式(本驅動使用LBA模式)
** 調用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設備
**			 ATA_CommandSet(),ATA指令設置
**			 ATA_WaitOnBusyNDrdy(),等待設備就緒
**			 OSSemPost(),發送信號量
********************************************************************************************************/
U8 ATA_IdleImmediate(U8 Device)
{
	U8 	retStatus = FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;

	if(ATA_SelectDevice(Device))			/*選擇設備*/
	{	
   		ATA_CommandSet( 					/*ATA指令設置*/
 	   		CF_NULL,							/*Feature,特征寄存器*/
			CF_NULL, 							/*SecCnt,扇區計數寄存器*/
			CF_NULL, 							/*SecNum,扇區號寄存器*/
			CF_NULL,							/*CylLow,柱面低寄存器*/
			CF_NULL,							/*CylHigh,柱面高寄存器*/
			ATA_DevReg,						/*C_D_H,設備磁頭寄存器*/
			IDE_CMD_IDLE_IMMEDIATE			/*Command,指令寄存器*/ 
					   );
    	
    	retStatus =ATA_WaitOnBusyNDrdy();	/*指令執行后狀態*/
	}

	return retStatus;						/*返回*/
}

/*********************************************************************************************************
** 函數名稱: ATA_StandbyImmediate	所在文件:IDE.C
** 功能描述: 立即進入空閑(硬盤停轉)
** 輸   入: Device,主設備或從設備
** 輸   出: TRUE,正常返回
**			 FALSE,出錯返回
** 全局變量: ATA,設備狀態及信息結構體
**			 CFIDESem,信號量
**			 ATA_DevReg,確定選擇的是主設備或是從設備和地址模式(本驅動使用LBA模式)
** 調用模塊: OSSemPend(),等待信號量
**			 ATA_SelDevice(),選擇設備
**			 ATA_CommandSet(),ATA指令設置
**			 ATA_WaitOnBusyNDrdy(),等待設備就緒
**			 OSSemPost(),發送信號量
********************************************************************************************************/
U8 ATA_StandbyImmediate(U8 Device)
{	
	U8 retStatus = FALSE;
	if(ATA[Device].ATAIsOK==FALSE) 			/*CF卡不可用,立即返回*/
		return	FALSE;
	
	if(ATA_SelectDevice(Device))			/*選擇設備*/
	{	
   		ATA_CommandSet( 					/*ATA指令設置*/
 	   		CF_NULL,							/*Feature,特征寄存器*/
			CF_NULL, 							/*SecCnt,扇區計數寄存器*/
			CF_NULL, 							/*SecNum,扇區號寄存器*/
			CF_NULL,							/*CylLow,柱面低寄存器*/
			CF_NULL,							/*CylHigh,柱面高寄存器*/
			ATA_DevReg,						/*C_D_H,設備磁頭寄存器*/
			IDE_CMD_STANDBY_IMMEDIATE		/*Command,指令寄存器*/ 
					   );
					   
    	retStatus =ATA_WaitOnBusyNDrdy();	/*等待設備不忙*/	
	}

	return retStatus;						/*返回*/
}


/*********************************************************************************************************
** 函數名稱: CF_Card_Test
** 功能描述: CF_Card_Test
********************************************************************************************************/
#define	TEST_SECTOR_NUMBER	0x1000

void CF_Card_Test( void )
{	
	U32 m,n ;
	U16 data[512] ;
	
	SYS_BusIni();	  //ATA總線初始化
	
	ATA_INI();		  //CF驅動初始化	
	
	if( ATA[THIS_DEVICE].ATAIsOK == TRUE )
		printf( "CF卡檢測成功!\n" );
	else
	{
		printf( "CF卡檢測失敗!\n" );
		printf( "設備出錯代碼 = 0x%x\n", ATA[THIS_DEVICE].ERRCODE ) ;		//
		printf( "讀寫出錯的扇區號 = 0x%x\n", ATA[THIS_DEVICE].ERRSECTOR ) ;		//
		return ;
	}

	printf( "柱面數 = 0x%x\n", ATA[THIS_DEVICE].INFODATA.NumberOfCylinders ) ;		//
	printf( "磁頭數 = 0x%x\n", ATA[THIS_DEVICE].INFODATA.NumberOfHeads ) ;		//
	printf( "每磁道扇區數 = 0x%x\n", ATA[THIS_DEVICE].INFODATA.SectorsPerTrack ) ;		//
	printf( "當前扇區容量 = 0x%x\n", ATA[THIS_DEVICE].INFODATA.CurrentSectorCapacity ) ;		//

	//給要寫入CF卡的數組賦值
	for( m = 0 ; m < 512 ; m++ )	data[m] = m ;
	printf("write data : \n");
	for( m = 0; m < 8; m++ )
    {
		for( n = 0; n < 7; n++ )
		    printf( "%03x ", data[m*7+n] ) ;
		    
		printf("\n");
    }
    
	printf("\nCF Card Write Sector Test\n\n" );
	ATA_WriteSector( THIS_DEVICE, data, TEST_SECTOR_NUMBER, 2 ) ;


	//在讀出CF卡之前,先將數組清零
	for( m = 0 ; m < 512 ; m++ )	data[m] = 0 ;

	printf("\nCF Card Read Sector Test\n\n" );
	ATA_ReadSector( THIS_DEVICE, data, TEST_SECTOR_NUMBER, 2 ) ;

	for( m = 0; m < 8; m++ )
    {
		for( n = 0; n < 7; n++ )
		    printf( "%03x ", data[m*7+n] ) ;
		    
		printf("\n");
    }
     
	for( m = 0 ; m < 512 ; m++ )
	{
		if( data[m] != m ) 
			break ;
	}
	
	if( m == 512 )	printf("\n讀出的數據與寫入的數據完全相符!\n");
	else		printf("\n讀出的數據與寫入的數據在地址0x%04處不符! \n", m );
     
    printf("\nPress ESC key to exit\n");
    while( getkey() != ESC_KEY ) ;
}

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
亚洲亚洲精品在线观看| 欧美一区二区视频在线观看 | 亚洲情趣在线观看| 日韩欧美视频在线| 日韩欧美一级片| 精品精品欲导航| 久久只精品国产| 久久久久久亚洲综合| 久久久久久久久99精品| 国产精品久线观看视频| 中文字幕在线不卡一区二区三区 | 97精品久久久午夜一区二区三区 | 欧美日韩一本到| 欧美精三区欧美精三区| 91精品国产91久久久久久最新毛片| 制服.丝袜.亚洲.中文.综合| 5566中文字幕一区二区电影| 精品黑人一区二区三区久久| 精品免费国产一区二区三区四区| 久久亚洲一区二区三区明星换脸| 久久嫩草精品久久久久| 亚洲欧美自拍偷拍色图| 亚洲va韩国va欧美va| 久久er精品视频| 成人毛片在线观看| 欧美日韩国产免费一区二区| 精品国产青草久久久久福利| 中文乱码免费一区二区| 亚洲在线免费播放| 蜜桃视频第一区免费观看| 岛国精品在线观看| 欧美日韩国产综合久久| 久久久精品一品道一区| 亚洲第一成年网| 成人网男人的天堂| 欧美日韩国产在线观看| 国产偷v国产偷v亚洲高清| 亚洲综合激情小说| 国产成人精品午夜视频免费| 91麻豆高清视频| 26uuu精品一区二区三区四区在线| 国产欧美日韩中文久久| 午夜视频在线观看一区| 成人深夜在线观看| 欧美麻豆精品久久久久久| 亚洲欧洲日产国码二区| 蜜桃av一区二区在线观看 | 亚洲综合色成人| 国产91精品入口| 日韩三级在线免费观看| 17c精品麻豆一区二区免费| 久久成人18免费观看| 91黄色在线观看| 日本一二三不卡| 麻豆精品久久精品色综合| 91福利视频网站| 日韩理论在线观看| 国产宾馆实践打屁股91| 日韩女优电影在线观看| 天天综合天天综合色| 一本一本大道香蕉久在线精品 | 在线亚洲+欧美+日本专区| 久久久久久99久久久精品网站| 日韩av成人高清| 在线观看精品一区| 亚洲三级小视频| bt欧美亚洲午夜电影天堂| 久久久影视传媒| 国产激情一区二区三区| 久久精品视频在线免费观看| 九九久久精品视频| 欧美电影免费观看高清完整版在 | 欧美视频在线不卡| 亚洲综合激情另类小说区| 在线亚洲高清视频| 午夜影院在线观看欧美| 欧美精品视频www在线观看| 性做久久久久久久久| 欧美另类z0zxhd电影| 五月激情六月综合| 91精品国产免费久久综合| 日一区二区三区| 日韩欧美一区在线| 经典三级在线一区| 久久精品视频在线看| 成人中文字幕在线| 亚洲欧洲日韩在线| 欧美日韩一区二区三区在线 | 久久久噜噜噜久久人人看 | 成人一区二区三区中文字幕| 国产欧美日韩三区| 99久久精品国产精品久久| 亚洲精品国产a久久久久久| 欧美色中文字幕| 视频一区二区三区入口| 日韩精品一区二区三区在线观看 | 日韩午夜在线播放| 免费成人深夜小野草| 久久综合久久综合九色| 成人avav影音| 香蕉久久夜色精品国产使用方法 | 99re8在线精品视频免费播放| 亚洲欧美aⅴ...| 在线成人高清不卡| 国产福利电影一区二区三区| 亚洲素人一区二区| 正在播放亚洲一区| 丁香激情综合国产| 日韩国产精品91| 国产精品看片你懂得| 欧美无人高清视频在线观看| 极品少妇一区二区三区精品视频| 中文在线资源观看网站视频免费不卡| 一本到三区不卡视频| 毛片av一区二区| 中文字幕一区二区三区av| 欧美日韩的一区二区| 国产91在线观看丝袜| 日韩精品成人一区二区三区| 国产欧美日韩久久| 欧美日韩午夜精品| 风间由美一区二区三区在线观看| 午夜欧美电影在线观看| 国产精品网站一区| 精品国精品自拍自在线| 欧美系列一区二区| 成人黄色小视频| 国产真实乱对白精彩久久| 亚洲一区国产视频| 国产精品超碰97尤物18| 亚洲精品在线免费播放| 欧美乱妇20p| 欧美日韩在线不卡| 色狠狠色噜噜噜综合网| 成人av影院在线| 韩国女主播成人在线| 天天操天天干天天综合网| 亚洲人一二三区| 国产女人水真多18毛片18精品视频| 制服丝袜中文字幕亚洲| 欧美日本国产视频| 欧美影视一区二区三区| 91欧美激情一区二区三区成人| 国产成人在线色| 国产美女精品在线| 国产真实乱对白精彩久久| 美日韩一区二区三区| 亚洲成a人片在线不卡一二三区 | 久久久影视传媒| 精品少妇一区二区三区免费观看| 欧美高清www午色夜在线视频| 在线精品视频小说1| 色婷婷综合久久久| 91行情网站电视在线观看高清版| 99re这里只有精品首页| 色妹子一区二区| 欧美综合一区二区| 91福利小视频| 欧美狂野另类xxxxoooo| 欧美日韩免费一区二区三区| 欧美丰满美乳xxx高潮www| 这里只有精品免费| 精品少妇一区二区三区在线视频| 日韩视频不卡中文| 国产视频不卡一区| 国产精品国产三级国产专播品爱网 | 国产麻豆精品视频| 国产xxx精品视频大全| 成人ar影院免费观看视频| 成人蜜臀av电影| 欧美在线免费播放| 91精品国产入口在线| 久久久久久久久久久电影| 日韩毛片精品高清免费| 日韩精品电影在线| 国产高清视频一区| 一本久久精品一区二区| 日韩一区二区三区在线视频| 久久一二三国产| 亚洲欧美视频在线观看视频| 日本一道高清亚洲日美韩| 国产剧情在线观看一区二区| 99re这里只有精品首页| 日韩一区二区三区四区| 国产欧美日韩麻豆91| 亚洲18影院在线观看| 国产精品99久久久久久久女警 | 91丨porny丨户外露出| 欧美精品123区| 欧美国产一区二区| 亚洲国产精品久久不卡毛片| 黄色日韩网站视频| 99久久精品久久久久久清纯| 日韩一区二区三区精品视频| 亚洲国产精品99久久久久久久久| 亚洲午夜一区二区三区| 国产精品自产自拍| 欧美高清dvd| 一区二区三区在线看| 国产美女一区二区|