我在我的板子上调试好了。
#include<reg52.h>
unsigned char aa,flag;
void main()
{
PCON=0x80;//加倍
TMOD=0x20;
SCON=0x50;
TH1=0xf3;//12M晶振最大4800,否则误差太大
TL1=0xf3;
TR1=1;
// SM0=0;
// SM1=1;
// REN=0;
EA=1;
ES=1;
while(1)
{
if(flag==1)
{
// ES=0;//关闭中断
flag=0;
SBUF=aa;
while(!TI)
TI=0;
// ES=1;
}
}
}
void ser() interrupt 4
{
P2=SBUF;
aa=SBUF;
flag=1;
RI=0;
}
你没有说你的板子晶振是多少。我的板子晶振12M,所以我只能最大4800的波特率,且加倍,才能正常通讯。
如果你的晶振是11.0592M,那么就可以是你现在设置的9600,不加倍也可以。 |