在网上找了很久 没什么比较合适的代码 啃了半天手册 并且问了老师和前辈(感谢前辈老师不嫌弃我问这么简单的问题 现在想起来觉得太羞耻了)终于写出了 主要是波特率那边算来算去不对 现在终于会算了!!!!(太感动了)
这里是9600波特率 12mhz的晶振 经过串口助手写的
#include "reg52.h"
sfr T2MOD=0XC9;
unsigned char command =0x00;
void T2_Init()
{
T2MOD|=0X02;
T2CON=0X34;
TH2=RCAP2H=0XFF;
TL2=RCAP2L=0XD9;
SCON=0X50;
TR2=1;
ES=1;
EA=1;
}
void Send_Byte(unsigned char dat)
{
SBUF=dat;
while(TI==0);
TI=0;
}
void Receive()interrupt 4
{
if(RI==1)
{
RI=0;
command=SBUF;
Send_Byte(command+1);
}
}
void main()
{
T2_Init();
Send_Byte(0x03);
Send_Byte(0x04);
while(1);
}
注 在烧录完后记得重新冷启动才能收到数据
附波特率计算公式 (出自芯片手册)如11.0592mhz的就代入11059200 我就在这里少了m就算错了

原文:https://www.cnblogs.com/lulu-gogogo/p/12551534.html