PC机与单片机用RS485通信时,单片机如何用中断接收一帧数据?一帧数据包括7个字符。

PC机与单片机用RS485通信时,单片机如何用中断接收一帧数据?一帧数据包括7个字符。,第1张

有些人,不懂就不要瞎说,误导人啊

PC机与单片机直接是不能进行通信的,

我们知道pc与单片机多采用232串口通信,你使用的是485方式,也是可以的,不过PC机直接不支持485 啊,于是乎,你要用一个RS232-485的转换器,单片机端直接用MAX485芯片就行了,这是硬件。

数据通信与232通信是一样的,不过485是半双工的,单片机端需要做收发控制。

单片机采用中断方式或扫描方式都行,给你一段中断程序,你参考一下:

com_interrupt(void) interrupt 4 using 3

{

unsigned char RECEIVR_buffer

if(RI) //处理接收中断

{

RI=0 //清除中断标志位

dat[n++]=SBUF

if(n>7)flg=1

}

}

flg是一个判断标志,如果你接收到7个数据后,标志置1,

在程序中处理为:

如果flg==1,你可以对你的dat数据处理,同时放n=0,等待下一次数据接收

OK

转到485的情况下,其实每个485口都收到了信息,根据协议来说,帧数据里面的地址是用来区分执行节点的,在每个485节点上的程序改动一下,只要接收到帧数据里面的命令就执行,但是这样容易造成485网络数据拥堵 。

RS485通信,每个设备通常是要有地址的,主从机通信时是按地址进行的。当主机向多个设备发送数据时,可以采用广播模式,即对所有从机发送。而从机接收到数据后不允许返回数据的。这可以在通信协议中加上广播模式,要是用modbus协议通信,就带有广播模式。

扩展资料:

内部集成 ARP,IP,TCP ,HTTP,ICMP,SOCK5,UDP,DNS等协议。RS-485/422转换提供数据自动控制。RS-232/422/485三合一串行接口 , 300-230.4KBPS波特率。

支持动态IP(DHCP)和静态IP,支持网关和代理服务器,可以通过Internet传输数据。提供数据双向透明传输,用户不需要对原有系统做任何修改。所有串口内置600W防雷 。10/100M以太网、自动侦测直连或交叉线。可以同时支持多个连接。

参考资料来源:百度百科-串口转换器

modbus用串口通信时一般不用设端口地址的,每一个485口可以并联最多32个从设备(自然最好将地址的值定义在1到32之间),每个从设备的地址不一样,从设备会根据主设备发送帧报文中的地址判断是不是在查询自己,若是则进行应答。至于地址设置,只要在从设备通信程序中定义一个地址变量,可以给地址变量赋定值,也可以编个小程序根据需要设置地址变量的值,最后通过比较该值与接收的报文中的地址是否一致,若一致,则进行返回应答帧。


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/yw/11775675.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-05-18
下一篇2023-05-18

发表评论

登录后才能评论

评论列表(0条)

    保存