?? 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 + -