使用CH375B芯片。因系統(tǒng)資源原因,用51匯編實(shí)現(xiàn)USB的讀寫。初始化命令后已經(jīng)檢測(cè)到USB連接。但只要是產(chǎn)生中斷的命令都是返回USB存儲(chǔ)設(shè)備操作失敗值1F。 原因何在?請(qǐng)不吝賜教。 是不是每次發(fā)送產(chǎn)生中斷的命令之前都需要先發(fā)送一條初始化命令?
51匯編如下: MOV A,#DISK_READY ;檢查USB存儲(chǔ)設(shè)備是否就緒 LCALL CH375_INT0 。。。。。
;發(fā)送命令并查詢中斷狀態(tài) CH375_INT0: MOV R0,#DAT_TAB MOV @R0,A MOV R7,#00H LCALL SEND_CMD LCALL QUERYINTERRUPT CJNE A,#14H,CH375_INT0_1 MOV B,#00H RET CH375_INT0_1: MOV B,#81H RET 。。。。。
;發(fā)送命令 SEND_CMD: MOV R0,#DAT_TAB MOV DPTR,#CH375_CMD_ADDR MOV A,@R0 MOVX @DPTR,A NOP NOP NOP NOP NOP NOP MOV A,R7 JZ SEND_CMD_X MOV DPTR,#CH375_DAT_ADDR SEND_CMD_1: INC R0 MOV A,@R0 MOVX @DPTR,A NOP NOP NOP DJNZ R7,SEND_CMD_1 SEND_CMD_X: RET ; 。。。。。。。。。。。 QUERYINTERRUPT: MOV R7,#0C8H ;延時(shí)100ms; LCALL MDELAYMS QUERYINTERRUPT_0: JB CH375_INT,QUERYINTERRUPT_0 ;檢測(cè)INT0中斷信號(hào) MOV R0,#DAT_TAB MOV @R0,#GET_STATUS ;獲取中斷狀態(tài)并取消請(qǐng)求 MOV R7,#00H LCALL SEND_CMD MOV R7,#64H LCALL MDELAYMS MOV DPTR,#CH375_DAT_ADDR MOVX A,@DPTR RET