求助!为什么我的测试程序不能返回数值

我的电路是仿效CH375的datasheet1中的并行电路画的,只是单片机的P2^7直接和ch375的cs相联,而P2^7经过7404反相后和62256的片选相联,也就是62256的地址为8000-FFFF,下面是我的简单的测试程序,为什么没反应。我用的是STC89C54RD+单片机。 #include #include "CH375INC.H" #include /* 以下定义适用于MCS-51单片机,其它单片机参照修改 */ #define UINT8 unsigned char #define UINT16 unsigned short #define UINT32 unsigned long #define UINT8X unsigned char xdata #define UINT8VX unsigned char volatile xdata UINT8VX CH375_CMD_PORT _at_ 0x0ff1; /* CH375命令端口的I/O地址 */ UINT8VX CH375_DAT_PORT _at_ 0x0ff0; /* CH375数据端口的I/O地址 */

sfr AUXR=0x8e;//声明AUXR寄存器的地址

void mDelaymS( UINT8 delay ) { UINT8 i, j, c; for ( i = delay; i != 0; i -- ) { for ( j = 200; j != 0; j -- ) c += 3; for ( j = 200; j != 0; j -- ) c += 3; } }

void CH375_WR_CMD_PORT( UINT8 cmd ) { /* 向CH375的命令端口写入命令 */ CH375_CMD_PORT=cmd; for ( cmd = 2; cmd != 0; cmd -- ); /* 发出命令码前后应该各延时2uS */ } void CH375_WR_DAT_PORT( UINT8 dat ) { /* 向CH375的数据端口写入数据 */ CH375_DAT_PORT=dat; /* 因为MCS51单片机较慢所以实际上无需延时 */ } UINT8 CH375_RD_DAT_PORT( void ) { /* 从CH375的数据端口读出数据 */ return( CH375_DAT_PORT ); /* 因为MCS51单片机较慢所以实际上无需延时 */ }

main() {

mDelaymS(200); AUXR=0x02;//禁止STC89C54RD+的内部扩展RAM

// mInitSTDIO( ); CH375_WR_CMD_PORT(CMD_SET_USB_MODE); CH375_WR_DAT_PORT(6); CH375_WR_CMD_PORT(CMD_CHECK_EXIST);//测试状态 CH375_WR_DAT_PORT(5); TEST=CH375_RD_DAT_PORT(); P1=TEST; //通过测量P1的值来判定

while(1); } 好像ch375没有工作,苦恼啊,大侠们帮帮忙,帮我分析分析,上面测试程序没错吧, 还有一般ch375不工作都有哪些情况。下面是我的PCB图。

我上传的图片怎么看不到啊,图片是以附件形式上传的


你先检查晶震是否正常起振、375是否正常工作了。 晶振不起振的话,可能有下面几种原因: (1)、在焊接的时候,使用了助焊剂,导致晶振漏电,从而不起振或停振。解决办法是将你的扳子用超声波或者用水清洗下。 (2)、某一个退藕电容激穿了,导致晶振的某一个引脚接地,或是退藕电容大小不合适,从而不起振。解决办法是换合适的退藕电容试下。 (3)、晶振本身存在问题。 (4)、供电不足。 (5)、PCB布线存在问题。在布线的时候,372的晶振的地和372的地的供地性要好,不然存在压差的话,也会出现不起振的情况。 测试命令(CMD_CHECK_EXIST)放在设置模式之前,是用来检测硬件连接是否正常的。如果375正常工作而测试命令不正确的话,可以对照电路图查找硬件连接,如:V3引脚接法,TXD有没接地等。


谢谢,我换了个电容,果然可以测试了,我用的是27pF的电容,这么就击穿了呢


实际在使用晶振的时候,你可以根据晶振厂商提供给你的电容参数在选择电容的大小


不知怎么搞的,上次振荡起来以后,有事没测,下次再测时又不振荡了,而且再怎么换电容也没用,郁闷。


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