avr单片机串口多机通讯程序

avr单片机串口多机通讯程序

ID:34415137

大小:43.00 KB

页数:6页

时间:2019-03-05

avr单片机串口多机通讯程序_第1页
avr单片机串口多机通讯程序_第2页
avr单片机串口多机通讯程序_第3页
avr单片机串口多机通讯程序_第4页
avr单片机串口多机通讯程序_第5页
资源描述:

《avr单片机串口多机通讯程序》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、AVR单片机串口多机通讯程序[日期:2010-09-01][来源:本站原创作者:admin][字体:大中小](投递新闻)在多机通信过程中,所有设备的RS232接口是并在通信线上的,其中只能有一个设备为主机,其他为从机,通信由主机发起。数据帧一般采用1位起始位、9位数据位,其中第9位(RXB8)被用作为表征该帧是地址帧还是数据帧。当帧类型表征位为“1”时,表示该帧数据为一个地址帧;当帧类型表征位为“0”时,表示这个帧为一个数据帧。  在AVR中,通过设置从机的UCSRA寄存器中标志位MPCM,可以使能USART接收器对接收的数据帧进行过

2、滤的功能。如果使能了过滤功能,从机接收器对接收到的那些不是地址信息帧的数据帧将进行过滤,不将其放入接收缓冲器中,这在多机通信中有效的方便了从机MCU处理数据帧程序的编写(同标准51结构相比)。而发送器则不受MPCM位设置的影响。  多机通信模式允许多个从机并在通信线路上,接收一个主机发出的数据。通过对接收到的地址帧中的地址进行解码,确定哪个从机被主机寻址。如果某个从机被主机寻址,它将接收接下来主机发出的数据帧,而其它的从机将忽略数据帧,直到再次接收到一个地址帧。(从机地址是由各个从机自己的软件决定的)。  对于在多机通信系统中的主机M

3、CU,可以设置使用9位数据帧结构(UCSZ=7)。当发送地址帧时,置第9位为“1”;发送数据帧时,置第9位为“0”。在这种情况下,从机也必须设置成接收9位数据帧结构。  多机通信方式的数据交换过程如下:1)设置所有从机工作在多机通信模式(MPCM=1)。2)通信开始是由主机先发送一个地址帧,如8位数据为0X01(1号从机地址),第9位=“1”,呼叫1号从机。3)所有从机都接收和读取该主机发出的地址帧。在所有从机的MCU中,RXC标志位被置位,表示接收到地址帧。4)每一个从机MCU读UDR寄存器,并判断自己是否被主机寻址。如果被寻址,清

4、UCSAR寄存器中的MPCM位,等待接收数据;否则保持MPCM为“1”,等待下一个地址帧的接收(该步应由用户软件处理实现):A)作为1号从机的MCU处理过程为:收到地址帧后,判定读取UDR数据0X01为自己的地址,将MPCM位置“0”,接收之后所有主机下发的数据帧,直到下一个地址帧为止。B)其它从机MCU的处理过程:收到地址帧后,判定读取UDR数据0X01不是自己的地址,将MPCM位置“1”,这样他们将忽略主机随后发送的数据帧,直到主机再次发送地址帧。5)当被寻址的从机MCU接收完最后一个数据帧后,将MPCM位置位,等待下一个地址帧的

5、出现(该步也应由用户软件处理实现),然后从步骤2开始重复。[转]例子;通讯规则:1:时钟7.3728MHz/波特率9600/9个数据位/奇校验/1个停止位/硬件多机通讯功能/2:通讯连接采用硬件MAX485,双向单工3:每个上行/下行的数据包的字节个数都是一样的(通讯数据量)4:每个上行/下行的数据包都采用CRC8校验5:数据接收采用中断+查询的方式6:总是由主机向从机发送一个数据包,从机收到数据包后向主机回复一个数据包7:不管是主机还是从机,如果收到的数据包有任何错误,都将丢弃该数据包,等效于没有接收8:从机之间不能相互通讯,必须通

6、过主机才能交换数据9:无效地址是0,主机地址是1,从机地址是2.3.4......广播地址是255*/#include#include#include#include//CRC校验函数就在这个文件里面#defineamount10//设定通讯数据量(包括1个地址帧,n个数据帧,1个校验帧)unsignedcharsend[amount];//发件箱unsignedcharinbox[amount];//收件箱unsignedcharn=0;//记忆中断次数//---

7、-----------------------------------------------------------------interrupt[12]Rxd_isr(void)//接收中断{unsignedcharERROR=0;if(UCSRA&4

8、

9、UCSRA&16)ERROR=1;//奇偶效验错误或者帧错误就记录下来inbox[n]=UDR;//保存到收件箱n++;//记忆中断次数if(ERROR)inbox[0]=0;//如果通讯有错,收件箱的地址帧就标记成无效地址0}//------------------------

10、---------------------------------------------voidmain(void){usart_init();//串口初始化UCSRA=0;//主机关闭地址筛选功能(多机通讯功能)#a

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。