給你改了一下,收到一串字符,同樣發出去。
#include<reg51.h>
#define UART1_BUF_LENGTH 16
unsigned char recv_data,recv_flag,send_flag,recv_length;
unsigned char TX1_Cnt; //發送計數
unsigned char RX1_Cnt; //接收計數
bit B_TX1_Busy; //發送忙標志
unsigned idata RX1_Buffer[UART1_BUF_LENGTH]; //接收緩沖
void UART1_int (void) interrupt 4
{
if(RI)
{
RI = 0;
RX1_Buffer[RX1_Cnt] = SBUF;
if(++RX1_Cnt >= UART1_BUF_LENGTH) RX1_Cnt = 0;
}
if(TI)
{
TI = 0;
B_TX1_Busy = 0;
}
}
//串口初始化
void Uart_Init()
{
TMOD = 0x20;
SCON = 0x50;
TH1 = 0xfd;
TL1 = 0xfd;
TR1 = 1;
EA = 1;
ES = 1;
}
void Delay_xms(unsigned char x)
{
unsigned char y,z;
for(y = x;y>0;y--)
for(z=110;z>0;z--);
}
void main()
{
Uart_Init();
Delay_xms(500);
while(1)
{
if((TX1_Cnt != RX1_Cnt) && (!B_TX1_Busy)) //收到數據, 發送空閑
{
SBUF = RX1_Buffer[TX1_Cnt];
B_TX1_Busy = 1;
if(++TX1_Cnt >= UART1_BUF_LENGTH) TX1_Cnt = 0;
}
}
}
|