主控芯片:PICF18
通讯方式:8位并口
中断方式:状态最高位检测
USB初始化正常,建立的txt文件可以正常打开,但是无写入数据。
程序如下所示:
;==================================================
;=CH376_Byte_Writ 字节 写 子程序=
;==
;=入口参数:ReqCount_L:ReqCount_H (数据长度)=
;=出口参数:无=
;=标志:=
;==
;=振荡器:64.000MHz ( 0.0625uS/步 ) 因数据变化,耗时约:xxxxuS~xxxuS=
;==
; 节点 ======== 命令 ========== 系数 ========== 注解
CH376_Byte_Writ
BTFSCFILE_376,Byte_test ; FILE_376,Byte_test=? 1
GOTOWrite_Req_Block; 转到 Write_Req_Block
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCSybl,CMD_WR_Complt; Sybl,CMD_WR_Complt =? 1
GOTOByte_Writ_check; 转到 Byte_Writ_check
MOVLWCMD2H_BYTE_WRITE; H'3C'
CALLWrite_CH376_Cmd; 调用 写命令子程序
MOVLWReqCount_L; 写数据块长度
CALLWrite_CH376_DATA; 调用 写数据子程序
MOVLWReqCount_H; 写数据块长度
CALLWrite_CH376_DATA; 调用 写数据子程序
BSFSybl,CMD_WR_Complt; 置:Sybl,CMD_WR_Complt = 1
; - - - - - - - - - - - - - - - 检查:中断标志 - - - - - - - - - - - - - - - - - - - - - -
Byte_Writ_check
CALLRead_CH376_Statu; 调用 读状态 子程序
MOVFFCH376_BUFER,Intrput_Statu;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCIntrput_Statu,7; 最高位 =? 0
RETURN; 无中断,返回到原来调用处
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MOVLWUSB_INT_DISK_WRITE; H'1E'
MOVWFCMD_Succe_da;
CALLInterupt_SW; 调用 软件中断 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSSSybl,Intrput_Succe; =? 1
GOTOByte_Writ_fail; 转到 Byte_Writ_fail
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CALLCH376_Writ_Req; 调用 写数据请求 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BSFFILE_376,Byte_test; 置:写 数据块 完成 标志
RETURN; 写数据已完成,返回原调用处
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Byte_Writ_fail
BCFFILE_376,Byte_test; 置:写 数据块 完成 标志
RETURN; 写数据已完成,返回原调用处
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Write_Req_Block
MOVLWCMD0H_BYTE_WR_GO; H'3D'
MOVWFCMD_Intrput;
CALLInterupt_Check; 调用 中断检查 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSCIntrput_Statu,7; 最高位 =? 0
RETURN; 无中断,继续等待
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
MOVLWUSB_INT_DISK_WRITE; H'1E'
MOVWFCMD_Succe_da;
CALLInterupt_SW; 调用 软件中断 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BTFSSSybl,Intrput_Succe; =? 1
GOTOWrite_Req_Block1; 转到 Write_Req_Block1 继续写数据块
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CALLCH376_Writ_Req; 调用 写数据请求 子程序
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
BCFFILE_376,Byte_Write; 置:写 数据块 完成 标志
RETURN; 写数据已完成,返回原调用处
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
Write_Req_Block1
BSFFILE_376,Byte_Write; 置:写 数据块 完成 标志
BCFSybl,CMD_WR_Complt; 清:= 0 中断命令发送标志
RETURN; 写数据已完成,返回原调用处
;=================================================
;=CH376_Writ_Req 字节 写请求 子程序=
;==
;=入口参数:无=
;=出口参数:ReqLCount(返回数据长度)=
;=标志:=
;==
;=振荡器:64.000MHz ( 0.0625uS/步 ) 因数据变化,耗时约:xxxxuS~xxxuS=
;==
; 节点 ======== 命令 ========== 系数 ========== 注解
CH376_Writ_Req
MOVLWCMD01_WR_REQ_DATA; H'2D'
CALLWrite_CH376_Cmd; 调用 写命令 子程序
CALLRead_CH376_DATA; 调用 读状态子程序
MOVFFCH376_BUFER,ReqLCount; 返回数据块请求长度
; - - - - - - - - - - - - - - - - - 写:数据块 - - - - - - - - - - - - - - - - - - - - -
MOVFFReqLCount,LEDCONT;
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
CH376_Writ_Req1
MOVLWH'AB';
CALLWrite_CH376_DATA; 调用 写数据子程序
MOVLWD'5'; 延时200MS
CALLDELAY_Xms; 调用 MS延时 子程序
DECFSZLEDCONT,F; =?0
GOTOCH376_Writ_Req1; 继续写数据块
; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
RETURN; 写数据已完成,返回原调用处
请哪位大神帮忙看一下问题在哪里?