谁帮我看看串口中断错在哪里?

kut00 2009-09-11 01:53:08
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;
}
}
}




现在的问题是,我用调试助手的 一个一个发时候,没有问题。但是一起发完就出现出错。 不知道哪里有错误请大人帮忙
...全文
95 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
pigiisheige 2009-09-12
  • 打赏
  • 举报
回复
能否将出错的情况详细点描述下?
贝隆 2009-09-11
  • 打赏
  • 举报
回复
学习
schlafenhamster 2009-09-11
  • 打赏
  • 举报
回复
发送可以用轮询的办法,接受用中断。

27,382

社区成员

发帖
与我相关
我的任务
社区描述
硬件/嵌入开发 单片机/工控
社区管理员
  • 单片机/工控社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧