|
本帖最后由 Gflgfl 于 2020-5-20 00:17 编辑
我在protues上用让他们之间通信,有的时候乱码,有的时候就接受不到,按说可以通信呀,波特率和方式都一样。两个stc就可以正常通信。(好困惑)发送端(at89c52):
void main()
{
unsigned char i;
LcdInit();
SCON=0x50; //配置SCON寄存器为0101 0000,选取方式1,允许接收
PCON=0; //不加倍
TMOD=0x20; //定时器方式2
TL1=TH1=0xfd; //设置波特率9600(11.0592Mhz)
TR1=1; //开启定时器1
while(1)
{
for(i=0;i<9;i++)
{
SBUF=i;
while(!TI);
TI=0;
LcdWriteCom(0x80);
LcdWriteData(i+'0');
delay(40000);
}
}
}
接收端(stc15):
void main()
{
unsigned char dat;
port_mode();
LcdInit();
SCON=0x50; //配置SCON寄存器为0101 0000,选取方式1,允许接收
PCON=0; //不加倍
AUXR=0x00; //12分频且使用定时器1作为波特率发生器
TMOD=0x20; //定时器1方式2
TL1=TH1=0xfd; //设置波特率9600(11.0592Mhz)
// TL1=TH1=0xfa; //设置波特率9600(22.1184Mhz)
TR1=1;
while(1)
{
while(!RI);
RI=0;
dat=SBUF;
LcdWriteCom(0x80);
LcdWriteData(dat);
}
}
望大家指点迷津(好困惑),感谢感谢,一起学习
|
|