打印

串口中断问题

[复制链接]
1096|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
baidudz|  楼主 | 2012-1-17 18:44 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
帮忙看看这段程序,上位机发送串口中断命令后,单片机运行程序,执行到串口发送函数后,发送数据,然后就退不出小循环,一直在发送数据,程序不继续执行。
如果上位机不发送串口中断命令,则能够退出小循环,程序可以继续执行,到底哪里出错了?
while(1)//大循环
  {   
  rep_cnt=0;
  while(rep_cnt<5) //小循环次数控制
  {  
  Data2Ascii(disp_str,wendu,1);   
  Data2Ascii(disp_str1,shidu,2);  
  while(Countor<=Time_Interface1)
  {if(Status) return;}   
   
  rep_cnt++; ////一次结束!!加 1   

  //调用串口发送函数
  send_string_com(disp_str,9);
  send_string_com(disp_str1,9);   
  }  

  Countor=0;   
  SWITCH=bON;   

}


串口发送函数如下:
//向串口发送一个字符
void send_char_com( unsigned char ch)
{
SBUF=ch;
while (TI== 0 );
TI= 0 ;
}

//向串口发送一个字符串,strlen 为该字符串长度
void send_string_com( unsigned char *strw, unsigned int strlen)
{
unsigned int k= 0 ;
do
{
send_char_com(*(strw + k));
k++;
} while (k < strlen);
}

串口接收中断函数如下:
void serial() interrupt 4 using 3  
{

if(RI)
  {
RI=0;
mc=SBUF;
  }
if(mc==0x01)
{
Status=ID_START;
}

相关帖子

沙发
秋天落叶| | 2012-1-17 18:58 | 只看该作者
void serial() interrupt 4 using 3
{

if(RI)
//这里不要关中断吗?

使用特权

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

本版积分规则

239

主题

2284

帖子

0

粉丝