#includereg52.h#defineucharunsignedchar#defineuintunsignedintuintinfor;voidmain(){SCON=0x50;//设置串口工作方式为:10位串口发送TMOD=0x20;//00100000表示定时器T1工作在定时模式、工作方式为:八位自动重装TH1=0xfd;//通过波特率计算公式,计算出所需波特率对应的定时器的溢出率,设置相应重装的数,此处波特率为9600TL1=0xfd;TR1=1;//开启定时器让定时器T1工作EA=1;//开总中断ES=1;//开串口中断//REN=1;//允许串口接收数据while(1);}voidCK_timer1()interrupt4{if(RI)//判断是否是接收数据引起的中断{RI=0;//清接收中断标志位infor=SBUF;//从SBUF中读取接收到的数据REN=0;//不允许串口接收数据//SBUF=infor;//将数据送给SBUF,通过串口发送出数据。}else//如果是发送数据完成引起的中断{TI=0;//清发送中断标志位//REN=1;//发送完成,允许串口接收数据。}}/*串口实验注意事项:1、串口设置过程:设置串口工作方式、设置波特率2、串口中断程序运行条件:开串口中断、TI或RI置1。3、TI和RI都是由硬件置1,但需要由软件对其进行清零。4、输出SBUF和接收SBUF共用一个地址99H,但硬件上并不是同一个地方*/