微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 如何停止串口发送数据

如何停止串口发送数据

时间:10-02 整理:3721RD 点击:

问题是串口收到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 未清零

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top