主控芯片:PICF18
通訊方式:8位并口
中斷方式:狀態(tài)最高位檢測
????????USB初始化正常,建立的txt文件可以正常打開,但是無寫入數(shù)據(jù)。
程序如下所示:
;==================================================
;=CH376_Byte_Writ 字節(jié) 寫 子程序=
;==
;=入口參數(shù):ReqCount_L:ReqCount_H (數(shù)據(jù)長度)=
;=出口參數(shù):無=
;=標志:=
;==
;=振蕩器:64.000MHz ( 0.0625uS/步 ) 因數(shù)據(jù)變化,耗時約:xxxxuS~xxxuS=
;==
; 節(jié)點 ======== 命令 ========== 系數(shù) ========== 注解
CH376_Byte_Writ
BTFSCFILE_376,Byte_test? ? ? ? ? ?; FILE_376,Byte_test=? 1
GOTOWrite_Req_Block; 轉(zhuǎn)到 Write_Req_Block
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCSybl,CMD_WR_Complt; Sybl,CMD_WR_Complt =? 1
GOTOByte_Writ_check; 轉(zhuǎn)到 Byte_Writ_check
MOVLWCMD2H_BYTE_WRITE; H'3C'
CALLWrite_CH376_Cmd; 調(diào)用 寫命令子程序
MOVLWReqCount_L; 寫數(shù)據(jù)塊長度
CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序
MOVLWReqCount_H; 寫數(shù)據(jù)塊長度
CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序
BSFSybl,CMD_WR_Complt; 置:Sybl,CMD_WR_Complt = 1
; - - - - - - - - - - - - - - - 檢查:中斷標志 - - - - - - - - - - - - - - - - - - - - - -
Byte_Writ_check
CALLRead_CH376_Statu; 調(diào)用 讀狀態(tài) 子程序
MOVFFCH376_BUFER,Intrput_Statu;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCIntrput_Statu,7; 最高位 =? 0
RETURN; 無中斷,返回到原來調(diào)用處
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MOVLWUSB_INT_DISK_WRITE; H'1E'
MOVWFCMD_Succe_da;
CALLInterupt_SW; 調(diào)用 軟件中斷 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSSSybl,Intrput_Succe; =? 1
GOTOByte_Writ_fail; 轉(zhuǎn)到 Byte_Writ_fail
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CALLCH376_Writ_Req; 調(diào)用 寫數(shù)據(jù)請求 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSFFILE_376,Byte_test; 置:寫 數(shù)據(jù)塊 完成 標志
RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Byte_Writ_fail
BCFFILE_376,Byte_test; 置:寫 數(shù)據(jù)塊 完成 標志
RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Write_Req_Block
MOVLWCMD0H_BYTE_WR_GO; H'3D'
MOVWFCMD_Intrput;
CALLInterupt_Check; 調(diào)用 中斷檢查 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCIntrput_Statu,7; 最高位 =? 0
RETURN; 無中斷,繼續(xù)等待
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MOVLWUSB_INT_DISK_WRITE; H'1E'
MOVWFCMD_Succe_da;
CALLInterupt_SW; 調(diào)用 軟件中斷 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSSSybl,Intrput_Succe; =? 1
GOTOWrite_Req_Block1; 轉(zhuǎn)到 Write_Req_Block1 繼續(xù)寫數(shù)據(jù)塊
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CALLCH376_Writ_Req; 調(diào)用 寫數(shù)據(jù)請求 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BCFFILE_376,Byte_Write; 置:寫 數(shù)據(jù)塊 完成 標志
RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Write_Req_Block1
BSFFILE_376,Byte_Write; 置:寫 數(shù)據(jù)塊 完成 標志
BCFSybl,CMD_WR_Complt; 清:= 0 中斷命令發(fā)送標志
RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處
;=================================================
;=CH376_Writ_Req 字節(jié) 寫請求 子程序=
;==
;=入口參數(shù):無=
;=出口參數(shù):ReqLCount(返回數(shù)據(jù)長度)=
;=標志:=
;==
;=振蕩器:64.000MHz ( 0.0625uS/步 ) 因數(shù)據(jù)變化,耗時約:xxxxuS~xxxuS=
;==
; 節(jié)點 ======== 命令 ========== 系數(shù) ========== 注解?
CH376_Writ_Req
MOVLWCMD01_WR_REQ_DATA; H'2D'
CALLWrite_CH376_Cmd; 調(diào)用 寫命令 子程序
CALLRead_CH376_DATA; 調(diào)用 讀狀態(tài)子程序
MOVFFCH376_BUFER,ReqLCount; 返回數(shù)據(jù)塊請求長度
; - - - - - - - - - - - - - - - - - 寫:數(shù)據(jù)塊 - - - - - - - - - - - - - - - - - - - - -
MOVFFReqLCount,LEDCONT;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CH376_Writ_Req1
MOVLWH'AB';??
CALLWrite_CH376_DATA; 調(diào)用 寫數(shù)據(jù)子程序
MOVLWD'5'; 延時200MS
CALLDELAY_Xms; 調(diào)用 MS延時 子程序
DECFSZLEDCONT,F; =?0
GOTOCH376_Writ_Req1; 繼續(xù)寫數(shù)據(jù)塊
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RETURN; 寫數(shù)據(jù)已完成,返回原調(diào)用處
? 請哪位大神幫忙看一下問題在哪里?