CH375B与51串口通信问题[求助]

在调试51和CH375B的串口通信, 本网站上下载了通用程序,用的通信是并口的,我把通信方式改成了串口,现在我用的是仿真器来调试,只看到发出去的数据,从375上读不到数据.CH375工作正常(25脚L,26脚为H)请帮我看看

读写数据 写命令 并口改串口 /* void CH375_WR_CMD_PORT( unsigned char cmd ) // 向CH375的命令端口写入命令,周期不小于4uS,如果单片机较快则延时 { delay2us(); CH375_CMD_PORT=cmd; delay2us(); } */

void CH375_WR_CMD_PORT( unsigned char mCmd )//向CH375的命令端口写入命令 { REN=0; TI = 0; TB8 = 1; SBUF = mCmd; while ( TI == 0 ); }

/* void CH375_WR_DAT_PORT( unsigned char dat ) { //向CH375的数据端口写入数据,周期不小于1.5uS,如果单片机较快则延时 CH375_DAT_PORT=dat; delay1us(); // 因为MCS51单片机较慢所以实际上无需延时 } */ void CH375_WR_DAT_PORT( unsigned char mData )//向CH375的数据端口写入数据 { REN=0; TI = 0; TB8 = 0; SBUF = mData; while ( TI == 0 );

}

/*unsigned char CH375_RD_DAT_PORT() { // 从CH375的数据端口读出数据,周期不小于1.5uS,如果单片机较快则延时 delay1us(); // 因为MCS51单片机较慢所以实际上无需延时 return( CH375_DAT_PORT ); }

*/

unsigned char CH375_RD_DAT_PORT() { REN=1; while ( RI == 0 ); RI = 0; return( SBUF);

51串口设置 void mInitSTDIO( ) { SCON = 0x50;/*串行口控制寄存器:SM0 SM1 SM2 REN TB8 RB8 TI RI 01010000( 模式1;功能8位UART;波特率为 可变)*/ PCON = 0x00;//电源控制寄存器,SMOD=00 TMOD = 0x21;/*定时/记数 模式控制寄存器,波特率发生器T1工作在模式2上,自动装载初值。*/ TH1 = 0xfd; /* 晶振11.0592MHz,波特率9600bps*/

TR1 = 1;//启动定时器T1 TI = 1;//发送完毕标志置位,这个很得要,因为printf会检测这个位是否为1,为0不工作 EX0=1; EA=0; }


程序运行到set_usb_mode里的if ( CH375_RD_DAT_PORT()==CMD_RET_SUCCESS )就停下了 ,跳不出来 void main() { unsigned char i; mInitSTDIO( ); delayms(250); set_usb_mode( 6 ); /* 设置USB主机模式, 如果设备端是CH37X, 那么5和6均可 */

下是子程序

unsigned char set_usb_mode( unsigned char mode ) { /* 设置CH37X的工作模式 */ unsigned char i; CH375_WR_CMD_PORT( CMD_SET_USB_MODE ); CH375_WR_DAT_PORT( mode ); endp6_mode=endp7_mode=0x80; /* 主机端复位USB数据同步标志 */ for( i=0; i!=100; i++ ) { /* 等待设置模式操作完成,不超过30uS */ if ( CH375_RD_DAT_PORT()==CMD_RET_SUCCESS ) return( TRUE ); /* 成功 */ } return( FALSE ); /* CH375出错,例如芯片型号错或者处于串口方式或者不支持 */ }


TH1 = 0xfd应该为TH1 = 0xfA


hcn:你好,我选用的是11.0592M晶振,SMOD=0(不倍频),方式1.波特率是9600bps 如果改SMOD为1,则TH1=0xfa, 现在选用SMOD为0,则TH1=0xfd, 这样计算是否有问题?


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