打印

PIC16的串口查询程序

[复制链接]
1686|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hjs1618|  楼主 | 2013-5-13 10:14 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
谁用过串口查询程序,可以共享一下啊!

中断程序有用过,现在想用查询程序,可是不会用!
沙发
yewuyi| | 2013-5-13 11:18 | 只看该作者
发送可以用查询,接受就不应该用查询了。

查询式发送就是检测发送完毕标志是否出现,出现之后送下一个待发数据。

使用特权

评论回复
板凳
hjs1618|  楼主 | 2013-5-13 21:42 | 只看该作者
接收只能用中断吗?

使用特权

评论回复
地板
yklstudent| | 2013-5-14 06:42 | 只看该作者
楼主想要MCU一直SB傻等吗?

使用特权

评论回复
5
HAPPY小越越| | 2013-5-15 10:22 | 只看该作者
接收好像没有用查询的。。。。

使用特权

评论回复
6
yewuyi| | 2013-5-15 13:49 | 只看该作者
接受用查询的话,首先是MCU的负担太大,MCU除了这个任务,其它任务很难再执行了,而且还容易丢数,需要通过不断的重发机制来防止接收丢数据,得不偿失,所以基本没人这么搞。

使用特权

评论回复
7
llqjmy| | 2013-5-31 17:07 | 只看该作者
接收同样可以用查询的,但是,你要注意接收要及时,否则容易出现溢出。一般,根据你的串口波特率,争取在每一个数据接收的时间内,读取一次接收中断标志或者接收缓冲不空的标志就可以了。

使用特权

评论回复
8
NE5532| | 2013-6-3 15:45 | 只看该作者
接收可以用查询,上面对接收用查询要丢数的论断有问题,轮训是压上单片机所有的资源在“死盯”一个问题,除非其它中断在干扰,否则这是其处理能力的极限。接收使用查询的好处是,可以大大简化程序,特别是复杂的包结构数据的接收。

接收查询的一般方式是用中断+查询的方式进行,伪代码见下

isr uart_rx()
{
buff[0]=uart_buff;   //receive 1st byte
while(uart_rx_i_flag != 1);
buff[1]=uart_buff;   //receive 2nd byte
......               //receive others bytes
}

当然,while里面可能需要加入超时跳出策略,否则人家发到一半不发了,程序就傻了。

使用特权

评论回复
9
yewuyi| | 2013-6-3 16:15 | 只看该作者
NE5532 发表于 2013-6-3 15:45
接收可以用查询,上面对接收用查询要丢数的论断有问题,轮训是压上单片机所有的资源在“死盯”一个问题,除 ...

接收可以用查询,上面对接收用查询要丢数的论断有问题,轮训是压上单片机所有的资源在“死盯”一个问题,除非其它中断在干扰,否则这是其处理能力的极限。接收使用查询的好处是,可以大大简化程序,特别是复杂的包结构数据的接收。

接收查询的一般方式是用中断+查询的方式进行,伪代码见下

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:单片机学习交流群:19131564  欢迎加入

13

主题

516

帖子

1

粉丝