关于配合CH375开发板能用的仿真器

我购买了CH375开发板,使用的仿真器是"上海星研电子科技有限公司"生产的"Star51在线实时仿真器"。使用中发现如果程序生成的.HEX文件写到51单片机中,开发板能够完成程序所要求的功能,使用正常。但是在使用仿真器实时仿真的时候,375初始化程序CH375LibInit( )始终报错,错误号是81H,说375没正常工作。仿真软件使用的是keil的,不知道贵公司在线仿真使用的是哪家公司什么型号的仿真器,仿真软件是哪款?由于目前不能使用仿真器,所以给程序的调试带来了很大困难,希望贵公司能够尽快给与答复,谢谢!

mInitSTDIO( ) 不是CH375的初始化程序,是串口初始化程序. 是不是你的仿真器动用了外部的资源,比如说你单步执行时仿真器会不断的读取外部RAM. 我用过伟福的访真器没有问题.


对不起,是我写错了,应该是CH375LibInit( )这个程序不能仿真通过


不论单步执行与全速运行,CH375LibInit( )这个程序始终报错,但是仿真其他程序都不发生错误。由于我也不清楚CH375LibInit( )具体代码,只参看了头文件里的程序。

UINT8 CH375LibInit( void ) /* 初始化CH375程序库和CH375芯片,操作成功返回0 */ { if ( SP > 0xF0 ) return( 0xFC ); CH375LibConfig = LIB_CFG_VALUE; DISK_BASE_BUF[0] = 0; if ( CH375GetVer( ) < CH375_LIB_VER ) return( 0xFF ); return( CH375Init( ) ); }

估计是CH375Init( )这个函数仿真不能通过,也不知道这个函数究竟对仿真器有什么操作和要求。 对仿真器的设置上应该没有问题,因为生成的.HEX烧写到89C55WD单片机上程序可以正常执行。


同时咨询一下关于开发板示例程序中一点问题。 在CH375\EVT\PUB\MCS51C\FILELIB4\EXAM1中的CH375HFT.C程序中有如下一段程序:

if ( i == ERR_MISS_DIR || i == ERR_MISS_FILE ) { /* 没有找到文件 */ /* 列出文件 */ if ( i == ERR_MISS_DIR ) pCodeStr = "\\*"; /* C51子目录不存在则列出根目录下的文件 */ else pCodeStr = "\\C51\\CH375*"; /* CH375HFT.C文件不存在则列出\C51子目录下的以CH375开头的文件 */ printf( "List file %s\n", pCodeStr ); for ( c = 0; c < 255; c ++ ) { /* 最多搜索前255个文件 */ i = mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, pCodeStr ); /* 搜索文件名,*为通配符,适用于所有文件或者子目录 */ mCmdParam.Open.mPathName[ i ] = c; /* 根据字符串长度将结束符替换为搜索的序号,从0到255 */ i = CH375FileOpen( ); /* 打开文件,如果文件名中含有通配符*,则为搜索文件而不打开 */ if ( i == ERR_MISS_FILE ) break; /* 再也搜索不到匹配的文件,已经没有匹配的文件名 */ if ( i == ERR_FOUND_NAME ) { /* 搜索到与通配符相匹配的文件名,文件名及其完整路径在命令缓冲区中 */ printf( " match file %03d#: %s\n", (unsigned int)c, mCmdParam.Open.mPathName ); /* 显示序号和搜索到的匹配文件名或者子目录名 */ continue; /* 继续搜索下一个匹配的文件名,下次搜索时序号会加1 */ } else { /* 出错 */ mStopIfError( i ); break; } }

如果我的U盘中根目录下并不存在C51这个文件夹,那么程序应该显示根目录下前255个文件名。 根据程序来看,我有一个地方没有弄明白。 如果执行 if ( i == ERR_MISS_DIR ) pCodeStr = "\\*"; 那么每次搜索文件的时候 mCmdParam.Open.mPathName 都是 "\\*" 那么它是如何来完成记录文件名称功能呢 不知道我问得请不清楚

比如说我U盘根目录下有2个文件,分别是A.TXT和B.TXT 在执行上面那段程序中A.TXT和B.TXT这两个文件名是如何分别到入到 mCmdParam.Open.mPathName 中的呢? 哪句程序完成此功能?文字


我就是想问在每次执行 i = mCopyCodeStringToIRAM( mCmdParam.Open.mPathName, pCodeStr ); 的过程中 如何判断上一个文件名已经被显示过 也就是说文件名是如何一个一个被显示出来的


你的仿真器和CH375接触是否好呢??

当你搜索文件名时,*为通配符,后面还有一个字节的文件序号.当函数返回时文件名还放在这个缓冲区里.当然就可以被读出了.


仿真器接触正常 设备方式都能正常仿真 只有主机方式中初始化375不能正常工作


感谢usbxf的解答 但是我还是没有解决心中的问题 请问usbxf能不能帮我解决问题 十分感谢


我现在也在用ch375做usb主机,在CH375LibInit( )时也是返回81H,请问楼主事后解决问题了吗?能否和您交流一下?我的邮箱是个人信息保护,已隐藏。 十分感谢


0X81返回的话那是硬件问题,先做测试命令(0X06),看下返回的数据是不是你输出数据的取反


我目前也遇到了这样的问题

使用的仿真器是"上海星研电子科技有限公司"生产的"Star51在线实时仿真器"。单片机选用的是AT89C51RC2。使用中发现如果程序生成的.HEX文件写到单片机中,系统能够完成程序所要求的功能,使用正常。但是在使用仿真器实时仿真的时候,375初始化程序CH375HF4.LIB( )始终报错,错误号是81H,说375没正常工作。仿真软件使用的是keil的,

请问楼主事后解决问题了吗?能否和您交流一下?在此先谢过了。

邮箱:个人信息保护,已隐藏 QQ:14522364


只有登录才能回复,可以选择微信账号登录