单片机串口采用查询方式实现通信,有什么优点和缺点

如题所述

假设波特率是9600 , 那么一字节数据收发都需要大约1ms,
先说接收:也就是说你需要在数据接收1ms内将字节从串口寄存器中读出来,否则下一个数据会刷新寄存器(接收寄存器只有一个),覆盖掉之前的数据。如果你某几个函数执行时间大于1ms,就有可能丢数据。采用中断的话就不需要了,因为数据一来进入中断你就知道了,不会被其他函数耽误。
再说发送:同样的发送数据1字节1ms,假如你发送1000个字节,就需要1s。你用扫描发送的话就是不断的发,1000字节你就耽误1s,这段时间你的程序做不了其他事情,浪费1s时间。如果用中断,你只要把1000个字节写到某个数组(时间一共可能都不会超过1ms),然后放到发送中断,这时候相当于在后台等1000次1ms一个一个发完数据,几乎不影响main函数里面的函数。应为每次中断一字节将数据填入发送中断数据寄存器(时间忽略不计),然后单片机硬件会等1ms时间后中断(通知你发完了),在填入下一个数据,填一千次。在哪1ms里,你的程序依然并行的执行main里的其他函数。
查询方式浪费时间,但容易理解也好写,数据不多的话发送可以查询,接收一般用中断,除非你程序不多,没有太多的delay函数占用时间。
温馨提示:答案为网友推荐,仅供参考
相似回答