485电路图如下:
程序如下:
sbit DE_RE = P1^0;
/***********************************************************************
延时程序
************************************************************************/
void Delay_ms(uint ms)
{
unsigned char k;
while( ms-- )
{
for ( k = 0; k < 114; k++ );
}
}
/************************************************************************
接收数据子函数
*************************************************************************/
unsigned char rxdata()
{
uchar dat;
DE_RE = 0; //接收数据有效
while ( !RI ) ; //等待数据接收完
dat = SBUF; //接收数据
RI = 0; //清中断标志
SM2 = 0;
return(dat);
}
/***************************************************************
* 发送一串数据
****************************************************************/
void put_buf(uchar *RX_Buf,len)
{
uchar i = 0;
DE_RE = 1;
while ( i < len )
{
SBUF = RX_Buf[ i++ ];
while ( !TI );
TI = 0;
Delay_ms(1);
}
DE_RE = 0;
}
一般可以正常通讯1,2天,然后信号就中断了,一直没有查明原因,请高人指教一下,波特率是2400,连线有2百多米,用的是普通的双绞线(接电灯的那种),主机和从机没有共地,多谢了 |