求助:怎么才能保证51串口只发送一次数据?

2019-07-15 23:19发布

求助:怎么才能保证51串口只发送一次数据? 现在是不断的发送 大神赐教!

void UART_init (void)
{
EA = 1;
ES = 1;
PCON |= 0x80;  //使能波特率倍速位
SCON = 0x50;  //8位数据,可变波特率
AUXR |= 0x40;  //定时器1时钟为Fosc,即1T
AUXR &= 0xfe;  //串口1选择定时器1为波特率发生器
TMOD &= 0x0f;  //清除定时器1模式位
TMOD |= 0x20;  //设定定时器1为8位自动重装方式
TL1 = 0xFA;  //设定定时初值
TH1 = 0xFA;  //设定定时器重装值
ET1 = 0;  //禁止定时器1中断
TR1 = 1;  //启动定时器1
}
void DELAY_MS (uint z)
{
uint x,y;
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void UART_R (void) interrupt 4  using 1
{   
     unsigned char UART_data;   
     RI = 0;
     UART_data = SBUF;  
}
void UART_T (unsigned char UART_data)
{
   SBUF = UART_data;
   while(ti == 0);
   TI = 0;   
}
void UART_TC (unsigned char *str)
{
  while(*str != '')
  {
     UART_T(*str);
     *str++;
  }
  *str = 0;
}
void main()
{
  UART_init();
   UART_TC("pl0 sq0 ONCE ");
}
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
6条回答
dongyumin
1楼-- · 2019-07-16 02:42
 精彩回答 2  元偷偷看……
liwenbiao
2楼-- · 2019-07-16 07:18
void main()
{
  UART_init();
   UART_TC("pl0 sq0 ONCE ");
}单片机一直在循环运行main函数,你要发一次得在main里加void main()
{
  UART_init();
   UART_TC("pl0 sq0 ONCE ");
while(1);
}
嵌入式linux工程
3楼-- · 2019-07-16 10:04
弄一个标志位,初值为0,发送一次后为1,只有这个标志位为0才发送
yzx41
4楼-- · 2019-07-16 11:52
关中断{:1:}
soul.bringer
5楼-- · 2019-07-16 16:09
谢谢分享                                    
Namgal
6楼-- · 2019-07-16 19:11
在主函数里写一个空的while,死循环就行了,或者写一个按键程序,按按键才发送也可以

一周热门 更多>