27,382
社区成员
发帖
与我相关
我的任务
分享
void serial_inter(void) interrupt 4
{
INT8U Temp;
if (TI == 1)
{//发送中断
Clear_TI;
if (TxCnt <8 )
{
SBUF=SenDataBuf[TxCnt];
TxCnt++;
}
else
{
TxCnt=0;
REN=1;
RECV_ENABLE_485;
}
}
else
{ //接收中断处理
Clear_RI;
Temp = SBUF;
switch (RxCnt)
{
case 0:
if (Temp == Start_Bit)
{
RxCnt++;
}
break;
case 1:
if (Temp =='H')
{
RecDataBuf[RxCnt-1] = Temp;
RxCnt++;
}
else if (Temp == Start_Bit)
{
RxCnt = 1;
}
else
{
RxCnt = 0;
}
break;
case 2:
switch (Temp)
{
case 'A':
case 'B':
case 'U':
RecDataBuf[RxCnt-1] = Temp;
RxCnt++;
break;
default:
if (Temp == Start_Bit)
{
RxCnt = 1;
}
else
{
RxCnt = 0;
}
break;
}
break;
default:
if (RxCnt <15 )
{
RecDataBuf[RxCnt-1] = Temp;
RxCnt++;
}
else
{
RxFin = 1;
RxCnt=0;
TXD_ENABLE_485; //暂时添加
REN =0; //不容许接受
}
break;
}
}
}