串口中断

[复制链接]
 楼主| qq403245851 发表于 2011-7-20 20:27 | 显示全部楼层 |阅读模式
void UART_INT() interrupt 4
{
if(RI)
{
  uint16 count = 0xFFFF;
  while(1)
  {
   
   while(!RI)
   {
    if(count == 0)
    {
     UART_Receive_Flag = TRUE;
     return ;
    }
    count--;
   }
   UART_TxRxBuf [UART_Receive_Count++] = SBUF;
   RI = 0;
  }
  
}
else
{
// TI = 0;
}

}
对这段程序始终不是很理解 。
uint16 count = 0xFFFF;这句起什么作用呢。
UART_Receive_Count++。这个变量会不会不等于0呢?
hujiangdong 发表于 2011-7-22 16:37 | 显示全部楼层
超时参数吧  if(count == 0)
    {
     UART_Receive_Flag = TRUE;
     return ;
    }
COUNT=0时就返回

不过整个程序怎么写了死循环
原野之狼 发表于 2011-7-22 17:24 | 显示全部楼层
多读点优秀代码
ningling_21 发表于 2011-7-22 22:02 | 显示全部楼层
多读点优秀代码
原野之狼 发表于 2011-7-22 17:24


优秀代码在哪?
joyme 发表于 2011-7-23 09:02 | 显示全部楼层
uint16 count = 0xFFFF;这句起什么作用呢。
赋初始值

UART_Receive_Count++。这个变量会不会不等于0呢?
会不会看其他地方的设定,这个中断里不会,接收65535个字节后退出

这种代码确实不咋的
NE5532 发表于 2011-7-23 10:34 | 显示全部楼层
超时保护,后面那个变量是收到多少字节的计数器。

另外这个程序写得非常弱智。如果在我手下,头都会被骂裂。建议楼主想下弱智在什么地方,你就升华了。
joyme 发表于 2011-7-23 10:36 | 显示全部楼层
我也看错了,误导啊,惭愧——
bnyuli 发表于 2011-7-23 11:40 | 显示全部楼层
优秀代码在哪?
NE5532 发表于 2011-7-23 11:47 | 显示全部楼层
优秀代码在哪?
bnyuli 发表于 2011-7-23 11:40


在心中,想通原则就出来了。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

32

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部