原创 51串口通信总结

2010-9-15 15:44 3241 12 12 分类: MCU/ 嵌入式

51串口通信总结


 


济南职业学院 电子工程系 电气自动化 朱志强


                                 2010年8月18日


 


一、深入了解字符串的问题


char str11[]="a";


P1=strlen(str11);


上面的一个是一个测试字符个数的实例,用仿真就可以看到结果。结果是1。也就是说字符’\0’是不会被计入的。那么我们就可以通过此函数来分辩是否是字符和字符串。当然如果字符串是一个字符的话,那么就是我们上面的那个情况了,会直接被当做一个数看待。


注:上位机发过来的数据全部是字符串格式的。


二、串口中断问题


先看下面的程序。


void UART_SendByte(unsigned char dat)


{


       SBUF=dat;


       while(!TI) ;//等待发送完毕


       TI=0;


}


这个程序就是一个简单的串口发送字符的程序,为了能够实现自动发送和接收,我们分析一下它。我们要同时实现接收,有接收那么就要有串口中断,通过串口中断达到接收数据的目的。可是当ES=1,程序并不会像我们想的那样运行,当执行完SBUF=dat后,程序开始等待,大概是5个时钟周期后,程序并没有直接运行TI=0这句,而是,因为缓冲区中的字符而直接跳转到串口中断函数中,甚至出现死循环这样的情况。


为了避开这种情况,我们引入了下面的程序:


void UART_SendByte(unsigned char dat)


{


       SBUF=dat;


       ES=0;


       while(!TI) ;


       TI=0;


       ES=1;


}


 


 

PARTNER CONTENT

文章评论0条评论)

登录后参与讨论
EE直播间
更多
我要评论
0
12
关闭 站长推荐上一条 /3 下一条