📄 ide.h
字号:
/************************************************************************************
本程序仅供广大电子爱好者制作MP3学习和参考使用,不得用于其它用途,否则后果自负
IDE.H File
IDE address and command
Created by Computer-lov. Date: 2005.3.12
Last edited date: 2005.5.31
version 1.1
Copyright (c) 2005 Computer-lov
All rigths reserved
*************************************************************************************/
#ifndef __IDE_H__
#define __IDE_H__
void delayXms(unsigned int);
void reset_IDE(void);
//void read_IDE_16(unsigned char);
//void write_IDE_16(unsigned char);
unsigned char read_IDE_8(unsigned char);
void write_IDE_8(unsigned char,unsigned char);
//void read_IDE_word(void);
//void write_IDE_word(void);
void read_IDE_status(void);
void read_IDE_error(void);
unsigned char wait_IDE_busy(void);
void write_IDE_command(unsigned char);
//void soft_reset_IDE(void);
void get_IDE_infromation(void);
void write_IDE_sector_count(unsigned char);
//void read_IDE_buffer(void);
//void write_IDE_buffer(void);
void read_IDE_sector(unsigned long int);
void write_IDE_sector(unsigned long int);
void IDE_initial(void);
void write_IDE_LBA(unsigned long int);
void read_IDE_FAT_sector(unsigned long int);
extern unsigned char IDE_Buffer_L,IDE_Buffer_H;
extern unsigned char DISK_CAPACITY[8];
typedef struct
{
unsigned char file_system_type;
unsigned long int start_sector;
unsigned long int total_sectors;
}DPT,*pDPT;
typedef struct
{
unsigned int bytes_per_sectors; //扇区字节数 偏移地址: 0x0B
unsigned char sectors_per_cluster;//每簇扇区数 偏移地址: 0x0D
unsigned int reserve_sectors; //保留扇区数 偏移地址: 0x0E
unsigned char num_of_FAT; //FAT副本数 偏移地址: 0x10
unsigned int FAT16_ROOT_num; //根目录项数,只被FAT12/16使用,FAT32该字段必须为0 偏移地址: 0x11
unsigned int small_sectors; //小扇区数,只被FAT12/16使用,FAT32该字段必须为0 偏移地址: 0x13
unsigned int sectors_per_FAT16; //每FAT扇区数,只被FAT12/16使用,FAT32该字段必须为0 偏移地址: 0x16
unsigned long int hidden_sectors; //隐藏扇区数 偏移地址: 0x1C
unsigned long int large_sectors; //总扇区数,该分区中FAT32的扇区数 偏移地址: 0x20
unsigned long int sectors_per_FAT32; //每FAT扇区数,只被FAT32使用 偏移地址: 0x24
unsigned long int root_cluster_num; //根目录簇号 偏移地址: 0x2C
}DBR,*pDBR;
extern DPT xdata dpt[4]; //磁盘分区表
extern DBR xdata dbr[4]; //DOS引导记录
extern unsigned char xdata buffer[512]; //扇区缓冲
extern unsigned char xdata FAT_buffer[512]; //FAT表项缓冲区,用来加快读盘速度
extern unsigned int play_count;
extern unsigned char mp3_file_exist;
extern unsigned int byte_offset;
extern unsigned long int xdata FAT_start_sector[4]; //FAT开始扇区
extern unsigned long int xdata DATA_start_sector[4]; //数据区开始扇区
#define set_IDE_address() IDE_ALE=1;IDE_ALE=0;
extern unsigned char driver_number; //磁盘驱动器
#define C_ 0 //磁盘驱动器,目前版本只支持最多四个逻辑分区
#define D_ 1
#define E_ 2
#define F_ 3
#define IDE_Bus_Not_Use 0x98
#define IDE_Alternate_Status 0x8E
#define IDE_Device_Control 0x8E
#define IDE_Drive_Address 0x8F
#define IDE_Data 0x90
#define IDE_Error_Register 0x91
#define IDE_Features 0x91
#define IDE_Sector_Count 0x92
#define IDE_Sector_Nuber 0x93
#define IDE_LBA_Bits_0_7 0x93
#define IDE_Cylinder_Low 0x94
#define IDE_LBA_Bits_8_15 0x94
#define IDE_Cylinder_High 0x95
#define IDE_LBA_Bits_16_23 0x95
#define IDE_Drive_Head 0x96
#define IDE_LBA_Bits_24_27 0x96
#define IDE_Status 0x97
#define IDE_Command 0x97
#define IDE_Reset 0x18
#define IDE_Acknowledge_Media_Change 0xDB
#define IDE_Boot_Post_Boot 0xDC
#define IDE_Boot_Pre_Boot 0xDD
#define IDE_Check_Power_Mode 0x98E5
#define IDE_Door_Lock 0xDE
#define IDE_Door_Unlock 0xDF
#define IDE_Execute_Drive_Diagnostic 0x90
#define IDE_Format_Track 0x50
#define IDE_Identify_Drive 0xEC
#define IDE_Idle 0x97E3
#define IDE_Idle_Immediate 0x95E1
#define IDE_Initialize_Drive_parameters 0x91
#define IDE_NOP 0x00
#define IDE_Read_Buffer 0xE4
#define IDE_Read_DMA 0xC8
#define IDE_Read_DMA_o 0xC9
#define IDE_Read_Long 0x22
#define IDE_Read_Long_o 0x23
#define IDE_Read_Multiple 0xC4
#define IDE_Read_Sectors 0x20
#define IDE_Read_Sectors_o 0x21
#define IDE_Read_Verify_Sectors 0x40
#define IDE_Read_Verify_Sectors_o 0x41
#define IDE_Recalibrate 0x10
#define IDE_Seek 0x70
#define IDE_Set_Features 0xEF
#define IDE_Set_Multiple_Mode 0x96
#define IDE_Sleep 0x99E6
#define IDE_Standby 0x96E2
#define IDE_Standby_Immediate 0x94E0
#define IDE_Write_Buffer 0xE8
#define IDE_Write_DMA 0xCA
#define IDE_Write_DMA_o 0xCB
#define IDE_Write_Long 0x32
#define IDE_Write_Long_o 0x33
#define IDE_Write_Multiple 0xC5
#define IDE_Write_Same 0xE9
#define IDE_Write_Sectors 0x30
#define IDE_Write_Sectors_o 0x31
#define IDE_Write_Verify 0x3C
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -