📄 idebase.c
字号:
#include "c51core.h"
#include "compiler.h"
#include "extreg.h"
#include "externalbuffer.h"
uchar STATUS;//用于存放来自硬盘除数据寄存器之外的寄存器数据
uchar DATAH,DATAL;//用于存放硬盘的16位数据
sbit ARST=P5^3;//硬盘复位信号
sbit INTQ=P5^1;//硬盘中断信号
///////////////////位设置///////////////////////////
sbit BFLAG=ACC^7;
sbit BSY=ACC^7;
sbit DRDY=ACC^6;
sbit DRQ=ACC^3;
sbit ERR=ACC^0;
/************************************************************
* D7 D6 D5 D4 D3 D2 D1 D0 *
BSY DRDY DWF DSC DRQ CORR IDX ERR *
BSY:驱动器忙; *
DRDY:驱动器准备好; *
DWF:驱动器写失败; *
DSC:寻道结束; *
DRQ:请求服务,驱动器希望通过数据寄存器与CPU交换一字节数据;*
CORR:当可以纠正的读错误发生时,该位置1,数据传输将继续进行 *
IDX:收到综引信号; *
ERR:命令执行出错。 *
*************************************************************/
/*读普通寄存器内容*/
void ReadReg(uchar FILE)
{ACC=FILE;
STATUS=ACC;
}
/*写普通寄存器内容*/
void WriteReg(uchar FILE,uchar DATA)
{FILE=DATA;}
/*读数据寄存器16位数据*/
void ReadData(void)
{DATAL=FILE0;
DATAH=DAT16H;
}
/*写数据寄存器16位数据*/
void WriteData(DATAH,DATAL)
{DAT16H=DATAH;
FILE0=DATAL;
}
/*写命令*/
WriteCommand(uchar command)
{do{ReadReg(FILE7);}while(BSY);
WriteReg(FILE7,command);
}
/**********************************************************
*函数名称:GetData() *
*用途:将硬盘的返回数据读入BUFFER数组 *
***********************************************************/
void GetData()
{uint i=0;
do{ReadReg(FILE7);}while(BSY|!DRQ);
if(ERR){;//
}
while(i<512){ReadData();
HddBuffer1[i++]=DATAL;
HddBuffer1[i++]=DATAH;
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -