亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標(biāo)題: 新人想用51單片機(jī)做多機(jī)通信,麻煩大佬指點(diǎn)程序設(shè)計(jì)思路 [打印本頁(yè)]

作者: cc_Jonah    時(shí)間: 2019-4-3 20:29
標(biāo)題: 新人想用51單片機(jī)做多機(jī)通信,麻煩大佬指點(diǎn)程序設(shè)計(jì)思路
我想以主機(jī)作為母體,每加入一個(gè)新的從機(jī),主機(jī)都能掃描到并賦予一個(gè)新的地址,然后在主機(jī)上可以控制新的從機(jī)(一號(hào))。在一號(hào)從機(jī)上能夠繼續(xù)加入新的從機(jī),無論是串聯(lián)狀還是發(fā)散狀,都能由主機(jī)來控制,而不是直接連接到主機(jī)。請(qǐng)問大佬該怎么編寫代碼?或者提示一下思路。謝謝了!


作者: yzwzfyz    時(shí)間: 2019-4-4 12:58
先做好通訊主從之的通訊協(xié)議,協(xié)議說得通就行,不難。
作者: wangshengs    時(shí)間: 2019-4-4 13:56
用IIC總線來搞
作者: cc_Jonah    時(shí)間: 2019-4-4 14:40
yzwzfyz 發(fā)表于 2019-4-4 12:58
先做好通訊主從之的通訊協(xié)議,協(xié)議說得通就行,不難。

謝謝提點(diǎn)
作者: cc_Jonah    時(shí)間: 2019-4-4 14:41
wangshengs 發(fā)表于 2019-4-4 13:56
用IIC總線來搞

謝謝提點(diǎn)
作者: liuhailan5757    時(shí)間: 2019-4-4 18:28
起始碼+地址碼+數(shù)據(jù)碼+結(jié)束碼,這些碼的位數(shù)和高低電平的脈沖時(shí)間可以自己定義
作者: jerry_fuyi    時(shí)間: 2019-4-5 10:40
USB接口不就是這樣的嗎,去看一下USB2.0協(xié)議(全速,簡(jiǎn)化版,完整版太長(zhǎng)了),學(xué)習(xí)一下
I2C總線的話,大部分單片機(jī)只有一個(gè)接口,難以實(shí)現(xiàn)級(jí)聯(lián)
作者: tigerzq    時(shí)間: 2019-4-5 11:23
如果通過以太網(wǎng)進(jìn)行主從通信呢?比如pc服務(wù)器控制幾十臺(tái)或上百臺(tái)51進(jìn)行工作,這樣的環(huán)境有做過的嗎?
作者: toby2006    時(shí)間: 2019-4-5 15:03
/******************************************************************************************* *  標(biāo)題:                  RS485通信試驗(yàn)(接收與發(fā)送)                                         * *                                                                                                                                                                        * *  1.通過本例程了解串口的基本原理及使用 ,理解并掌握對(duì)串口進(jìn)行初始化                                        * *                                                                                                                                                                            * *  2.Baud 19200、數(shù)據(jù)位8、停止位1、效驗(yàn)位無 兩臺(tái)485設(shè)備  a機(jī)發(fā) b機(jī)收                                        * *                                                                                                                                                                               * *  說明:                                                                                                                                                             * *    使用兩個(gè)帶有485功能硬件設(shè)備(例如:兩個(gè)帶485的開發(fā)箱等) 每個(gè)設(shè)備都有信號(hào)端A和B,通過導(dǎo)線        * *         分別連接兩臺(tái)設(shè)備 A 連 A  B 連 B  排線連接參考圖片                                                                                * *  現(xiàn)象:按A機(jī)的獨(dú)立按鈕 在B機(jī)的LED等顯示其狀態(tài) 對(duì)應(yīng)位的LED燈亮                                                            * *  注意:18B20 請(qǐng)卸下,否則會(huì)影響RS485                                                             * * 請(qǐng)學(xué)員認(rèn)真消化本例程,學(xué)會(huì)用C語言操作串口和485的實(shí)現(xiàn)簡(jiǎn)單收發(fā)功能                                 * *********************************************************************************************/  #include <REG52.H> #include <stdio.h>  sbit RS485E=P3^7;   //定義485的使能腳  /**************************************             延時(shí)程序 **************************************/ void delay(unsigned char i) {         unsigned char j;         for(i; i > 0; i--)                 for(j = 200; j > 0; j--); }   void main (void) {           SCON = 0x50;      //REN=1允許串行接受狀態(tài),串口工作模式1                                           TMOD|= 0x20;      //定時(shí)器工作方式2                                     PCON|= 0x80;                                                                                            TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無                                            TR1  = 1;                                                                              ES   = 1;        //開串口中斷                                   EA   = 1;        // 開總中斷                     while(1)     {                     if (P0 != 0XFF)    // max485(半雙工通信) RE/DE定義 RE=0為接受狀態(tài)  DE=1為發(fā)送狀態(tài)(參考MAX485芯片管腳)              {                  RS485E=1;           //                    RS5485E=0為接收狀態(tài)  RS5485E=1為發(fā)送狀態(tài)               SBUF=P0;           //發(fā)送數(shù)據(jù)                   delay(40);        }   }   }
作者: toby2006    時(shí)間: 2019-4-5 15:04
/*******************************************************************************************
*  標(biāo)題:                  RS485通信試驗(yàn)(接收與發(fā)送)                                         *
*                                                                                                                                                                        *
*  1.通過本例程了解串口的基本原理及使用 ,理解并掌握對(duì)串口進(jìn)行初始化                                        *
*                                                                                                                                                                            *
*  2.Baud 19200、數(shù)據(jù)位8、停止位1、效驗(yàn)位無 兩臺(tái)485設(shè)備  a機(jī)發(fā) b機(jī)收                                        *
*                                                                                                                                                                               *
*  說明:                                                                                                                                                             *
*    使用兩個(gè)帶有485功能硬件設(shè)備(例如:兩個(gè)帶485的開發(fā)箱等) 每個(gè)設(shè)備都有信號(hào)端A和B,通過導(dǎo)線        *
*         分別連接兩臺(tái)設(shè)備 A 連 A  B 連 B  排線連接參考圖片                                                                                *
*  現(xiàn)象:按A機(jī)的獨(dú)立按鈕 在B機(jī)的LED等顯示其狀態(tài) 對(duì)應(yīng)位的LED燈亮                                                            *
*  注意:18B20 請(qǐng)卸下,否則會(huì)影響RS485                                                             *
* 請(qǐng)學(xué)員認(rèn)真消化本例程,學(xué)會(huì)用C語言操作串口和485的實(shí)現(xiàn)簡(jiǎn)單收發(fā)功能                                 *
*********************************************************************************************/

#include <REG52.H>
#include <stdio.h>

sbit RS485E=P3^7;   //定義485的使能腳

/**************************************
            延時(shí)程序
**************************************/
void delay(unsigned char i)
{
        unsigned char j;
        for(i; i > 0; i--)
                for(j = 200; j > 0; j--);
}


void main (void) {


        SCON = 0x50;      //REN=1允許串行接受狀態(tài),串口工作模式1                             
            TMOD|= 0x20;      //定時(shí)器工作方式2                    
                PCON|= 0x80;                                                         
               
                TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無         
               
                TR1  = 1;                                                            
                ES   = 1;        //開串口中斷                  
                EA   = 1;        // 開總中斷
       

        while(1)
    {
       
          if (P0 != 0XFF)    // max485(半雙工通信) RE/DE定義 RE=0為接受狀態(tài)  DE=1為發(fā)送狀態(tài)(參考MAX485芯片管腳)
             {   
              RS485E=1;           //                    RS5485E=0為接收狀態(tài)  RS5485E=1為發(fā)送狀態(tài)
              SBUF=P0;           //發(fā)送數(shù)據(jù)
                  delay(40);
       }

}

}













/*******************************************************************************************
*  標(biāo)題:                  RS485通信試驗(yàn)(接收與發(fā)送)                                         *
*                                                                                                                                                                        *
*  1.通過本例程了解串口的基本原理及使用 ,理解并掌握對(duì)串口進(jìn)行初始化                                        *
*                                                                                                                                                                            *
*  2.Baud 19200、數(shù)據(jù)位8、停止位1、效驗(yàn)位無 兩臺(tái)485設(shè)備  a機(jī)發(fā) b機(jī)收                                        *
*                                                                                                                                                                               *
*  說明:                                                                                                                                                             *
*    使用兩個(gè)帶有485功能硬件設(shè)備(例如:兩個(gè)帶485的開發(fā)箱等) 每個(gè)設(shè)備都有信號(hào)端A和B,通過導(dǎo)線        *
*         分別連接兩臺(tái)設(shè)備 A 連 A  B 連 B  排線連接參考圖片                                                                            *
*  現(xiàn)象:按A機(jī)的獨(dú)立按鈕 在B機(jī)的LED等顯示其狀態(tài) 對(duì)應(yīng)位的LED燈亮                                                            *
*  注意:18B20 請(qǐng)卸下,否則會(huì)影響RS485                                                          *
* 請(qǐng)學(xué)員認(rèn)真消化本例程,學(xué)會(huì)用C語言操作串口和485的實(shí)現(xiàn)簡(jiǎn)單收發(fā)功能                                 *
*********************************************************************************************/

#include <REG52.H>
#include <stdio.h>

sbit RS485E=P3^7;   //定義485的使能腳
unsigned int ReData;

/**************************************
            延時(shí)程序
**************************************/
void delay(unsigned char i)
{
        unsigned char j;
        for(i; i > 0; i--)
                for(j = 200; j > 0; j--);
}


void main (void) {


        SCON = 0x50;      //REN=1允許串行接受狀態(tài),串口工作模式1                             
            TMOD|= 0x20;      //定時(shí)器工作方式2                    
                PCON|= 0x80;                                                         
               
                TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗(yàn)位無         
               
                TR1  = 1;                                                            
                ES   = 1;        //開串口中斷                  
                EA   = 1;        // 開總中斷
   
        while(1)
    { P0 = 0xff;
          P0 = ReData;                  // max485(半雙工通信) RE/DE定義 RE=0為接受狀態(tài)  DE=1為發(fā)送狀態(tài)(參考MAX485芯片管腳)
          RS485E=0;                    // RS5485E=0為接收狀態(tài)  RS5485E=1為發(fā)送狀態(tài)
          delay(20);
    }

}

/****************************************************
               串口中斷程序
******************************************************/
void ser_int (void) interrupt 4 using 1
{

if(RI == 1)        //RI接受中斷標(biāo)志
{
        RI = 0;                    //清除RI接受中斷標(biāo)志
        ReData = SBUF;  //SUBF接受/發(fā)送緩沖器
       
   
}
}

作者: 我對(duì)你情有獨(dú)鐘    時(shí)間: 2019-4-5 16:30
用I2C總線
作者: 我對(duì)你情有獨(dú)鐘    時(shí)間: 2019-4-5 20:23
盡量自己動(dòng)手

作者: 435873175    時(shí)間: 2019-4-5 21:03
我做過,你參考一下

多機(jī)通信.zip

134.19 KB, 下載次數(shù): 15






歡迎光臨 (http://www.denmoz.com/bbs/) Powered by Discuz! X3.1