本帖最后由 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也可以用来判断是数据还是地址。
我现在很疑惑的是,其它程序都没改变,只是换了一种通信方式,而查书,只是说会改变波特率,
也没看到有说这两种方式的其它不同之处。
因为程序现在不方便,但我把原来的串口通信方式2,改成了方式3,就可以了,只是改了寄存器的配置,其它的都没动。难道方式2还有什么要注意的???
一周热门 更多>