⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ideio.h

📁 51单片机外挂USB、IDE、MP3、LCD的源码
💻 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();			//写一个扇区

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -