打印

串口中断

[复制链接]
1892|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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


优秀代码在哪?

使用特权

评论回复
5
joyme| | 2011-7-23 09:02 | 只看该作者
uint16 count = 0xFFFF;这句起什么作用呢。
赋初始值

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

这种代码确实不咋的

使用特权

评论回复
6
NE5532| | 2011-7-23 10:34 | 只看该作者
超时保护,后面那个变量是收到多少字节的计数器。

另外这个程序写得非常弱智。如果在我手下,头都会被骂裂。建议楼主想下弱智在什么地方,你就升华了。

使用特权

评论回复
7
joyme| | 2011-7-23 10:36 | 只看该作者
我也看错了,误导啊,惭愧——

使用特权

评论回复
8
bnyuli| | 2011-7-23 11:40 | 只看该作者
优秀代码在哪?

使用特权

评论回复
9
NE5532| | 2011-7-23 11:47 | 只看该作者
优秀代码在哪?
bnyuli 发表于 2011-7-23 11:40


在心中,想通原则就出来了。

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

0

主题

32

帖子

1

粉丝