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

📄 ideio.c

📁 ide编程 采用c++编程 对初学者用出很大
💻 C
字号:
#define _LIBRARY_DEFINE
#include <stdio.h>
#include "..\Inc\AT8xC51SND1.h"
#include "..\Inc\GLOBAL.h"
#include "..\Inc\COMMON.h"
#include "..\Inc\MP3.h"
#include "IDEIO.h"

//IDE设备控制寄存器地址
#define IDE_ADDR_CTRL_STATUS					IDE_ADDR_BASE + IDE_ADDR_CTRL + IDE_IO_DA2 + IDE_IO_DA1
#define IDE_ADDR_CTRL_CONTROL					IDE_ADDR_BASE + IDE_ADDR_CTRL + IDE_IO_DA2 + IDE_IO_DA1

//IDE设备命令寄存器地址
#define IDE_ADDR_CMD_DATA					IDE_ADDR_BASE + IDE_ADDR_CMD
#define IDE_ADDR_CMD_ERROR					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA0
#define IDE_ADDR_CMD_SECCNT					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA1
#define IDE_ADDR_CMD_LBA0					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA1 + IDE_IO_DA0
#define IDE_ADDR_CMD_LBA1					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2
#define IDE_ADDR_CMD_LBA2					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA0
#define IDE_ADDR_CMD_LBA3					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA1
#define IDE_ADDR_CMD_STATUS					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA1 + IDE_IO_DA0
#define IDE_ADDR_CMD_COMMAND					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA1 + IDE_IO_DA0
#define IDE_ADDR_CMD_SECTOR					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA1 + IDE_IO_DA0
#define IDE_ADDR_CMD_CYLMSB					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2
#define IDE_ADDR_CMD_CYLLSB					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA0
#define IDE_ADDR_CMD_HEAD					IDE_ADDR_BASE + IDE_ADDR_CMD + IDE_IO_DA2 + IDE_IO_DA1

//IDE设备状态字
#define IDE_STATUS_BSY						0x80
#define IDE_STATUS_DRDY						0x40
#define IDE_STATUS_DF						0x20
#define IDE_STATUS_DSC						0x10
#define IDE_STATUS_DRQ						0x08
#define IDE_STATUS_CORR						0x04
#define IDE_STATUS_IDX						0x02
#define IDE_STATUS_ERR						0x01

//IDE设备出错标志
#define IDE_ERR_UNC						0x40
#define IDE_ERR_MC						0x20
#define IDE_ERR_IDNF						0x10
#define IDE_ERR_MCR						0x08
#define IDE_ERR_ABRT						0x04
#define IDE_ERR_TK0NF						0x02
#define IDE_ERR_AMNF						0x01

//IDE设备控制标志
#define IDE_CTRL_SRST						0x04
#define IDE_CTRL_nIEN						0x02
#define IDE_CTRL_LBA						0x40
#define IDE_CTRL_DEV						0x10

//IDE设备命令
#define IDE_CMD_RECAL						0x10
#define IDE_CMD_READ						0x20
#define IDE_CMD_WRITE						0x30
#define IDE_CMD_DEVDIAG						0x90
#define IDE_CMD_INIT						0x91
#define IDE_CMD_IDLE_IMMEDIATE					0xE1
#define IDE_CMD_SLEEP						0xE6
#define IDE_CMD_STANDBY						0xE0
#define IDE_CMD_IDENTIFYDEV					0xEC

#define IDE_WAIT						TRUE
#define IDE_NOWAIT						FALSE

//IDE 读写操作
#define IDE_READ_LSB(addr,dat)					dat=*((BYTE xdata *)addr)
#define IDE_READ_MSB(addr)					SET_BIT_6(AUXR),*((BYTE xdata *)addr),CLEAR_BIT_6(AUXR),IDE_PORT_DATMSB
#define IDE_WRITE_LSB(addr,dat)					*((BYTE xdata *)addr)=dat
#define IDE_WRITE_MSB(addr,dat)					IDE_PORT_DATMSB=dat,EXT16=1,*((BYTE xdata *)addr|(dat<<8)),EXT16=0
#define IDE_READ_WORD(addr,lo,hi)				SET_BIT_6(AUXR);lo=*((BYTE xdata *)addr);hi=IDE_PORT_DATMSB;CLEAR_BIT_6(AUXR)
#define IDE_WRITE_WORD(addr,lo,hi)				SET_BIT_6(AUXR);IDE_PORT_DATMSB=hi;*((BYTE xdata *)addr)=lo;CLEAR_BIT_6(AUXR)

⌨️ 快捷键说明

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