#include<reg52.h>#define uint unsigned int
#define uchar unsigned char/*本代码实现串口的收发功能,PC发送什么单片机就接收什么,
然后单片机又把接收的发出去,本次编写了在发送单个字符串
函数上添加了字符串函数,方便以后发送字符串调用*///毫秒延迟函数
void delay(uint ms)
{uchar i;while(ms--)for(i=0;i<113;i++);
}//串口初始化函数
void Uart_init()
{TMOD |= 0x20; //定时器1工作在模式2,自动重装模式SCON = 0x50; //串口工作方式1PCON = 0;TH1 = 0xfd; //波特率9600 (12M)TL1 = 0xfd;TR1 = 1; //启动定时器1REN = 1; //允许接收EA = 1; //允许中断ES = 1; //串行中断允许
}//串口发送一个字符函数
void Uart_send(unsigned char a)
{SBUF = a; //SBUF是一个寄存器,将字符a寄存在SBUF中while(!TI); //等待发送完毕TI = 0; //软件复位
}//串口发送字符串函数
void Uart_str(unsigned char *s)
{while(*s != '\0') //判断字符串是否发送完毕{Uart_send(*s);s++; //字符地址+1}
}void main()
{Uart_init(); //串口初始化while(1){delay(1000);}
}//串口中断服务函数
void Uart() interrupt 4
{unsigned char temp; //用于存放读出的寄存器SBUF中的值if(RI) //检测串口接收中断标志,接收时为1{temp = SBUF; //将SBUF寄存器的值存在temp中Uart_send(temp); //发送tempRI = 0; //清中断标志}
}