📄 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(); //写一个扇区
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -