avr单片机串口程序,发送数据利用中断方式好,还是查询方式好,为什么?

 我来答
c3344c
2013-03-29 · TA获得超过2419个赞
知道小有建树答主
回答量:966
采纳率:57%
帮助的人:689万
展开全部
AVR单片机的UART在数据发送结束时产生中断。如果数据量比较大并且需要连续发送,而单片机的时间资源又很紧张,这时最好采用中断的方式发送数据,把整个数据包扔给中断函数去处理。UART每发送完1个字节发生1次中断,中断之后就从数据缓存读取下一个字节,周而复始直至数据全部发送完毕,这样,单片机可以把有限的时间资源,支配到实时要求更高的事件处理。
如果数据量很少,单片机的时间资源也比较宽松,采用查询的方式则更方便,先把眼下的事件处理完了再处理别的事件,这样做事情更有序,也比同时处理多个事件更不容出错。
追问
atmega16,主频16M,对外通信距离不超过2米,能用多大的波特率。在这种波特率情况下,多少数据量的发送算是少而采用查询方式。

我看到的代码绝大部分都是查询方式。
追答
16M的频率最高波特率是1Mbps,但不知道你是单片机对单片机的通讯,还是单片机对PC的通信,这是有区别的。对于单片机一般3-5个字节算是少量的,但这仅是个人观点。但数据量的大小是相对于单片机的时间资源而言的,如果时间资源特别的窘迫,哪怕一个字节的查询时间也要计较,那只能另当别论了。至于你看到代码大部分采用查询的方式,这是因为单片机的内存空间有限,一般不会安排大量数据发送。但这并不是说明采用查询方式就一定比采用中断方式更好,重要的还是“因时制宜”。 
匿名用户
2013-03-29
展开全部
中断还是查询不是根据用的是什么单片机决定的,而是根据程序的逻辑。

一般情况下,单片机这边处理可以这样做:定时中断接收,接收正确,使能发送中断,然后发送数据就好了

另外一端的配合可以一时,定时进入发送中断,定时进入接收中断,或者和单片机一样的处理,接收正确再发送!
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式