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

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

?? ata.h

?? 自己心理明白
?? H
字號:
/*! \file ata.h \brief IDE-ATA hard disk interface driver. */
//*****************************************************************************
//
// File Name	: 'ata.h'
// Title		: IDE-ATA interface driver for hard disks
// Author		: Pascal Stang
// Date			: 11/22/2000
// Revised		: 12/29/2000
// Version		: 0.3
// Target MCU	: ATmega103 (should work for Atmel AVR Series)
// Editor Tabs	: 4
//
// NOTE: This code is currently below version 1.0, and therefore is considered
// to be lacking in some functionality or documentation, or may not be fully
// tested.  Nonetheless, you can expect most functions to work.
//
// This code is distributed under the GNU Public License
//		which can be found at http://www.gnu.org/licenses/gpl.txt
//
//*****************************************************************************


#ifndef ATA_H
#define ATA_H

#include "def.h"

// constants
#define DRIVE0		0

#define STANDBY		0
#define SLEEP		1
#define IDLE		2

// ATA status register bits
#define ATA_SR_BSY		0x80
#define ATA_SR_DRDY		0x40
#define ATA_SR_DF		0x20
#define ATA_SR_DSC		0x10
#define ATA_SR_DRQ		0x08
#define ATA_SR_CORR		0x04
#define ATA_SR_IDX		0x02
#define ATA_SR_ERR		0x01

// ATA error register bits
#define ATA_ER_UNC		0x40
#define ATA_ER_MC		0x20
#define ATA_ER_IDNF		0x10
#define ATA_ER_MCR		0x08
#define ATA_ER_ABRT		0x04
#define ATA_ER_TK0NF	0x02
#define ATA_ER_AMNF		0x01

// ATA head register bits
#define Master_DRV	0xE0
#define Slave_DRV	0xF0
#define ATA_HEAD_USE_LBA	Slave_DRV

// constants
#define SECTOR_BUFFER_ADDR			0x1E00

// ATA register base address
#define ATA_REG_BASE		0x0400000
// ATA register offset
#define ATA_REG_DATA		0x02
#define ATA_REG_ERROR		0x12
#define ATA_REG_SECCOUNT	0x22
#define ATA_REG_STARTSEC	0x32
#define ATA_REG_CYLLO		0x0A
#define ATA_REG_CYLHI		0x1A
#define ATA_REG_HDDEVSEL	0x2A
#define ATA_REG_CMDSTATUS1	0x3A

#define HDD_Sector_Size		512

// ATA commands
#define ATA_CMD_READ			0x20
#define ATA_CMD_READNR			0x21
#define ATA_CMD_WRITE			0x30
#define ATA_CMD_WRITENR			0x31
#define ATA_CMD_IDENTIFY		0xEC
#define ATA_CMD_RECALIBRATE		0x10
#define ATA_CMD_SPINDOWN		0xE0	// spin down disk immediately
#define ATA_CMD_SPINUP			0xE1	// spin up disk immediately
#define ATA_CMD_STANDBY_5SU		0xE2	// spin down disk and set auto-power-down timer (sectorcount*5sec)
#define ATA_CMD_IDLE_5SU		0xE3	// keep disk spinning and set auto-power-down timer (sectorcount*5sec)
#define ATA_CMD_SLEEP			0xE6	// sleep disk (wakeup only on HW or SW reset)
#define ATA_CMD_STANDBY_01SU	0xF2	// spin down disk and set auto-power-down timer (sectorcount*0.1sec)
#define ATA_CMD_IDLE_01SU		0xF3	// keep disk spinning and set auto-power-down timer (sectorcount*0.1sec)


// ATA CHS disk parameters (examples, now we autodetect)
#define ATA_DISKPARM_CLYS		0x03A6	// number of cylinders per platter
#define ATA_DISKPARM_HEADS		0x10	// number of heads (usable plater sides)
#define ATA_DISKPARM_SECTORS	0x11	// number of sectors per head per cylinder

// ATA Identity fields
// all offsets refer to word offset (2 byte increments)
#define ATA_IDENT_DEVICETYPE	0		// specifies ATA/ATAPI, removable/non-removable
#define ATA_IDENT_CYLINDERS		1		// number of logical cylinders
#define ATA_IDENT_HEADS			3		// number of logical heads
#define ATA_IDENT_SECTORS		6		// number of sectors per track
#define ATA_IDENT_SERIAL		10		// drive model name (20 characters)
#define ATA_IDENT_MODEL			27		// drive model name (40 characters)
#define ATA_IDENT_FIELDVALID	53		// indicates field validity of higher words (bit0: words54-58, bit1: words 64-70)
#define ATA_IDENT_LBASECTORS	60		// number of sectors in LBA translation mode

// drive mode defines (for ataSetDrivePowerMode() )
#define ATA_DISKMODE_SPINDOWN	0
#define ATA_DISKMODE_SPINUP		1
#define ATA_DISKMODE_SETTIMEOUT	2
#define ATA_DISKMODE_SLEEP		3

// typedefs
// drive info structure
typedef struct 
{
	unsigned int  cylinders;
	unsigned char heads;
	unsigned char sectors;
	unsigned long sizeinsectors;
	unsigned char LBAsupport;
	char model[41];
} typeDriveInfo;


// Prototypes
void ataInit(void);
void ataDriveInit(void);
void ataDriveSelect(U8 DriveNo);
void ataSetDrivePowerMode(U8 DriveNo, U8 mode, U8 timeout);
U8  ataReadByte(U8 reg);
void ataWriteByte(U8 reg, U8 data);
void ataShowRegisters(unsigned char DriveNo);
U8  ataSWReset(void);
void ataDiskErr(void);
void ataPrintSector( U8 *Buffer);
void ataReadDataBuffer(U8 *Buffer, U16 numBytes);
void ataWriteDataBuffer(U8 *Buffer, U16 numBytes);
U8 ataStatusWait(U8 mask, U8 waitStatus);

// read and write routines for CHS based drives
unsigned char ataReadSectorsCHS(	unsigned char Drive, 
									unsigned char Head, 
									unsigned int Track,
									unsigned char Sector,
									unsigned int numsectors,
									unsigned char *Buffer);

unsigned char ataWriteSectorsCHS(	unsigned char Drive, 
									unsigned char Head, 
									unsigned int Track,
									unsigned char Sector,
									unsigned int numsectors,
									unsigned char *Buffer);

// read and write routines for LBA based drives
unsigned char ataReadSectorsLBA(	unsigned char Drive, 
									unsigned long lba,
									unsigned int numsectors,
                            		unsigned char *Buffer);

unsigned char ataWriteSectorsLBA(	unsigned char Drive, 
									unsigned long lba,
									unsigned int numsectors,
                            		unsigned char *Buffer);

// generic read and write routines using LBA
//   uses native or translated LBA addressing
//   given autodetected drive type
unsigned char ataReadSectors(	unsigned char Drive, 
								unsigned long lba,
								unsigned int numsectors,
                            	unsigned char *Buffer);

unsigned char ataWriteSectors(	unsigned char Drive, 
								unsigned long lba,
								unsigned int numsectors,
                            	unsigned char *Buffer);

//unsigned char IdentifyDrive(unsigned char DriveNo,  unsigned char *Buffer, tdefDriveInfo *DriveInfo);
//unsigned char SetMode(unsigned char DriveNo, unsigned char Mode, unsigned char PwrDown);
//unsigned char ATA_Idle(unsigned char Drive);

#endif

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
秋霞国产午夜精品免费视频| 麻豆精品新av中文字幕| 亚洲成人av一区| 久久精品99国产国产精| 成人精品高清在线| 777午夜精品免费视频| 宅男噜噜噜66一区二区66| 欧美不卡123| 亚洲愉拍自拍另类高清精品| 久久爱www久久做| 一本色道久久综合亚洲精品按摩| 9191国产精品| 国产精品久久夜| 日韩av成人高清| 97国产一区二区| 欧美成人vr18sexvr| 一区二区三区在线观看动漫| 国产精选一区二区三区| 欧美人动与zoxxxx乱| 欧美激情在线观看视频免费| 午夜成人免费电影| 色欧美乱欧美15图片| 久久久综合精品| 日韩电影在线一区二区| 97se亚洲国产综合自在线观| 日韩写真欧美这视频| 一区二区欧美视频| 粉嫩一区二区三区在线看| 欧美电影免费观看高清完整版在线观看| 中文字幕一区免费在线观看| 成人午夜短视频| 亚洲国产精品成人综合色在线婷婷 | 91视频免费播放| 欧美成人三级在线| 日本三级亚洲精品| 欧美午夜电影一区| 亚洲免费观看在线视频| 国产**成人网毛片九色| 久久久久99精品国产片| 老司机免费视频一区二区| 波多野结衣欧美| 国产欧美一区二区三区在线老狼| 蜜臀av性久久久久蜜臀aⅴ | 日本在线不卡视频| 91色|porny| 国产清纯美女被跳蛋高潮一区二区久久w | 91久久精品一区二区| 国产精品全国免费观看高清| 激情五月激情综合网| 日韩欧美一卡二卡| 极品少妇一区二区三区精品视频| 日韩一区二区在线观看视频| 日本在线不卡视频一二三区| 欧美精品黑人性xxxx| 日韩国产高清影视| 日韩欧美在线影院| 九色综合狠狠综合久久| 欧美日韩亚洲国产综合| 日韩黄色一级片| 日韩精品一区二区在线观看| 激情偷乱视频一区二区三区| 26uuu精品一区二区三区四区在线| 毛片不卡一区二区| 91精品久久久久久久99蜜桃| 亚洲亚洲人成综合网络| 欧美日韩亚洲综合| 久久99精品视频| 一区二区在线观看av| 波多野结衣一区二区三区| 欧美国产日韩精品免费观看| 国产在线精品不卡| 国产精品理伦片| 精品视频一区二区三区免费| 日韩精品午夜视频| 久久久久9999亚洲精品| 一本到不卡精品视频在线观看| 亚洲影视在线观看| 欧美裸体一区二区三区| 日韩av高清在线观看| 国产亚洲欧美色| 在线观看视频一区二区| 麻豆精品在线观看| 国产精品久久久久7777按摩| 欧美影院精品一区| 国产毛片精品国产一区二区三区| 中文字幕一区二区三区四区不卡| 北岛玲一区二区三区四区| 图片区日韩欧美亚洲| 国产欧美日韩另类一区| 欧美日韩精品系列| 成人在线综合网| 日本不卡在线视频| 综合欧美一区二区三区| 日韩三级.com| 在线日韩一区二区| 韩国女主播一区| 亚洲一区成人在线| 中文字幕一区视频| 久久色.com| 777色狠狠一区二区三区| 99精品欧美一区二区三区小说| 蜜臀av一区二区三区| 亚洲精品久久久久久国产精华液| 精品久久久久一区| 欧美日韩午夜精品| av高清久久久| 国产成人亚洲综合a∨婷婷图片| 日韩精品免费视频人成| 亚洲精品日日夜夜| 日韩欧美不卡在线观看视频| 国产剧情一区二区三区| 麻豆专区一区二区三区四区五区| 一区二区欧美精品| 亚洲欧美一区二区三区国产精品 | 午夜精品在线视频一区| 国产精品久久久久久久久图文区| 日韩欧美一区在线观看| 欧美人妖巨大在线| 欧美日韩一区二区三区在线 | 午夜免费久久看| 亚洲婷婷国产精品电影人久久| 欧美一级在线观看| 欧美不卡123| 国产拍揄自揄精品视频麻豆| 国产日韩精品视频一区| 国产精品第五页| 亚洲综合在线免费观看| 五月天欧美精品| 久久精品国产亚洲a| 国产99久久久精品| 色婷婷久久综合| 91 com成人网| 国产欧美日韩精品a在线观看| 国产精品亲子乱子伦xxxx裸| 日韩美女视频一区二区| 亚洲风情在线资源站| 免费在线观看一区| 国模少妇一区二区三区| 成人午夜免费视频| 欧美色区777第一页| 日韩女优电影在线观看| 中文字幕永久在线不卡| 香港成人在线视频| 国产福利一区二区三区在线视频| 99热这里都是精品| 7777精品伊人久久久大香线蕉经典版下载 | 久热成人在线视频| 91污片在线观看| 欧美一区二区三区免费大片| 国产日韩欧美不卡在线| 亚洲国产精品久久久久秋霞影院| 麻豆91小视频| 色综合久久久久综合体| 欧美变态tickling挠脚心| 亚洲婷婷综合久久一本伊一区| 蜜臀a∨国产成人精品| 波多野结衣91| 欧美变态tickling挠脚心| 亚洲欧美激情小说另类| 蜜桃视频第一区免费观看| 99久久99久久精品免费观看 | 欧美丰满少妇xxxbbb| 日本一区二区成人| 日本亚洲三级在线| 在线影院国内精品| 国产日韩三级在线| 美女诱惑一区二区| 日本高清不卡aⅴ免费网站| 精品国产乱码久久久久久浪潮| 亚洲一二三专区| 99久久久无码国产精品| 久久无码av三级| 久久99久久久欧美国产| 欧美精品一卡二卡| 依依成人精品视频| caoporen国产精品视频| 国产婷婷一区二区| 国产呦精品一区二区三区网站| 制服丝袜亚洲精品中文字幕| 一区二区三区在线播放| 99久久国产综合精品色伊| 国产亚洲精品7777| 国产一区二区三区观看| 欧美一二三区在线| 青青青伊人色综合久久| 欧美色偷偷大香| 亚洲成av人片一区二区三区| 色综合天天综合网天天狠天天| 国产精品无遮挡| 国产成人精品免费网站| 26uuu精品一区二区三区四区在线| 日本亚洲电影天堂| 欧美一二三四区在线| 日本三级亚洲精品| 日韩一二在线观看| 美女任你摸久久| 精品剧情v国产在线观看在线| 毛片av一区二区| 久久蜜桃av一区二区天堂 | 日本一区二区免费在线|