+ -
当前位置:首页 → 问答吧 → UART0中断服务程序.请问在主程序中判断标志位,然后还要不要写输出啊?怎么写?

UART0中断服务程序.请问在主程序中判断标志位,然后还要不要写输出啊?怎么写?

时间:2011-08-08

来源:互联网

//UART0中断服务程序. 接收/发送字符  
void UART0_ISR(void) interrupt 4 using 1  
{  
   
  if(RI0) //中断标志 RI0=1 数据完整接收  
  {  
  RI0 = 0; //软件清零 
  RecBuf[Rindex] = SBUF0; //存入数组,供发送  
  Rindex++; 
  if(Rindex>=60)  
  Rindex = 0; 
  TH0=0xd8; //5ms的中断
  TR0=1;  
}
  else
{
  TI0=0; 
  for(i=0;i=SendLen;i++)  
  {  
  SBUF0=SedBuf[i];
while(!TI0);  
  }  
  }
}

作者: rxngzq   发布时间: 2011-08-08

写输出是什么意思?

可以在你的void UART0_ISR(void) 里边 同时实现 接收/发送的中断处理,

而你使用 if else 这样结构就不怎么正确了。  

可以
void UART0_ISR(void)
{
  关闭中断; // 别搞错了,最好保存下当前的中断使能状态
  读取中断事件;

  没有中断? 退出

  swith(中断ID)
  {
  case RX int:
  break;

  case TX int:
  break;
  }

  开启中断; // 不要开多了,也不要开少了,最好利用之前保存的中断使能的情况
}

作者: pro_or_gram   发布时间: 2011-08-08

热门下载

更多