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

📄 ide.h

📁 增加了USB下载文件功能;汉字LCD显示功能;子文件夹功能等。并对软件做了一些修改。 现在情况如下: 支持FAT32
💻 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 + -