在网上找了很久 没什么比较合适的代码 啃了半天手册 并且问了老师和前辈(感谢前辈老师不嫌弃我问这么简单的问题 现在想起来觉得太羞耻了)终于写出了 主要是波特率那边算来算去不对 现在终于会算了!!!!(太感动了)
这里是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就算错了