单片机串口发送数据采用中断方式好还是查询方式好?为什么我公司原有的程序都是查询方式啊

如题所述

单片机采用中断或查询方式使用串口,这是根据实际应用的需要确定的,没有好/坏之分。你公司之所以采用查询方式处理串口程序,是因为你们的应用程序不苛刻单片机的时间资源,采用查询的方式就能满足应用的需要,所以没采用中断,大概是基于这个原因吧,拙见仅供参考。追问

您的回答我很满意,可是有一个说法,说发送大量数据查询方式好点,不知您听过没有?作何解释啊?

追答

大量连续的向串口发送数据,就没有必要使用中断了,因为单片机根本没有时间去处理其它事务,这样采用查询的方式反而效率更高,实际应用中向串口发送数据很少使用中断,更多的是使用接收中断,除非单片机的时间资源特别的紧张,连等待一个数据的发送时间也得利用。

温馨提示:内容为网友见解,仅供参考
第1个回答  2013-01-22
那要看你那头的程序工量了,如果接收端干的事很多,当然就不能用中断了,会影响其它工作的,如果只干这一个事,用中断省事当然追问

为什么接收端干的事多少和我这边的发送方式有关?它可以采用中断接收啊,也不影响接收啊?

追答

哦啊,我看错了,看成接收数据用什么方式了,改善数据怎么用中断方式啊,不明白什么意思了,发送不就是想什么时候发的时候就发吗

第2个回答  2013-01-22
一般情况下用查询方式,个人不推荐用中断方式追问

为什么?查询会有while(xxx),都说这样不好,可能会出现假死机现象,而中断则不强制占用CPU的太多时间资源,查询哪里好呢?

请教51单片机使用串口中断发送和非中断发送有
所以,中断方式,节省单片机的时间,效率是最高的,也是正式产品采用的方式。查询方式,要整个发送数据期间内,除了发送数据是有效的指令,其余时间都是在循环等待,浪费了大量的时间,效率极低。但是,很适合一个小题目小程序采用,对于初学者编程比较容易。

avr单片机串口程序,发送数据利用中断方式好,还是查询方式好,为什么?
如果数据量很少,单片机的时间资源也比较宽松,采用查询的方式则更方便,先把眼下的事件处理完了再处理别的事件,这样做事情更有序,也比同时处理多个事件更不容出错。

...系统中有多个中断,用串口发送数据用中断还是查询法?
中断有优先级的,你要具体看。然后串口发送数据当然是用中断了,速度才有保障啊。

51单片机串口发送数据时会产生中断吗
如果开了串口中断,接收,发送都会产生中断。建议,都用中断方式。串口接收到数据后,如果没有读出来,又接收到数据了,前面的一个数据就丢掉了。特别是当你接收到字符串的时候,你关中断,或者用查询方式,就容易掉数据。

...一下单片机串口通讯的串口中断方式和查询方式的区别吗?
通俗的说,中断方式下单片机可以放心干其他的活,一旦串口有一个字节有效接收数据或者发送一个字节完毕,串口会立即通知CPU进行后续处理。特点是可靠、及时、占用CPU资源少。查询方式就是CPU间断地(连续的就不用指望干其他活了)查询串口的接受发送标志,决定是否进行后续处理,在查询的间隙里做其他工作。

51单片机如何进行多字节串口接收?!!!
串口的收发可以用查询和中断两个办法来实现。1、查询方法更适合于半双工机制,编写的思路简单,程序结构简单,在全双工通信中易出问题。2、中断方法则更高效。你的程序把两种方法混搭使用,容易出错。以你的程序为例,一旦收到首个23H字符,就停止在中断服务中for循环里面等待5个剩余字符。假设传感器只发...

求助stc 单片机串口发送接收多个数据的程序
收\/发一个数据会了,那收\/多个的方法也相同。接收最好用中断方式,不影响其它程序执行。发送时,采用查询方式比较方便好写。发送多个,可用for循环控制,循环体内就是发送一个数据的程序,只是循环发送了。在循环发送前,把串口中断关了,ES=0;发送结束再打开中断,ES=1;...

51单片机串口发送数据
程序采用了查询式发送,for(i=0;i<6;i++) {SendChar(askconfig[i]); },共发送了6个字符。再去查询收到否。这种方法,就是有问题的,发送6个字符时,就可能收到了好几个字符,而没有及时保存,完全可能丢失信息。应该采用中断方式接收;发送,也可以用查询,也可以用中断。方法弄清楚了,程序...

单片机上电发送乱码00,有时候第一帧数据还会缺少首个字节 随后的数据正 ...
最好不要这样,采用查询式发送比较好。因上电的初始程序就开中断了吧,而上电会因干扰产生中断信号。或者串口中断函数中要判断一下是由TI还是由RI产生的中断。关电时,有时会发送一个乱码,这正常。你是用电脑接收的吧。因你没有上传一点程序,所以,这些都是猜测的。如果需要在中断函数中发送,最好...

单片机串口发送数据时不需要产生中断吗
串口发送数据一般都有“中断法”和“轮询法”。中断法就是指发送寄存器为空时产生发送中断请求,可以在发送中断服务子程序中向发送缓冲器中写下一个要发送的数据。而“轮询法”就是指由CPU不断检查串口的发送中断标志,当这个中断标志被置1的时候表示发送缓冲器为空,可以向里面写入下一个要发送的数据...

相似回答