OCOM串口发送不了第二条数据。

 

#include <reg52.h>
#include "uart.h"
#include <string.h>

#define u8 unsigned char
#define u16 unsigned int

typedef struct uart
{
    u8 RX_BUFF[30];
u8 TX_BUFF[20];
u16 RX_COUNT;
u8 RX_OKFlag;
};

struct uart Uart = {0};

void UART_Configure(u16 BaudRate);
void UART_SendByte(u8 dat);
void UART_SendStr(u8* str);

void main(void)
{
 UART_Configure(9600);
 while(1)
{

}
}

void UART_Configure(u16 BaudRate)
{
u8 TH1_Dat;

switch(BaudRate)
{
case 1200: TH1_Dat=0xF8; break;
case 2400: TH1_Dat=0xF4; break;
case 4800: TH1_Dat=0xFA; break;
case 9600: TH1_Dat=0xFD; break;
case 14400: TH1_Dat=0xFE; break;
}
TMOD &= 0X0F;
TMOD |= 0X20;

SM0 = 0;
SM1 = 1;

REN = 1;

TH1 = TH1_Dat;
TL1 = TH1;

PCON |= 0X00;

EA = 1;
ES = 1;
TR1 = 1;
}

void UART_SendByte(u8 dat)
{
SBUF=dat;
while(!TI);
TI=0;
}

void UART_SendStr(u8* str)
{
 while(1)
{
if (*str=='\0') break;
SBUF=*str++;
while(!TI);
TI=0;
}
}

void UART_IRQHandler(void) interrupt 4
{
char xbuff[20];
if(RI==1)
{
RI=0;
Uart.RX_BUFF[Uart.RX_COUNT++]=SBUF;
if(Uart.RX_BUFF[Uart.RX_COUNT-1]=='/')
{
strcpy(xbuff,Uart.RX_BUFF);
if(strcmp(xbuff,"开灯/")== 0)
{
P1=0x00;
UART_SendStr("LEN_ON \r\n");
}
if(strcmp(xbuff,"关灯/")== 0)
{
P1=0xFF;
UART_SendStr("LEN_OFF \r\n");
}

Uart.RX_COUNT=0;
Uart.RX_OKFlag=0;
Uart.RX_COUNT=0;

}
}
}

知道了,把发送新行关了