![]() |
文件的結束符在FATl2下為0xFFF,在FATl6下為0xFFFF,在FAT32下為0x0FFFFFFF。如果在寫入時遇到損壞的簇,則在對應位置寫損壞的標志(FATl2下為0xFF5FATl6下為0xFFF7,FAT32下為0x0FFFFFF7),并且在{表中跳過這一損壞的簇。在刪除一個文件時,要把該文{在FAT區(qū)的鏈表全部寫'0',釋放空間。這樣,該鏈表中所對應的數(shù)據(jù)區(qū)又可以被新的文件分配。 一個FAT的目錄項或文件項通常占用32字節(jié),并存儲該目錄或文件的相關信息。其數(shù)據(jù)結構如下:
這個數(shù)據(jù)結構中12字節(jié)的名字是目錄名還是文件名,由成員Attr決定。如果是目錄Attr可設為10H;如果j文件,Attr可設為20H,也可以是幾個屬性的組合;如果為長文件名,Attr可設為OFH。有關詳細的長文件名可參見文獻[3]。
成員FstClusHI和FstClusL0記錄了文件第一簇數(shù)據(jù)對應FAT中的記錄序號,即圖3中第一簇的序號,從而可以根據(jù)鏈表查找下一簇數(shù)據(jù)。在FATl2和FATl6下,成員FstClusHI總為'0'。
4 討論
本文只介紹了動態(tài)腦電圖系統(tǒng)的有關文件存儲的部分,C8051F020的功能并沒有得到充分利用。實際上C8051F020還要完成系統(tǒng)的其他很多功能。用戶可以根據(jù)自己系統(tǒng)的實際需要選擇合適的單片機。本系統(tǒng)在設計時著重考慮系統(tǒng)的功耗、體積、速度等方面的因素,所以C8051F020采用非復用的方式,以求節(jié)省1片鎖存器對低位地址的鎖存。
CF卡在寫入文件時,由于要記錄24小時的腦電圖信號。為了防止異常發(fā)生使文件寫入失敗,可以定時地更新FAT區(qū)該文件的記錄鏈表和所存放文件數(shù)據(jù)結構的根目錄區(qū)或數(shù)據(jù)區(qū)中該文件的大小。只有保存了這些信息,所寫入的數(shù)據(jù)才能正常地讀取。 此外,在寫入文件時,如果遇到一個扇區(qū)寫入失敗,則整個簇都不能用。為此:(1)必須查找下一個未占用的簇,再把這一簇中已經(jīng)正確寫入的扇區(qū)中的數(shù)據(jù)復制到下一簇中。這樣緩沖區(qū)中只要保存一個扇區(qū)的腦電信號就可以。(2)先對這一簇進行檢測,確定沒有錯誤后再向該簇寫人數(shù)據(jù)。這種方法雖然比較簡單,但占用系統(tǒng)的時間比較多,且在檢測到?jīng)]有錯誤后也不能完全保證下一次寫入時不發(fā)生錯誤。所以第一種方法的可靠性要高。
實驗證明,SanDisk和EagleTec等公司的不同容量的CF卡用于本系統(tǒng)中都能夠正確地對采集到的腦電圖信號進行存取。






