发表于:2003-07-02 17:01:00
楼主
请大家帮忙看看程序,接收出错,485全双工通讯。
uchar xdata trans_buf[BN]; //Output data buffer.
uchar xdata recei_buf[BN]; //Receive data buffer.
uchar trans_ctr; //receive data pointer.
uchar recei_ctr; //trans data pointer.
bit recei_finished;
bit trans_finished;
void serial_int (void) interrupt 4 using 1
{ unsigned char data c;
if (TI && !trans_finished) //output interrupt
{ if (trans_ctr >=BN)
{ trans_finished = 1;
trans_error = 1;
trans_ctr = 0;
SBUF = KEY_CR; //Send the delimiter char.
TI = 0;
}
else
{ c = trans_buf[trans_ctr]; //Get the data to output
SBUF = c;
TI = 0;
trans_ctr++;
if (c == KEY_LF||c == KEY_CR)
{ trans_finished = 1;
trans_ctr = 0;
}
}
}
if (RI && !recei_finished)
{ if (recei_ctr >=BN)
{ recei_finished = 1;
recei_error = 1;
recei_ctr = 0;
recei_buf[BN-1] = KEY_CR;
}
else
{ c = SBUF;
RI = 0;
recei_buf[recei_ctr] = c;
recei_ctr++;
if ( c == KEY_LF || c == KEY_CR )
{ recei_finished = 1;
recei_ctr = 0;
}
}
}
else if (TI || RI)
{ TI = 0;
RI = 0;
}
}