完善资料让更多小伙伴认识你,还能领取20积分哦, 立即完善>
主控芯片: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; 写数据已完成,返回原调用处 请哪位大神帮忙看一下问题在哪里? |
|
相关推荐
9个回答
|
|
您好,CH376字节写入无法操作可以检查一下以下两点
|
|
|
|
1、文件名:年月日.TXT 例如:20210120.TXT
2、文件关闭操作成功:发送CMD1H_FILE_CLOSE(36H)+ 数字(1),检测到中断,中断状态为USB_INT_SUCCESS(14H)。 数据写入仍然失败,且文件有一个 字节 乱码。 |
|
|
|
你好:
如果所有操作返回值都是成功,但是查看文件是1个字节,应该是写延迟现象,有2种方法解决。
|
|
|
|
采用方法2:先发送命令CMD0H_DISK_READY(59H),等待判断,检查中断状态寄存器数值为14H
写入数据:20 20 20 20 20 文件在PC端打开显示数据为:EA AE 测试其他写入数据,并不影响文本中的内容。 数据仍没有写入U盘中。 |
|
|
|
疑问:数据写入U盘,使用CH376ByteWrite( buf, s, NULL ),并且在关闭文件时,写入数据1,即可将数据写到U盘中?是否还需要其他操作?
|
|
|
|
1、 U盘的文件 20210121.TXT 直接建立在U盘中,没有使用多级目录,因此,这是否属于根目录文件?
2、现在有一个问题是,我按照 附件中图片 中打开文件操作步骤编写程序,只有在屏蔽 第4步骤 时,才可以正确写入数据,不使用此步骤是否有问题? 3、按照字节方式写入数据:写入的是否是数据对应的ASSIC码 ? 例如:想要写入的数据为 :Temp=60℃ 实际写入数据:54 65 6D 70 3D 36 30 A1 E6 捕获.PNG |
|
|
|
1、是的
2、该份文档应用于老版本芯片,目前的CH376芯片均为最新版,已经不需要步骤4,最新芯片实际操作方式建议参考手册+实例代码。示例代码中针对芯片版本有预编译,选择是否要执行步骤4 3、是的,最好在后面再加上回车换行 |
|
|
|
|
|
|
|
只有小组成员才能发言,加入小组>>
594 浏览 1 评论
CH579M+RT-Thread,RTC从Sleep模式唤醒失败是什么原因?
2941 浏览 2 评论
2436 浏览 1 评论
926浏览 2评论
726浏览 1评论
riscv-none-embed-objcopy: \'PWM_Output.elf\': No such file这个咋解决,
447浏览 1评论
580浏览 1评论
请教一下,Mounriver 编译不成功:找不到库文件,怎么整
856浏览 1评论
小黑屋| 手机版| Archiver| 电子发烧友 ( 湘ICP备2023018690号 )
GMT+8, 2025-1-30 14:05 , Processed in 1.023169 second(s), Total 62, Slave 56 queries .
Powered by 电子发烧友网
© 2015 bbs.elecfans.com
关注我们的微信
下载发烧友APP
电子发烧友观察
版权所有 © 湖南华秋数字科技有限公司
电子发烧友 (电路图) 湘公网安备 43011202000918 号 电信与信息服务业务经营许可证:合字B2-20210191 工商网监 湘ICP备2023018690号