C51多机通信 ,RB8口总为零

2019-07-16 06:55发布

本帖最后由 lirongqing 于 2011-7-12 19:32 编辑

       用一个单片机做为主机,向三个从机发命令,使用RB8口来决定传数据还是地址。
从机通过判断RB8口是0还是1来分别数据和地址。
      现在的问题是,从机能根据SM2和RB8口,来决定是否读主机发出的命令,
但我用if(RB8==1)来判断,却发现RB8口总是零。
      使用AT89S51,串口通信方式2,寄存器如下配置:
SCON=0XB0;
PCON=0X00;
IE=0X90;
后来改用了方式3通信,可以正常工作了。寄存器如下配置:
SCON=0XD0;
TMOD=0X20;
PCON=0X00;
TH1=0XFD;
TL1=0XFD;
TR1=1;
IE=0X90;
运行正常,RB8也可以用来判断是数据还是地址。
我现在很疑惑的是,其它程序都没改变,只是换了一种通信方式,而查书,只是说会改变波特率,
也没看到有说这两种方式的其它不同之处。
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。