单片机串口连接CH375的测试问题

单片机C51与CH375串口连接时,我的测试程序如下: #include

#define CHECK_EXIST 0x06

void delay(void);

void main(void) { unsigned char data temp;

EA= 0; SCON= 0xd0; //´®¿Ú¹¤×÷·½Ê½3 ES= 1; PCON= PCON & 0x7f; //SMOD= 0

TMOD= 0x20; //¶¨Ê±Æ÷1¹¤×÷·½Ê½2 TH1= 0xfd; TL1= 0xfd;

IT0= 1; //ÍⲿÖжÏ0³õʼ»¯ EX0= 1;

ET1= 0; //¶¨Ê±Æ÷1ÖÐ¶Ï¹Ø TR1= 1; //Æô¶¯¶¨Ê±Æ÷1 EA= 1; TB8= 1; //·¢Ë͵ÄÊÇÃüÁî temp= CHECK_EXIST; SBUF= temp; delay(); TB8= 0; SBUF= 0x55;

while(1){} }

void UART(void) interrupt 4 using 2 { unsigned char temp; if(RI==1) { P1= 0xaa; } }

void delay(void) { unsigned char i; i= 0x0f; while(i) { i--; } } 测试程序流程为: 1.单片机通过串口发出测试命令CHECK_EXIST 2.再发送测试数据0X55; 3.等待从CH375发来的串口测试数据0XAA;

请问这样的流程有没错呢?CH375会不会先向单片机外部中断,单片机分析中断状态,发出读数据命令,CH375才发来数据0xaa呢? 不过,我想不会有中断的吧,直接就是串口数据0xaa.是不是?

上面的程序有什么问题吗?

发测试命令并不会产生中断,至于哪些命令会产生中断哪些不会产生中断,请参考我们的说明手册。 下面是51单片机的串口通信的三个读写子程序: /* 如果单片机与CH375是串口连接,那么参考下面的子程序 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 ); } */ 对于并口程序,你只需要将并口通信的三个读写子程序修改为串口通信子程序即可。

对于51单片机,读写U盘时,串口通信可以采用CH375LIB\MCS51\FILELIB5或是FILELIBC。


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