|
本帖最后由 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);
}
}
望大家指點迷津(好困惑),感謝感謝,一起學習
|
|