微控制器讀寫U盤C程式

2023-02-10 06:39:02 字數 2244 閱讀 4697

/* 這個程式用180行c**就能夠讀取fat16檔案系統u盤的根目錄,可以看到根目錄下的檔案

名,並可顯示

首檔案內容,不過,該程式很不嚴謹,也沒有任何錯誤處理,對u盤相容性較差,只是用於簡單試

驗,作為參考.

這個程式可以支援windows按fat16格式化的u盤,因為程式精簡,所以只相容超過50%以上的u

盤品牌,如果換

成ch375a晶元則相容性可提高到85%,當然,如果使用wch公司的子程式庫或者正式版本的c源

程式相容性更好。

下 歡測試以下u盤通過:郎科/超穩經典64m/超穩迷你128m/u160-64m/超穩普及128m,愛國者/迷

你王16m/郵箱型,

黑匣子/64m,微閃/64m,飆王/32m/64m/128m,晶彩/c200-64m,新科/256m,昂達/128m...,歡迎

提供測試結果

未通過u盤:愛國者/智慧型棒128m,清華普天/usb2.0-128m,當然,使用wch的子程式庫或ch375a

都可以測試通過 */

#include <

#include <

#include < /* 以下定義適用於mcs-51微控制器,其它微控制器參照修改 */

#define uint8 unsigned char

#define uint16 unsigned short

#define uint32 unsigned long

#define uint8x unsigned char xdata

#define uint8vx unsigned char volatile xdata

uint8vx ch375_cmd_port _at_ 0xbdf1; /* ch375命令埠的i/o位址 */

uint8vx ch375_dat_port _at_ 0xbcf0; /* ch375資料埠的i/o位址 */

#define ch375_int_wire int0 /* p3.2, 連線ch375的int#引腳,用於查詢中

斷狀態 */

uint8x disk_buffer[512*32] _at_ 0x0000; /* 外部ram資料緩衝區的起始位址 */

uint32 diskstart; /* 邏輯盤的起始絕對扇區號lba */

uint8 secperclus; /* 邏輯盤的每簇扇區數 */

uint8 rsvdseccnt; /* 邏輯盤的保留扇區數 */

uint16 fatsz16; /* fat16邏輯盤的fat表占用的扇區數 */

硬體usb介面層,無論如何這層省不掉,微控制器總要與ch375介面吧 */

void mdelayms( uint8 delay )

} void ch375_wr_cmd_port( uint8 cmd )

void ch375_wr_dat_port( uint8 dat )

uint8 ch375_rd_dat_port( void )

uint8 mwaitinterrupt( void )

bulkonly傳輸協議層,被ch375內建了,

無需編寫微控制器程式 */

rbc/scsi命令層,雖然被ch375內建了,但是要寫程式發出命令及收發資料

*/ uint8 minitdisk( void )

if ( status != usb_int_success ) return( status ); /* 出現錯誤 */

return( 0 ); /* u盤已經成功初始化 */

} uint8 mreadsector( uint32 ilbastart, uint8 isectorcount, uint8x *odatabuffer )

else break; /* 返回錯誤狀態 */

} if ( mblockcount == 0 )

return( c ); /* 操作失敗 */

} fat檔案系統層,這層程式量實際較大,不過,該程式僅演示極簡單的功能,所

以精簡 */

uint16 mgetpointword( uint8x *iaddr )

uint8 midendisk( void ) { /* 識別分析當前邏輯盤 */

uint8 status;

diskstart = 0; /* 以下是非常簡單的fat檔案系統的分析,正式應用絕對不應該如此簡

單 */

status = mreadsector( 0, 1, disk_buffer ); /* 讀取邏輯盤引導資訊 */

微控制器C程式優化

對程式進行優化,通常是指優化程式 或程式執行速度。優化 和優化速度實際上是乙個予盾的統一。一般是優化了 的尺寸,就會帶來執行時間的增加 如果優化了程式的執行速度,通常會帶來 增加的 很難魚與熊掌兼得,只能在設計時掌握乙個平衡點。一 程式結構的優化 1 程式的書寫結構 雖然書寫格式並不會影響生成的 質...

微控制器程式詳解

微控制器程式詳解.txt 根網線 盡賺了多少人的青春 有時候感動的就是身邊微不足道的小事。破碎不是最殘酷的最殘酷的是踩著這些碎片卻假裝不疼痛固執的尋找 將來就算我遇見再怎麼完美的人,都有乙個缺點,他不是你,下輩子要做男生,娶乙個像我這樣的女生。程式詳解 程式清單 共陽數碼管加減顯示 sp1 bit ...

51微控制器的C語言程式結構

預處理命令 include 子函式 void delay void 主函式 void main void 2 c語言是由函式構成的,乙個c語言程式可以包含多個函式,但是有且只能有乙個主函式 函式名為main 主函式沒有返回值和引數 void main void c語言程式的執行總是從主函式main開...