2.函数voidsend_ack()
函数send_ack()发送数据,第9位数据为0,程序代码如下:
3.接收地址帧函数voidrecv_addrframe()
接收地址帧函数recv_addr_frame()中从PO口取得本机地址后,置SM2为1,只接收地址帧,当接收到的地址与本机地址相同时,返回,否则继续等待。程序代码如下:
4.串行口初始化函数voidserial_init()
串行口初始化函数serialjnit()完成初始化串行口的功能。定时器Tl工作在8位自动重装方式,作为波特率发生器,串行口工作在方式2,波特率为9600bit/s。程序代码如下:
上面介绍的通信协议比较简单,这里仅仅为了说明本种多机通信的原理,实际使用时用户可根据现场的情况制订更为复杂、严格的协议。在数据传送过程中,还要注意对传输超时进行处理。
本例采用的多机通信方式,一定要使串口的工作设置为2或3方式下,并一定要理解SM2和RB8之间关于产生接收中断的条件,以及地址、数据信息之间的约定等。
各从机之间尽管在同一个网络上,但由于系统构成的是主从式结构,因此,它们之间的数据交换是不能直接进行的,都要通过主机的交换来实现,实际上,从电路的连接上来看,各从机之间构成的TXD-TXD和RXD-RXD的关系,也决定了相互间不能直接通信。
本文关键字:主机 综合-其它,单片机-工控设备 - 综合-其它