想实现基于485芯片的多机通信,突然就不行了

2019-03-24 18:03发布

主机在从机处去数据,然后显示到液晶屏上,一开始还行,但是现在什么都不显示了,主机用按键控制在哪个从机处取数据。。附上我的程序,,大神,指教指教我,快哭了

主机:                                 void master()
                                         {
                                                if(key1==0)
                                                {
                                                            RS485_DIR=1;
                                                                SBUF=0x01;
                                                                while(TI==0);
                                                                TI=0;
                                                                SM2=0;
                                                                 delay(100);
                                                                RS485_DIR=0;
                                                                for(i=0;i<2;i++)
                                                                {
                                                                        while(RI==0);
                                                                        RI=0;
                                                                        str[i]=SBUF;
                                                                        }
                                                                        SM2=1;
                                                                      display1();
                                                                        iscii_change();
                                                                        display2();
                                                                        key1 = 1;
                                               
                                                }
                                                if(key2==0)
                                                {
                                                        delay(5);
                                                        if(key2==0)
                                                        {
                                                                RS485_DIR=1;
                                                                SBUF=0x02;
                                                                while(TI==0);
                                                                TI=0;
                                                                SM2=0;
                                                                delay(100);
                                                                RS485_DIR=0;
                                                                PON=SBUF;
                                                                while(RI==0);
                                                                RI=0;
                                                                SM2=1;
                                                                 iscii_change2();
                                                                display4();
                                                                key2 = 1;
                                                        }
                                                }
                                        }


                                  void main()
                                  {          
                                         Lcd_Init();
                                        TMOD = 0x20;
                                        TH1 = 0xFD;
                                        TL1 = 0xFD;
                                        TR1 = 1;
                                        PCON = 0x00;
                                        SCON = 0xF8;
                                        ES=1;
                                        EA=1;
                                        EX0=1;
                                        IT0=1;
                                        TI=0;
                                        RI=0;
                                        while(1)
                                        {
                                                master();
                                        }
                                 
                                           }

从机2:        void main()
                {        tab=34;
                        TMOD = 0x20;
                        TH1 = 0xFD;
                        TL1 = 0xFD;
                        TR1 = 1;
                        PCON = 0x00;
                        SCON = 0xF0;
                        EA=1;
                        ES=1;
                        DE=0;
                        RE=0;
               
                        while(1)
                        {
                                tab=34;
                                _nop_();
                        }
                }
                void serial (void) interrupt 4 using 1
                {
                          ES=0;
                          RI=0;
                          if(SBUF==0x02)
                          {
                                  SM2=0;
                                tab=34;
                                RE=1;
                                DE=1;
                                SBUF=tab;
                                while(TI==0);
                                TI=0;
                          
                          RE=0;
                          DE=0;
                          SM2=1;
                          ES=1;
                          }
                } 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
6条回答
xiangbinlvcha
2019-03-25 03:20
ienglgge 发表于 2015-4-13 20:05
先不用按键控制,只读取其中一个从设备的数据,看看显示是否正常。现在一上电就不正常吗

那样是可以的,因为一开始就没有用按键,现在是在原来的基础上加的,一开始还可以,后来突然显示不出来,然后我把芯片什么的换了一遍还是不行

一周热门 更多>