51单片机做串口通信接收缓存区没反应

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了51单片机做串口通信接收缓存区没反应相关的知识,希望对你有一定的参考价值。

参考技术A 可以使用如下思路,添加结束符,
1、接收到新数据,存入,缓存。
2、接收到结束符号,如叹号,将缓存中的数据处理,处理完成后通过for循环清空缓存。
3、继续等待新的串口数据。

单片机编程中 如何清除串口接收寄存器中的值,即清除SBUF中的值

追问:可是我做实验,需要清除。以便接收到新的不同的值,从而单片机做出相应的动作回答清除标志位
----
不用清除。也不可能清除。

可以这样做:
每收到一个新数据,就置位一个自定义的标志位,如:R_flag = 1;。
程序中,一旦发现它为1,就进行一次处理,然后就将其清零:R_flag = 0;。
这样,收到一个,就仅仅处理一遍。
参考技术A 单片机的SBUF是不需要清零的!
你是模拟串口通信吗?
不管是模拟串口通信还是硬件串口通信,都是是不需要清零的.因为模拟串口通信时是判断串口有无起始位来决定是否接受数据,而硬件串口SBUF是自动接收数据,并会产生一个中断,这时你只需要读出SBUF的值就行了。
参考技术B value属性可以直接获取其选中项的value值。
单击按钮获取下拉列表选中项的value值:
<select id="test">
<option value="1">option-1</option>
<option value="2">option-2</option>
<option value="3">option-3</option>
<option value="4">option-4</option>
</select> <br>
<input type='button' value='获取选中项' onClick="fun()"/>2、javascript代码
function fun()
obj = document.getElementById("test");
alert(obj.value);

参考技术C 不用清除。追问

可是我做实验,需要清除。以便接收到新的不同的值,从而单片机做出相应的动作

追答

清除标志位
CLR RI

追问

clr RI; 在程序中编译通不过,显示没有定义,有错误。请问高手,有没一段完完整的程序?

以上是关于51单片机做串口通信接收缓存区没反应的主要内容,如果未能解决你的问题,请参考以下文章

LabVIEW串口通信

LabVIEW串口通信

LabVIEW串口通信

51单片机串口通讯

单片机串口通信控制led灯的点亮

CC2530开发模块与51单片机如何实现串口通信