void init_ser()
{
TMOD=0X20;//定时器1工作在方式2
TH1=0XFD;
TL1=0XFD; //波特率9600
TR1=1;
EA=1;
SM0=0;
SM1=1;
REN=1;//允许串口接收
ES=1;//开串口 中断
}
void delay(unint z)
{
unint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--);
}
void ser() interrupt 4 //中断函数不用声明
{
if(RI==1)
{
RI=0;
ser_receive=SBUF;
if(ser_receive=='a')
{
m=1;
}
if( m==1 && ser_receive!='z')
{
receive_data[i]=ser_receive;
i++;
// if(i==36)
// {
// i=0;
// ser_flag=1;
// }
}
else if (ser_receive=='z')
{
i=0;
m=0;
ser_flag=1;
xianshi=1;
}
}
}
void uart()
{
if(ser_flag==1)
{
ES=0;
ser_flag=0;
for(j=0;j<57;j++)
{
SBUF=receive_data[j];
while(!TI);
TI=0;
delay(10);
}
ES=1;
}
}
我刚写的,接受以a开始,以z结束的字符串,测试没问题。
|