51单片机串口通讯与串口中断常见问题解决方案.doc

上传人:白大夫 文档编号:3244770 上传时间:2019-08-05 格式:DOC 页数:2 大小:13.50KB
返回 下载 相关 举报
51单片机串口通讯与串口中断常见问题解决方案.doc_第1页
第1页 / 共2页
亲,该文档总共2页,到这儿已超出免费预览范围,如果喜欢就下载吧!
资源描述

《51单片机串口通讯与串口中断常见问题解决方案.doc》由会员分享,可在线阅读,更多相关《51单片机串口通讯与串口中断常见问题解决方案.doc(2页珍藏版)》请在三一文库上搜索。

1、51单片机串口通讯与串口中断常见问题解决方案一、深入了解字符串的问题char str11=a;P1=strlen(str11);上面的一个是一个测试字符个数的实例,用仿真就可以看到结果。结果是1。也就是说字符是不会被计入的。那么我们就可以通过此函数来分辩是否是字符和字符串。当然如果字符串是一个字符的话,那么就是我们上面的那个情况了,会直接被当做一个数看待。注:上位机发过来的数据全部是字符串格式的。二、串口中断问题先看下面的程序。void UART_SendByte(unsigned char dat)SBUF=dat;while(!TI) ;/等待发送完毕TI=0;这个程序就是一个简单的串口发

2、送字符的程序,为了能够实现自动发送和接收,我们分析一下它。我们要同时实现接收,有接收那么就要有串口中断,通过串口中断达到接收数据的目的。可是当ES=1,程序并不会像我们想的那样运行,当执行完SBUF=dat后,程序开始等待,大概是5个时钟周期后,程序并没有直接运行TI=0这句,而是,因为缓冲区中的字符而直接跳转到串口中断函数中,甚至出现死循环这样的情况。为了避开这种情况,我们引入了下面的程序:void UART_SendByte(unsigned char dat)SBUF=dat;ES=0;while(!TI) ;TI=0;ES=1;或者写做一个中断处理函数,空的函数也可以:void Com_INT() interrupt 4/串口中断

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1