CH375芯片在查詢U盤大小時,需不需要中斷函數(shù)?需要的話,中斷函數(shù)怎么寫? [Emot]1[/Emot]
需要中斷,中斷里面只發(fā)送讀取中斷狀態(tài)的命令,別的不需要發(fā)送
要的!!
能不能發(fā)個例子程序過來參考參考,麻煩了!!
UINT8 mWaitInterrupt( void ) { /* 等待CH375中斷并獲取狀態(tài),主機端等待操作完成,返回操作狀態(tài) */ while( CH375_INT_WIRE ); /* 查詢等待CH375操作完成中斷(INT#低電平) */ CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷,獲取中斷狀態(tài) */ return( CH375_RD_DAT_PORT( ) ); }
UINT8 mInitDisk( void ) { /* 初始化磁盤 */ UINT8 Status,i,j=0; CH375_WR_CMD_PORT( CMD_GET_STATUS ); /* 產(chǎn)生操作完成中斷, 獲取中斷狀態(tài) */ Status = CH375_RD_DAT_PORT( ); if ( Status == USB_INT_DISCONNECT ) return( Status ); /* USB設(shè)備斷開 */ CH375_WR_CMD_PORT( CMD_DISK_INIT ); /* 初始化USB存儲器 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status != USB_INT_SUCCESS ) return( Status ); /* 出現(xiàn)錯誤 */ while(1){j++; CH375_WR_CMD_PORT( CMD_DISK_SIZE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ mDelaymS( 250 ); if(j==5) return(Status); } CH375_WR_CMD_PORT( CMD_DISK_R_SENSE ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ){ /* 出現(xiàn)錯誤 */ for(i=0;i!=5;i++){ printf("Ready\n"); CH375_WR_CMD_PORT( CMD_DISK_READY ); /* 獲取USB存儲器的容量 */ Status = mWaitInterrupt( ); /* 等待中斷并獲取狀態(tài) */ if ( Status == USB_INT_SUCCESS ) break; /* 出現(xiàn)錯誤 */ } } return( 0 ); /* U盤已經(jīng)成功初始化 */ }
CH375_WR_CMD_PORT CH375_RD_DAT_PORT 指的是什么?
我也想知道!!請問沁恒工程師??
就是操作375的讀寫子函數(shù).例如: void CH375_WR_CMD_PORT( unsigned char cmd ) { delay2us(); CH375_CMD_PORT=cmd; delay2us(); }
void CH375_WR_DAT_PORT( unsigned char dat ) { CH375_DAT_PORT=dat; delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ }
unsigned char CH375_RD_DAT_PORT() { delay1us(); /* 因為MCS51單片機較慢所以實際上無需延時 */ return( CH375_DAT_PORT ); }