急求CH375与单片机串行接法的初始化程序!!!
89C51 串口波特率为9600bps 串口工作在工作方式3
只要能写CHECK_EXIST命令后,能返回正确的数据即可.
我的开发环境有限,只想知道自己接的CH375能否与单片机正常通信,首先能排除硬件上的问题.我在这里卡了很久了,不是我懒,只是想参考一下,希望好心人能帮忙一下!
急求CH375与单片机串行接法的初始化程序!!!
89C51 串口波特率为9600bps 串口工作在工作方式3
只要能写CHECK_EXIST命令后,能返回正确的数据即可.
我的开发环境有限,只想知道自己接的CH375能否与单片机正常通信,首先能排除硬件上的问题.我在这里卡了很久了,不是我懒,只是想参考一下,希望好心人能帮忙一下!
void mInitSTDIO( ) { SCON = 0x50; PCON = 0x80; TMOD = 0x20; TH1 = 0xf3; /* 24MHz晶振, 9600bps */ TR1 = 1; TI = 0; } void CH375_PORT_INIT( ) { SCON = 0xD0; //设置串口为9位数据 //设置波特率和其它串口参数 }
void xWriteCH375Cmd( UINT8 mCmd ) { TI = 0; TB8 = 1; SBUF = mCmd; while ( TI == 0 ); }
void xWriteCH375Data( UINT8 mData ) { TI = 0; TB8 = 0; SBUF = mData; while ( TI == 0 ); }
UINT8 xReadCH375Data( void ) { while ( RI == 0 ); RI = 0; return( SBUF ); }
一开始要不要对CH375设置工作模式? 可以写出一个CHECK_EXIST命令的使用吗?我就不知道在用这命令之前要不要设置什么
不要对375设置模式的,测试命令是检查硬件有没有问题,只有测试命令通过之后再对375设置模式让其工作在主机方式或设备方式,模式才能设置成功.
#include #include
#define GET_STATUS 0x22 #define CHECK_EXIST 0x06 #define RESET_ALL 0x05
void CH375Init(void); void w_Cmd(unsigned char cmd); void w_Data(unsigned char mData); unsigned char r_Data(void); void Delay1s(void); void delay40ms(void);
void main(void) { unsigned char data temp;
Delay1s();
CH375Init(); w_Cmd(CHECK_EXIST); _nop_(); w_Data(0xaa); _nop_(); _nop_(); temp= r_Data(); P1= temp; while(1); }
void CH375Init(void) { delay40ms(); EA= 0; SCON= 0xd0; //´®¿Ú¹¤×÷·½Ê½3 ES= 0; PCON= 0x00; //SMOD= 0
TMOD= 0x20; //¶¨Ê±Æ÷1¹¤×÷·½Ê½2 TH1= 0xfd; TL1= 0xfd;
IT0= 1; //ÍⲿÖжÏ0³õʼ»¯ EX0= 0;
ET1= 0; //¶¨Ê±Æ÷1ÖÐ¶Ï¹Ø TR1= 1; //Æô¶¯¶¨Ê±Æ÷1 EA= 0; }
void w_Cmd(unsigned char cmd) { TI = 0; TB8 = 1; SBUF = cmd; _nop_(); _nop_(); _nop_(); _nop_(); while ( TI == 0 ); }
void w_Data(unsigned char mData) { TI = 0; TB8 = 0; SBUF = mData; _nop_(); _nop_(); _nop_(); _nop_(); while ( TI == 0 ); }
unsigned char r_Data(void) { _nop_(); _nop_(); _nop_(); _nop_(); while(RI==0); RI= 0; return SBUF; }
void Delay1s(void) { unsigned char i; i= 0xf0; while(i){i--;} }
void delay40ms(void) { long i; i= 0x9c40; while(i){i--;} }
这样的测试命令的程序有错吗?发出命令和数据后,单片机没收到CH375发来的测试数据 原理图如下,我把CS#也接了地,INT#接了单片机的INT0
串口通信只要接3跟线就可以了,TXD,RXD,INT,具体的接线可以参考CH375DS1上的接线图,程序上没有什么问题,可以给延时减少些看看,可以先测下单片机的串口是不是正常工作了.