如何停止串口发送数据
问题是串口收到AA后开始间隔发送数组sendbuffer,但是想串口发送FF却无法停止串口发送数据?求帮助
void UartInit2(void) //9600bps@11.0592MHz
{
AUXR &= 0xf7; //波特率不倍速
S2CON = 0x50; //8位数据,可变波特率
BRT = 0xFD; //设定独立波特率发生器重装值
AUXR &= 0xfb; //独立波特率发生器时钟为Fosc/12,即12T
AUXR |= 0x10; //启动独立波特率发生器
IE2=0x01; //允许串口2中断ES2=1
}
//************************************************//
// 串口2发送数据 //
//************************************************//
void sendoneByte(uchar c)
{
uchar temp=0;
IE2=0x00;//关闭串口2中断ES=0
S2CON =S2CON&0xFD;//TI=0
S2BUF=c;
do
{
temp=S2CON;
temp=temp&0x02;
}while(temp==0);
S2CON =S2CON&0xFD;//发送结束TI=0清零串口发送完成标志
IE2=0x01;//允许串口2中断ES2=1
}
void sendString(uchar *aaa)
{
while(*aaa!='\0')
{
sendoneByte(*aaa);
aaa++;
}
}
//********************************************//
// 串口2中断服务
//********************************************//
void Com2_Service(void) interrupt 8
{
S2CON=S2CON&0xFE;//清标志位
accept=S2BUF;
if(accept==0xAA)//AA开始传送
com2flag=1;
else if(accept==0xFF)//结束命令
com2flag=0;
}
// 定时器中断0 //
void time0_init()
{
TMOD =0x02;//定时器工作方式2
TH0=6;
TL0=6;
ET0=1;//开定时器0
}
void time0_serve() interrupt 1
{
num++;
if(num==37)//10ms
{
num=0;
timeflag=1;
}
}
void main()
{
UartInit2();
time0_init();
EA=1;//开总中断
while(1)
{
switch(com2flag)
{
case 1:TR0=1;
break;
case 0:TR0=0;
break;
}
if(timeflag==1)
{
sendString(sendbuffer);//sendbuffer是字符数组
}
}
}
问题是串口收到AA后开始间隔发送数组sendbuffer,但是想串口发送FF却无法停止串口发送数据?求帮助
好吧,,,timeflag 未清零
