www.pudn.com > 外挂硬盘和FLASH的MP3方案程序下载.rar > IDEIO.H


/********************************************************/ 
/*                                                      */ 
/*  库   名   称:IDE基本I/O函数库                      */ 
 
/*  功 能  描 述:提供IDE接口设备基本读写、控制等功能。 */ 
/*                                                      */ 
/********************************************************/ 
 
#ifndef _TYPE_DEFINE 
 #define _TYPE_DEFINE 
 typedef bit BOOL; 
 typedef unsigned char BYTE; 
 typedef unsigned char CHAR; 
 typedef unsigned int WORD; 
 typedef unsigned long DWORD; 
#endif 
 
#ifndef _IDEIO_DEFINE 
 #define _IDEIO_DEFINE 
 
//IDE设备基地址 
#define IDE_ADDR_BASE						0x8000 
 
//IDE设备寄存器组地址偏移量 
#define IDE_ADDR_CTRL						0x1000 
#define IDE_ADDR_CMD						0x0000 
 
//IDE设备寄存器偏移量 
#define IDE_IO_DA0						0x01 
#define IDE_IO_DA1						0x02 
#define IDE_IO_DA2						0x04 
 
//IDE设备控制I/O线 
#define IDE_IO_RESET						P5_0 
 
//IDE设备数据端口 
#define IDE_PORT_DATLSB						ACC 
#define IDE_PORT_DATMSB						DAT16H 
 
//IDE 函数返回值 
#define IDE_SUCCESSFUL						0x00 
#define IDE_ERROR_RESET						0x01 
#define IDE_ERROR_DIAGNOSTIC					0x01 
#define IDE_ERROR_BSY						0x10 
#define IDE_ERROR_DRQ						0x11 
#define IDE_ERROR_DRDY						0x12 
#define IDE_ERROR_NODATA					0x13 
 
//电源管理 
#define IDE_POWER_SLEEP						0x00 
#define IDE_POWER_IDLE						0x01 
#define IDE_POWER_STANDBY					0x02 
 
//设备编号 
#define IDE_DEVICE0						0 
#define IDE_DEVICE1						1 
 
#define IDE_RESET_HARDWARE					0 
#define IDE_RESET_SOFTWARE					1 
 
#define IDE_DEVICE_MASTER					0x00 
#define IDE_DEVICE_SLAVE					0x10 
 
//设备类型 
#define DRIVER_TYPE_HDD						0x01		//硬盘 
#define DRIVER_TYPE_CDROM					0x02		//光驱 
#define DRIVER_TYPE_FLASH					0x03		//FLASH 
 
//IDE扇区读写 
#define IDEReadSector(X)					IDE.CurrentSector=X; _IDEReadSector() 
#define IDEWriteSector(X)					IDE.CurrentSector=X; _IDEWriteSector() 
 
//IDE接口参数表 
struct IDEStr					  
{ 
	BYTE	TotalDevices;		//驱动器数量 
	BYTE	CurrentDevice;		//当前驱动器 
	DWORD	CurrentSector;		//当前扇区号 
	WORD	BytesPerSec;		//每扇区字节数 
}; 
 
//IDE设备参数表 
struct IDEDeviceStr 
{ 
	BYTE	DriverType;		//驱动器类型 
	DWORD	TotalSectors;		//总扇区数 
}; 
 
//硬盘参数表 
struct HDDStr				//硬盘介质参数表 
{ 
	BYTE	TotalPartitions;	//分区数 
	BYTE	CurrentPartition;	//当前分区 
}; 
#ifndef _LIBRARY_DEFINE 
 xdata BYTE DiskBuffer[512]; 
 
 xdata struct IDEStr IDE; 
 xdata struct IDEDeviceStr IDEDevice[2]; 
 xdata struct HDDStr HDD; 
#endif 
#endif 
 
//磁盘缓冲区 
extern xdata BYTE DiskBuffer[512]; 
 
extern xdata struct IDEStr IDE; 
extern xdata struct IDEDeviceStr IDEDevice[2]; 
extern xdata struct HDDStr HDD; 
 
extern void IDEInit(void); 
extern BYTE IDEIdentifiedDevice(BYTE DeviceNum); 
extern void IDESetCurrentDevice(BYTE DeviceNum); 
extern BYTE IDEReset(BYTE bRestMode); 
extern BOOL IDEStatus(BYTE flag,BYTE wait,BYTE logic,WORD timeout); 
extern void IDEPowerManagement(BYTE cmd); 
extern BYTE _IDEReadSector();			//读一个扇区 
extern BYTE _IDEWriteSector();			//写一个扇区