电路如下:
程序:
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;
}
故障现象:
可以正常运行2,3天,然后通讯中断,仪表并没有死机,波特率2400,普通双绞线,距离不到300米
|