程序如下:
#include <reg51.h>
#define uchar unsigned char
uchar recv_buff=0;
uchar flag=0;
void init()
{
SCON=0x50; //串行工作方式1,允许接收数据
TMOD=0x20; //定时器1 ,方式2,自动重装的8位定时器
PCON=0x00; //波特率不加倍
TH1=0xFA; //波特率为4800
TL1=0xFA;
TR1=1; //定时器开启
EA=1; //开中断
ES=1; //串行口中断允许位
}
void send_char(uchar one_bit)
{
SBUF=one_bit;
while(TI==0);
TI=0;
}
void delay(uchar temp1)
{
unsigned int temp2;
for(;temp1<200;temp1++)
for(temp2=0;temp2<50000;temp2++);
}
void main(void)
{
init();
while(1)
{
if(flag==1)
{
flag=0;
ES=0;
send_char(recv_buff);
delay(100);
ES=1;
}
}
}
void UART_SER(void) interrupt 4 using 0
{
if(RI==1)
{
recv_buff=SBUF;
P1=recv_buff;
RI=0;
flag=1;
}
}
|