串口通信呢,顾名思义,是两个设备进行通信的一种方式,有几种方式,按照传输的方向来说,有三种,一种是全双工,一种是半双工,还有一种单工,他们应该如何区分呢,我们假设有两台设备AB,AB之间谁都能给谁发送,能够同时发送,这就叫全双工;半双工呢,就是两者交替传输数据,这就是半双工;单工就是只能A向B传输数据,或者B向A传输数据,这就是半双工,根据不同的使用情况可以选用不同的方式,遥控器适用于单工,usb适用于全双工,RS485适用半双工。
除此之外还有并行通信和串行通信之分,并行通信就是数据各位同时传输,速度快但线数多(如 8 位并行需 8 根数据线),适用于短距离。串行通信就是数据逐位传输,线数少(UART 仅需 TXD、RXD、GND),适用于长距离。
我们在其中需要注意波特率,还有时序,数据帧格式等问题。每秒传输的二进制位数(如 9600bps 表示每秒传输 9600 位)是波特率,空闲时总线为高电平,起始位拉低,数据位低位在前,停止位拉高。是时序问题。
数据帧结构示意图:
时序示意图:
那么,我们应该如何来实现串口通信呢,,受定义一个.c文件,初始化串口函数,这个我们用到我们的烧录工具isp就行了。
然后加上ES=1;和EA=1;就是我们的串口函数了。
这就是我们完整的串口初始化函数了
然后晚场我们的主函数就ok了,后面就是定义我们的串口中断函数
这个就是我们在main函数中的串口处理函数了,