亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來(lái)到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關(guān)于我們
? 蟲蟲下載站

?? ata.c

?? 硬盤控制電路以及原程序Demo,知識(shí)是屬于全人類的。能將自己的成果無(wú)條件與人共享是偉大和受人尊敬的
?? C
字號(hào):
/*
硬盤控制電路以及原程序Demo
【浩惠電子 http://www.hheet.com/bbs 版權(quán)所有】 附件: 

知識(shí)是屬于全人類的。能將自己的成果無(wú)條件與人共享是偉大和受人尊敬的,同時(shí)也是一件幸福的事。
由于我想得到幸福和受人尊敬,所以我也開放我的工作成果。(其實(shí)也不算什么工作成果,匆匆忙忙用了一晚寫的,見笑了。
在此感謝邵春偉同志,我在研究ata協(xié)議的時(shí)候參考了他寫的程序) 

相信很多人都想用單片機(jī)控制硬盤來(lái)實(shí)現(xiàn)數(shù)據(jù)的海量?jī)?chǔ)存和開發(fā)一些東西(如硬盤mp3),但網(wǎng)上關(guān)于此方面的資料不多,
而真正給出原代碼和電路的更是鳳毛麟角,而且就算給出原程序,但不知是因?yàn)槭鞘д`或是本身還未理解好ata協(xié)議,
抑或是出于對(duì)知識(shí)產(chǎn)權(quán)的保護(hù)問(wèn)題,程序中有著或大或少的錯(cuò)誤。本程序只是一個(gè)演示,還不是很完善,
只是給你開發(fā)ata程序作一個(gè)參考,但我保證絕對(duì)可以使用。當(dāng)然你可以修改和擴(kuò)充一下,變成一個(gè)完善的ata驅(qū)動(dòng)程序。 

特征與使用 
程序中所有與單片機(jī)本身硬件有關(guān)的參數(shù)都在程序開始處作出定義,移植到其他類型單片機(jī)時(shí)只需修改一下引腳定義就行了。
使用時(shí)注意根據(jù)你的硬盤修改一下相應(yīng)的參數(shù)(在程序中有注解)。 

使用步驟與運(yùn)行效果 
連接好電路(很簡(jiǎn)單),在把程序燒進(jìn)芯片。
先接通硬盤電源,再打開任意一個(gè)串口調(diào)試程序,把波特率設(shè)置成57600bps,再運(yùn)行單片機(jī)即可。
效果與下: 
此主題相關(guān)圖片如下: 


電路圖: 


此主題相關(guān)圖片如下: 


源程序: 
*/
#include <at89x51.h> 



/************************************************** 
* HardDisk Control Demo 
* Power BY DDDLZHU 
* 編譯環(huán)境 : KEIL C51 V7.07 支持器件 : AT89C51 
* COPYRIGHT (C) 2004 



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




#define byte unsigned char 
#define uint unsigned int 
/************************************************* 
//線路連接定義。如電路有變直接修改就可以了 
*************************************************/ 



#define DataH P1 
#define DataL P0 
#define RegAddr P2 
#define Read P3_4 
#define Write P3_3 
#define Rst P3_2 



/************************************************* 
//線路連接定義。如電路有變直接修改就可以了 
*************************************************/ 



//寄存器地址定義 
#define _Status_Control 0x16 
#define _Data 0x8 
#define _Err_Features 0x9 
#define _SecCount 0xa 
#define _SecNum 0xb 
#define _CylinderL 0xc 
#define _CylinderH 0xd 
#define _DeviceAndHead 0xe 
#define _Status_Command 0xf 




//**************************************************************************************/ 
/*這里為初始化硬盤的重要參數(shù),每個(gè)硬盤的參數(shù)都不盡相同。若不正確則讀不了盤中的數(shù)據(jù)。計(jì)算方法如下: 
先看清楚你的 硬盤表面標(biāo)簽中的數(shù)據(jù),里面有三個(gè)重要參數(shù): 
1。柱面數(shù)(Cylinder) 
2。磁頭數(shù)(Head) 
3。磁道數(shù)(Sector) 
其中 _MaxHead=0xA+Head 
_MaxSector=Sector 
例如我的130M硬盤(很老吧,哈哈),磁頭數(shù)為15,十六進(jìn)制為0xf,所以_MaxHead=0xAF,磁道數(shù)為17,所以_MaxSector=0x11 
*/ 
#define _MaxHead 0xAF 
#define _MaxSector 0x11 




//************************************************************************************ 
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 D2 D1 D0 * 
BSY DRDY DWF DSC DRQ CORR IDX ERR * 
BSY:驅(qū)動(dòng)器忙; * 
DRDY:驅(qū)動(dòng)器準(zhǔn)備好; * 
DWF:驅(qū)動(dòng)器寫失敗; * 
DSC:尋道結(jié)束; * 
DRQ:請(qǐng)求服務(wù),驅(qū)動(dòng)器希望通過(guò)數(shù)據(jù)寄存器與CPU交換一字節(jié)數(shù)據(jù);* 
CORR:當(dāng)可以糾正的讀錯(cuò)誤發(fā)生時(shí),該位置1,數(shù)據(jù)傳輸將繼續(xù)進(jìn)行 * 
IDX:收到綜引信號(hào); * 
ERR:命令執(zhí)行出錯(cuò)。 * 
*************************************************************/ 



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 





/******************************************************* 
:延遲函數(shù) 
********************************************************/ 
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信號(hào) 
********************************************************/ 
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; 
} 



/******************************************************* 
讀數(shù)據(jù)儲(chǔ)存器中數(shù)據(jù) 
********************************************************/ 
void ReadData(void) 
{ 
DataH=0xff; 
DataL=0xff; 



RegAddr=_Data; 



Read=0; 
Data_bufferL=DataL; 



Data_bufferH=DataH; 
Read=1; 
} 



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



寫數(shù)據(jù)寄存器中數(shù)據(jù) 
********************************************************/ 
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); 
WriteReg(_DeviceAndHead,_MaxHead); 
WriteReg(_SecCount,_MaxSector); 
WriteReg(_Status_Command,0x91); 
WaitBSY(); 
WriteReg(_Status_Command,0x10); 
WaitBSY(); 
} 




/********************************************************** 
讀硬盤參數(shù) 
***********************************************************/ 
void DriverID(void) 
{ 
unsigned int i=512; 
//send_string("Starting read driver ID\n"); 
WaitBSY(); 
//send_string("Now can read driver ID \n"); 
WriteReg(_Status_Command,0xec); 
//send_string("Waiting.. "); 
do{ReadReg(_Status_Command);}while(BSY|!DRQ); 
//send_string("Now Sending \n"); 
while(i){ 
ReadData(); 



send_char(Data_bufferH); 
send_char(Data_bufferL); 
i-=2; 
} 
} 




/********************************************************* 
硬盤尋址 
**********************************************************/ 
WriteCHS(byte head,uint cylinder,byte sector,byte read_count) 
{ 
WaitBSY(); 
WriteReg(_DeviceAndHead,0xa0|head); 
WriteReg(_CylinderH,(char)(cylinder>>8)); 
WriteReg(_CylinderL,(char)(cylinder&0x00ff)); 
WriteReg(_SecNum,sector); 
WriteReg(_SecCount,read_count); 



} 



/********************************************************** 
*用途:將硬盤的返回?cái)?shù)據(jù)讀入BUFFER數(shù)組 * 
***********************************************************/ 
void SendData() 
{ uint i; 
i=512*15; 
do{ReadReg(_Status_Command);}while(BSY|!DRQ); 
if(ERR){ 
send_string("\x0d\x0a Error\x0d\x0a"); 
} 
while(i){ReadData();send_char(Data_bufferL);send_char(Data_bufferH);i-=2;} 
} 



// 激活硬盤(轉(zhuǎn)動(dòng)) 
void SpinUP() 
{ 
WaitBSY(); 
WriteReg(_Status_Command,0xE1); 



} 
// 讓硬盤休眠(停轉(zhuǎn))/ 
void SpinDown() 
{ 
WaitBSY(); 
WriteReg(_Status_Command,0xE0); 



} 




void main(void) 
{ 
//Initialize 
SCON=0x50; //串口初始化 
TMOD=0x20; //波特率為57600bps 
TCON=0x40; 
PCON=0x80; 
TH1=0xFf; 
TL1=0xFf; 

TR1=1; 
send_string("IDE Control Demo. Power By DDDLZHU\x0d\x0a");//send welcome word 



Rst=0; //IDE 復(fù)位 
delay(50); 
Rst=1; 
delay(255); 



send_string("Reset Driver OK...\x0d\x0a"); 
Init(); //初始化硬盤 
send_string("Initialize Driver OK,Now Read ID\x0d\x0a"); 
send_string("HardDisk ID is ....\x0d\x0a"); 
DriverID(); //讀硬盤id 
send_string("\n\nNow Read The First Sector On this HardDisk\x0d\x0a\x0d\x0a"); 
delay(244); 
delay(244); 
delay(244); 
delay(244); 
WriteCHS(0,0,1,16); //寫地址 
WaitBSY(); 



WriteReg(_Status_Command,0x20); //發(fā)送讀命令 
SendData(); 
send_string("\x0d\x0a\x0d\x0a Read OK,Now Shut Down The HardDisk..\x0d\x0a"); 
SpinDown(); //硬盤停轉(zhuǎn) 
while(1); 
} 






//**************************************串口子程序 
void send_char(unsigned char word) 
{ 
TI=0; 
SBUF=word; 
while(TI==0); 
TI=0; 




} 



void send_string(unsigned char *word) 
{ 
TI=0; 
while(*word!=0) 
{ 



SBUF=*word; 
while(TI==0); 
TI=0; 
word++; 
} 



} 



unsigned char get_char(void) 
{ 
RI=0; 
REN=1; 



while(RI==0); 
return(SBUF); 
RI=0; 
REN=0; 




} 




//88888888888888888888888888888888888888888 

?? 快捷鍵說(shuō)明

復(fù)制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號(hào) Ctrl + =
減小字號(hào) Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
国产三级久久久| 日韩精品三区四区| 91精品国产综合久久久久| 成人激情免费网站| 国产传媒久久文化传媒| 极品少妇一区二区三区精品视频 | 在线视频国内一区二区| 成人免费高清视频在线观看| 国产91精品入口| 国产91在线观看| av动漫一区二区| 91麻豆精品一区二区三区| 91麻豆精品一区二区三区| 欧美中文字幕一区二区三区亚洲| 91天堂素人约啪| 欧美综合天天夜夜久久| 欧美性高清videossexo| 日韩三级电影网址| 久久久久国产精品人| 国产精品伦一区二区三级视频| 国产精品三级电影| 亚洲三级久久久| 亚洲成人一区在线| 久久精品国产亚洲高清剧情介绍| 国产自产高清不卡| 成人18视频在线播放| 色天使久久综合网天天| 欧美一区二区三区播放老司机 | 九色综合狠狠综合久久| 激情欧美一区二区| av一区二区三区黑人| 欧美亚洲国产一区二区三区va| 日韩一级完整毛片| 国产精品福利影院| 日韩国产精品久久久久久亚洲| 成人在线综合网| 欧美午夜一区二区三区免费大片| 日韩精品一区国产麻豆| 亚洲日本一区二区三区| 蜜桃一区二区三区四区| 91在线精品秘密一区二区| 91精品国产一区二区三区| 国产精品久久久久三级| 日韩国产精品久久久| www.视频一区| 欧美成人精品3d动漫h| 国产精品久久久久久户外露出| 三级一区在线视频先锋| 91在线视频在线| 精品国精品自拍自在线| 亚洲国产你懂的| 成人h动漫精品一区二| 91精品国产高清一区二区三区蜜臀| 欧美激情综合在线| 老司机免费视频一区二区三区| 99精品国产一区二区三区不卡| 精品欧美乱码久久久久久 | 欧美写真视频网站| 国产精品网站导航| 国产在线播放一区二区三区| 欧美男女性生活在线直播观看| 国产精品久久久久久久久果冻传媒| 免费在线成人网| 欧美日韩一区在线| 亚洲欧美日韩中文字幕一区二区三区| 国产酒店精品激情| 日韩一区二区三区在线| 午夜婷婷国产麻豆精品| 日本精品视频一区二区三区| 中文字幕日韩欧美一区二区三区| 国产一区二区三区| 久久久精品2019中文字幕之3| 久久精品国产一区二区| 欧美www视频| 美女被吸乳得到大胸91| 日韩一区二区三区在线| 免费av成人在线| 日韩视频一区二区| 毛片av一区二区| 91麻豆精东视频| 91精品国产综合久久国产大片| 欧美性极品少妇| 欧美成人vr18sexvr| 久久综合国产精品| 亚洲欧美视频在线观看视频| kk眼镜猥琐国模调教系列一区二区 | 免费成人在线观看视频| 欧美日韩一区 二区 三区 久久精品| 亚洲毛片av在线| 欧美影视一区在线| 天天综合网天天综合色| 欧美一区二区播放| 国产精品99久久久久久久vr| 国产亚洲1区2区3区| 成人国产亚洲欧美成人综合网 | 3atv一区二区三区| 乱一区二区av| 久久综合九色综合久久久精品综合| 精品一区二区三区免费毛片爱| 日韩美女一区二区三区| 国产成人无遮挡在线视频| 国产精品久久久久久久久动漫| 色综合天天性综合| 婷婷久久综合九色综合伊人色| 久草热8精品视频在线观看| 成人国产精品免费| 久久精品一区蜜桃臀影院| 高清国产一区二区| 亚洲精品国产一区二区三区四区在线| 在线观看91视频| 日本欧美加勒比视频| 久久久精品国产免费观看同学| 91在线精品一区二区三区| 免费在线观看不卡| 国产精品夫妻自拍| 日本一区二区免费在线| 欧美视频精品在线观看| 蜜臀va亚洲va欧美va天堂 | 亚洲丝袜自拍清纯另类| 欧美亚洲国产一区二区三区va| 精品一区二区在线视频| 亚洲乱码中文字幕综合| 亚洲精品一区二区在线观看| 99精品久久免费看蜜臀剧情介绍| 秋霞影院一区二区| 中文字幕一区免费在线观看| 欧美一级片在线看| 色香蕉成人二区免费| 国产麻豆成人精品| 偷拍亚洲欧洲综合| 自拍偷拍亚洲激情| wwwwww.欧美系列| 7777精品久久久大香线蕉| 成人精品免费网站| 狠狠色狠狠色综合| 日韩电影一二三区| 亚洲国产中文字幕| 自拍偷拍亚洲综合| 国产精品久久久久aaaa| 2020国产精品| 日韩一级视频免费观看在线| 欧美日韩国产另类一区| 99久久精品国产导航| 国产精品18久久久| 久久电影国产免费久久电影| 亚洲观看高清完整版在线观看| 亚洲欧洲另类国产综合| 国产日韩欧美综合一区| 精品欧美乱码久久久久久1区2区| 884aa四虎影成人精品一区| 91免费观看国产| 91色九色蝌蚪| gogogo免费视频观看亚洲一| 懂色av一区二区三区蜜臀| 国产自产视频一区二区三区 | 欧美成人video| 日韩精品综合一本久道在线视频| 3d成人h动漫网站入口| 欧美一区二视频| 91精品婷婷国产综合久久竹菊| 欧美日韩免费一区二区三区| 在线视频欧美区| 欧美三级一区二区| 69堂精品视频| 欧美一区二区二区| 久久久久久久久久久久久夜| www久久精品| 国产精品―色哟哟| 亚洲欧美国产77777| 亚洲黄一区二区三区| 亚洲成av人片| 久草在线在线精品观看| 国产成人亚洲精品青草天美| 99国产精品国产精品毛片| 在线免费精品视频| 91精品中文字幕一区二区三区| 日韩欧美色综合网站| 久久久影院官网| 亚洲免费观看在线视频| 亚洲成a天堂v人片| 韩国中文字幕2020精品| 99在线视频精品| 精品视频色一区| 久久夜色精品国产噜噜av | 91老司机福利 在线| 欧美精品第一页| 久久久久久亚洲综合影院红桃| 亚洲日本中文字幕区| 日韩福利电影在线| 丁香激情综合五月| 欧美视频一区在线| 久久精品亚洲精品国产欧美 | 欧美日韩高清影院| 欧美精品一区二区三区一线天视频| 久久精品视频免费观看| 亚洲精品视频免费观看| 国内精品久久久久影院色| 91国偷自产一区二区开放时间 | 国产婷婷色一区二区三区四区| 亚洲美女淫视频|