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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3392|回復(fù): 12
打印 上一主題 下一主題
收起左側(cè)

新人想用51單片機做多機通信,麻煩大佬指點程序設(shè)計思路

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:494868 發(fā)表于 2019-4-3 20:29 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
我想以主機作為母體,每加入一個新的從機,主機都能掃描到并賦予一個新的地址,然后在主機上可以控制新的從機(一號)。在一號從機上能夠繼續(xù)加入新的從機,無論是串聯(lián)狀還是發(fā)散狀,都能由主機來控制,而不是直接連接到主機。請問大佬該怎么編寫代碼?或者提示一下思路。謝謝了!

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:123289 發(fā)表于 2019-4-4 12:58 | 只看該作者
先做好通訊主從之的通訊協(xié)議,協(xié)議說得通就行,不難。
回復(fù)

使用道具 舉報

板凳
ID:504761 發(fā)表于 2019-4-4 13:56 | 只看該作者
用IIC總線來搞
回復(fù)

使用道具 舉報

地板
ID:494868 發(fā)表于 2019-4-4 14:40 | 只看該作者
yzwzfyz 發(fā)表于 2019-4-4 12:58
先做好通訊主從之的通訊協(xié)議,協(xié)議說得通就行,不難。

謝謝提點
回復(fù)

使用道具 舉報

5#
ID:494868 發(fā)表于 2019-4-4 14:41 | 只看該作者

謝謝提點
回復(fù)

使用道具 舉報

6#
ID:387856 發(fā)表于 2019-4-4 18:28 | 只看該作者
起始碼+地址碼+數(shù)據(jù)碼+結(jié)束碼,這些碼的位數(shù)和高低電平的脈沖時間可以自己定義
回復(fù)

使用道具 舉報

7#
ID:366559 發(fā)表于 2019-4-5 10:40 | 只看該作者
USB接口不就是這樣的嗎,去看一下USB2.0協(xié)議(全速,簡化版,完整版太長了),學(xué)習(xí)一下
I2C總線的話,大部分單片機只有一個接口,難以實現(xiàn)級聯(lián)
回復(fù)

使用道具 舉報

8#
ID:471632 發(fā)表于 2019-4-5 11:23 | 只看該作者
如果通過以太網(wǎng)進(jìn)行主從通信呢?比如pc服務(wù)器控制幾十臺或上百臺51進(jìn)行工作,這樣的環(huán)境有做過的嗎?
回復(fù)

使用道具 舉報

9#
ID:476644 發(fā)表于 2019-4-5 15:03 | 只看該作者
/******************************************************************************************* *  標(biāo)題:                  RS485通信試驗(接收與發(fā)送)                                         * *                                                                                                                                                                        * *  1.通過本例程了解串口的基本原理及使用 ,理解并掌握對串口進(jìn)行初始化                                        * *                                                                                                                                                                            * *  2.Baud 19200、數(shù)據(jù)位8、停止位1、效驗位無 兩臺485設(shè)備  a機發(fā) b機收                                        * *                                                                                                                                                                               * *  說明:                                                                                                                                                             * *    使用兩個帶有485功能硬件設(shè)備(例如:兩個帶485的開發(fā)箱等) 每個設(shè)備都有信號端A和B,通過導(dǎo)線        * *         分別連接兩臺設(shè)備 A 連 A  B 連 B  排線連接參考圖片                                                                                * *  現(xiàn)象:按A機的獨立按鈕 在B機的LED等顯示其狀態(tài) 對應(yīng)位的LED燈亮                                                            * *  注意:18B20 請卸下,否則會影響RS485                                                             * * 請學(xué)員認(rèn)真消化本例程,學(xué)會用C語言操作串口和485的實現(xiàn)簡單收發(fā)功能                                 * *********************************************************************************************/  #include <REG52.H> #include <stdio.h>  sbit RS485E=P3^7;   //定義485的使能腳  /**************************************             延時程序 **************************************/ 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;      //定時器工作方式2                                     PCON|= 0x80;                                                                                            TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗位無                                            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);        }   }   }
回復(fù)

使用道具 舉報

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

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

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

/**************************************
            延時程序
**************************************/
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;      //定時器工作方式2                    
                PCON|= 0x80;                                                         
               
                TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗位無         
               
                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通信試驗(接收與發(fā)送)                                         *
*                                                                                                                                                                        *
*  1.通過本例程了解串口的基本原理及使用 ,理解并掌握對串口進(jìn)行初始化                                        *
*                                                                                                                                                                            *
*  2.Baud 19200、數(shù)據(jù)位8、停止位1、效驗位無 兩臺485設(shè)備  a機發(fā) b機收                                        *
*                                                                                                                                                                               *
*  說明:                                                                                                                                                             *
*    使用兩個帶有485功能硬件設(shè)備(例如:兩個帶485的開發(fā)箱等) 每個設(shè)備都有信號端A和B,通過導(dǎo)線        *
*         分別連接兩臺設(shè)備 A 連 A  B 連 B  排線連接參考圖片                                                                            *
*  現(xiàn)象:按A機的獨立按鈕 在B機的LED等顯示其狀態(tài) 對應(yīng)位的LED燈亮                                                            *
*  注意:18B20 請卸下,否則會影響RS485                                                          *
* 請學(xué)員認(rèn)真消化本例程,學(xué)會用C語言操作串口和485的實現(xiàn)簡單收發(fā)功能                                 *
*********************************************************************************************/

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

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

/**************************************
            延時程序
**************************************/
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;      //定時器工作方式2                    
                PCON|= 0x80;                                                         
               
                TH1  = 0xFD;     //baud*2  /* reload value 19200、數(shù)據(jù)位8、停止位1。效驗位無         
               
                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ā)送緩沖器
       
   
}
}
回復(fù)

使用道具 舉報

11#
ID:481641 發(fā)表于 2019-4-5 16:30 | 只看該作者
用I2C總線
回復(fù)

使用道具 舉報

12#
ID:481641 發(fā)表于 2019-4-5 20:23 | 只看該作者
盡量自己動手
回復(fù)

使用道具 舉報

13#
ID:73118 發(fā)表于 2019-4-5 21:03 | 只看該作者
我做過,你參考一下

多機通信.zip

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

回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表