硬盘控制电路以及原程序

[10-10 20:38:44]   来源:http://www.88dzw.com  微机|单片机   阅读:8936

文章摘要://byte bdata Status=0x00;sbit ERR=Status^0;sbit IDX=Status^1;sbit CORR=Status^2;sbit DRQ=Status^3;sbit DSC=Status^4;sbit DF=Status^5;sbit DRDY=Status^6;sbit BSY=Status^7;/* D7 D6 D5 D4 D3 D2D1 D0*BSYDRDYDWFDSC DRQCORRIDX ERR *BSY:驱动器忙; *DRDY:驱动器准备好;*DWF:驱动器写失败; *DSC:寻道结束;*DRQ:请求服务,驱动器希望通过数据寄存器与CPU交换

硬盘控制电路以及原程序,标签:电路设计,http://www.88dzw.com

//************************************************************************************

byte bdata Status=0x00;

sbit ERR=Status^0;

sbit IDX=Status^1;

sbit CORR=Status^2;

sbit DRQ=Status^3;

sbit DSC=Status^4;

sbit DF=Status^5;

sbit DRDY=Status^6;

sbit BSY=Status^7;

/************************************************************

* D7 D6 D5 D4 D3 D2D1 D0*

BSYDRDYDWFDSC DRQCORRIDX ERR *

BSY:驱动器忙; *

DRDY:驱动器准备好;*

DWF:驱动器写失败; *

DSC:寻道结束;*

DRQ:请求服务,驱动器希望通过数据寄存器与CPU交换一字节数据;*

CORR:当可以纠正的读错误发生时,该位置1,数据传输将继续进行 *

IDX:收到综引信号; *

ERR:命令执行出错。 *

*************************************************************/

byte Data_bufferH=0x0;

byte Data_bufferL=0x0;

//***************串口子程序

void send_string(unsigned char *word);

void send_char(unsigned char word);

unsigned char get_char(void);

//8888888888888888888888

/*******************************************************

:延迟函数

********************************************************/

void delay(byte ms)

{ byte i,j;

for(i=0;i<ms;i )

for(j=0;j<255;j );

}

/*******************************************************

*读寄存器

********************************************************/

byte ReadReg(byte Addr)

{

RegAddr=Addr;

DataL=0xff;

Read=0;

Status=DataL;

Read=1;

return Status;

}

/*******************************************************

*等待BSY信号

********************************************************/

byte WaitBSY(void)

{

byte timeOut=0;

do{

ReadReg(_Status_Command);

timeOut ;

//if(timeOut>=254) return(0xff);

}while(BSY);

return(1);

}

/*****************************************************

*写寄存器值

********************************************************/

void WriteReg(byte Addr,byte Data)

{

RegAddr=Addr;

Write=0;

DataL=Data;

Write=1;

}

/*******************************************************

读数据储存器中数据

********************************************************/

void ReadData(void)

{

DataH=0xff;

DataL=0xff;

RegAddr=_Data;

Read=0;

Data_bufferL=DataL;

Data_bufferH=DataH;

Read=1;

}

/*******************************************************

写数据寄存器中数据

********************************************************/

void WriteData(void)

{

RegAddr=_Data;

Write=0;

DataL=Data_bufferL;

DataH=Data_bufferH;

Write=1;

}

/**********************************************************

初始化硬盘*

***********************************************************/

void Init(void)

{ do{

WriteReg(_DeviceAndHead,0xa0);

ReadReg(_Status_Command);

}while(!DRDY|BSY);

上一页  [1] [2] [3] [4]  下一页


Tag:微机|单片机电路设计家电维修 - 单元电路介绍 - 微机|单片机

《硬盘控制电路以及原程序》相关文章