smart和屏幕通过485通信中断

smart和屏幕通过485通信中断,第1张

Smart和屏幕通过485通信中断可能有以下几个原因:

1. 通信线路故虚梁障:如果485通信的连接线路出现了问题,例如接触不良、短路或者开路等,就会导致通信中断。

2. 设备设置错误:如果设备的参帆和数设置错误,例如波特率、数据位、校验位等与对方不匹配,也会导致通信中断。

3. 噪声干扰:在工业环境下,由于电气噪声等原因可能会对485总线产生影响。这些噪声可以来自其他设备或者外部环境。当噪声超过一定程度时,就容易导致通信中断。

4. 软件程序问题:如果软件程序存在漏差轿运洞或者逻辑错误,在执行过程中可能会引起异常情况从而导致通讯中断。

5. 设备硬件故障:如果Smart或屏幕本身存在硬件故障(如芯片损坏),也有可能造成485通讯中断。

1.有人在发送数据之前,先关闭了串口中断!等待发送完毕后,再打开串口中断。

这样,在发送数据的等待期间内,如果收到了数据,将不厅手缺能进入中断函数,也就不会保存的这个新收到的数据。

这种处理方法,就会遗漏收到的数据。

2.有人薯判在发送数据之前,并没有关闭串口中断,当 TI = 1 时,是可以进入中断程序的。

但是,却在中断函数中,将 TI 清零!

这样,在主函数中的while(TI ==0),将永远等不到发送结束的标志。

3.还有人在中断程序中,并没有区分中断的来源,反而让发送引起的中断,执行了接收中断的程序。

对此,做而论道发扮辩表自己常用的方法:

接收数据时,使用“中断方式”,清除 RI 后,用一个变量通知主函数,收到新数据。

发送数据时,也用“中断方式”,清除 TI 后,用另一个变量通知主函数,数据发送完毕。

这样一来,收、发两者基本一致,编写程序也很规范、易懂。

更重要的是,主函数中,不用在那儿死等发送完毕,可以有更多的时间查看其它的标志。

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

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


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

原文地址: http://outofmemory.cn/yw/8247460.html

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

发表评论

登录后才能评论

评论列表(0条)

保存