基于單片機的IDE硬盤控制的研究與設(shè)計
讀周期(ide_rd):
ide_rd:
push acc
mov dptr, #cfg8255
mov a, #rd_ide_8255
movx @dptr, a ;配置8255的 工作方式為讀模式
mov dptr, #ide_8255_ctl
pop acc
movx @dptr, a ;選中所需寄存器
orl a, #ide_rd_line
movx @dptr, a ;使能讀引腳
mov dptr, #ide_8255_msb
clr a
movc a, @a+dptr ;讀寄存器高字節(jié)
mov r3,a
mov dptr, #ide_8255_lsb
clr a
movc a,@a+dptr ;讀寄存器低字節(jié)
mov r2, a
mov dptr, #ide_8255_ctl
clr a
movx @dptr, a ;將控制端口復(fù)位
ret ;子程序返回
寫周期(ide_wr):
寫周期與讀周期類似,首先將8255配置為寫模式,選中所所要操作寄存器,將寄存器高8位和低8位數(shù)據(jù)分別送到端口A、B,激活IDE總線的寫信號;寫完畢,通過復(fù)位端口的相應(yīng)位清除IDE總線的寫信號。
3.5錯誤處理操作
在對硬盤讀寫操作時,需要查詢狀態(tài)寄存器的ERR位,判斷是否有錯。若有錯,查詢IDE的錯誤寄存器,判斷錯誤類型,進行相應(yīng)的錯誤處理:在寫扇區(qū)操作中,當(dāng)檢測到壞扇區(qū)(BBK)錯誤時,跳過并標(biāo)記壞扇區(qū),重新分配扇區(qū);在讀寫操作中,如果沒有發(fā)現(xiàn)0磁道,將調(diào)用驅(qū)動器重校命令來使驅(qū)動器從錯誤中恢復(fù)出來;在讀扇區(qū)過程中,若發(fā)生錯誤,驅(qū)動器將重讀出錯扇區(qū),若仍有錯誤,操作將被終止。
4. 結(jié)束語
本系統(tǒng)提出了一種單片機控制硬盤的方法,能夠比較簡潔方便對硬盤進行讀寫等操作,并成功的應(yīng)用實際產(chǎn)品中,具有良好的可靠性和穩(wěn)定性,可以應(yīng)用到許多要求大容量數(shù)據(jù)存儲的系統(tǒng)中,并可取得了良好的社會效益。
參考文獻
[1]. 李華 MCS—51系列單片機實用接口技術(shù)[M] 北京 北京航空航天大學(xué)出版社 1993 P98-120
[2]. 陳利學(xué) 孫彪 趙玉連 微機總線與接口設(shè)計[M] 成都 電子科技大學(xué)出版社 1988 P45-90
[3].AT Attachment with Packet Interface Extension (ATA/ATAPI-5) ANSI NCITS 1998 P317
[4].Maury Wright. Disk Drivers at 40 Lean . Mean Storage Machines .1996 P41
[5]. 徐厚俊 IDE接口和IDE硬盤驅(qū)動器 新浪潮 1996 P17
評論