碰到了这么一个问题,写了一个串口函数,在中断的时候很费解,为什么发数据的时候能进入中断收数据的时候无法进入中断。中断处理函数如下
void Serical_Interrupt1()interrupt 4
{
unsigned char temp,temp_next;
unsigned char i;
if(RI)
{
RI=0;
temp=SBUF;
// led2=0;
if((temp==':')|(rsbuf[0]==':'))
{
rsbuf[ryb]=temp;
ryb++;
if((rsbuf[0]==':')&&(temp==0x0A)&&(temp_next==0x0D))
{
length=ryb;ryb=0;temp=0;temp_next=0;
for(i=0;i<sizeof(rsbuf);i++)
{
ssbuf=rsbuf;
}
receive_flag1=1;
memset(rsbuf,0,64);
}
temp_next=temp;
}
else
{memset(rsbuf,0,64);ryb=0;}
}
if(TI)
{TI=0;}
}
数据发送函数为:
void PrintString1(unsigned char *puts)
{
for(;*puts !=0;puts++)
{
SBUF=*puts;
while(!TI);
TI=0;
}
}
实在搞不明白
|