#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;
}
}
}
知道了,把发送新行关了