帮忙看看这段程序,上位机发送串口中断命令后,单片机运行程序,执行到串口发送函数后,发送数据,然后就退不出小循环,一直在发送数据,程序不继续执行。
如果上位机不发送串口中断命令,则能够退出小循环,程序可以继续执行,到底哪里出错了?
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;
} |