wwwxxx国产_337p日本欧洲亚洲大胆张筱雨_免费在线看成人av_日本黄色不卡视频_国产精品成熟老女人_99视频一区_亚洲精品97久久中文字幕_免费精品视频在线_亚洲色图欧美视频_欧美一区二三区

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 18893|回復(fù): 2
收起左側(cè)

多臺(tái)單片機(jī)間網(wǎng)絡(luò)的實(shí)現(xiàn)(互相通信)含源碼

[復(fù)制鏈接]
ID:205475 發(fā)表于 2017-5-27 20:03 | 顯示全部樓層 |閱讀模式
一、功能
主體功能:三臺(tái)單片機(jī)之間兩兩互相通信,為此,我們將其擬人化,以三個(gè)主人公Jack、Carl、Lily之間的交流來(lái)演示。具體過(guò)程如下:
①初始狀態(tài)(從上至下分別為Jack、Lily、Carl):
1.001.jpg



②Lily編輯“HELLO!”的字符串準(zhǔn)備發(fā)送給Jack:
1.002.jpg

③Lily按下發(fā)送后Jack的接收結(jié)果:
1.003.jpg
④Carl編輯“Hi!”發(fā)送給Lily同時(shí)Lily接收:
1.004.jpg

⑤Jack編輯“HOW ARE U”發(fā)送給Carl同時(shí)Carl接收:
1.005.jpg

⑥特殊情況:當(dāng)傳送過(guò)來(lái)的數(shù)據(jù)經(jīng)奇偶校驗(yàn)出錯(cuò)后給出報(bào)錯(cuò)提示:
1.006.jpg

二、 網(wǎng)絡(luò)的設(shè)計(jì)
物理層:
傳輸介質(zhì):
采用兩條杜邦線連接單片機(jī)的兩個(gè)io口,一個(gè)io口定時(shí)變換高低電平輸出數(shù)據(jù),另一個(gè)io口定時(shí)檢測(cè)電平高低來(lái)讀取數(shù)據(jù),實(shí)現(xiàn)了全雙工通訊。
每臺(tái)單片機(jī)都有2對(duì)(4個(gè))io口可以發(fā)送接受數(shù)據(jù),這為多臺(tái)機(jī)器組成網(wǎng)絡(luò)提供了基礎(chǔ)。
多臺(tái)單片機(jī)連接方式:

0.png
我們用3臺(tái)單片機(jī)組成了一條線似的結(jié)構(gòu),實(shí)際上這個(gè)網(wǎng)絡(luò)還可以在邊上擴(kuò)展延長(zhǎng),這個(gè)網(wǎng)絡(luò)中不存在主機(jī),每臺(tái)機(jī)器都是平等的。
每臺(tái)單片機(jī)收到信息后,都會(huì)將信息從另一對(duì)io口發(fā)出。每臺(tái)單片機(jī)發(fā)送給信息時(shí)候,也會(huì)將信息從兩對(duì)io口同時(shí)發(fā)出,因此一旦有信息發(fā)送,信息會(huì)傳播到整個(gè)網(wǎng)絡(luò)。
編碼技術(shù):采用不歸零電平編碼方式(NRZ-L),高電平代表1,低電平代表0,每一bit數(shù)據(jù)的持續(xù)時(shí)間是31.108ms。由于每bit的持續(xù)時(shí)間決定了傳輸速率,因此傳輸數(shù)據(jù)可以通過(guò)簡(jiǎn)單修改宏定義來(lái)實(shí)現(xiàn),不過(guò)隨著傳輸速率的提高,出錯(cuò)率會(huì)增加。


傳輸協(xié)議:采用異步傳輸方式,每次傳輸一個(gè)bit。傳輸數(shù)據(jù)的格式如下
0
X
X
X
X
X
X
X
X
P
起始位
數(shù)據(jù)位
奇偶校驗(yàn)


數(shù)據(jù)鏈路層:
成幀技術(shù)采用的是字符計(jì)數(shù)成幀技術(shù),首部的高4位代表接下來(lái)要發(fā)送的字符數(shù)
3(高四位)
1
3
2
1(高四位)
7
2(高四位)
8
4
計(jì)數(shù)首部
數(shù)據(jù)部分
數(shù)據(jù)部分
數(shù)據(jù)部分
計(jì)數(shù)首部
數(shù)據(jù)部分
計(jì)數(shù)首部
數(shù)據(jù)部分
數(shù)據(jù)部分
數(shù)據(jù)是由誰(shuí)發(fā)出,數(shù)據(jù)發(fā)給誰(shuí):
這部分功能也是由字符首部來(lái)完成,首部的結(jié)構(gòu)如下:
0
0
1
0
0
0
0
1
計(jì)數(shù)
目標(biāo)地址
源地址
如上圖所示,這個(gè)首部代表接下來(lái)還要發(fā)送2個(gè)字符,目標(biāo)地址是0,源地址是1。

三、            部分代碼
3臺(tái)單片機(jī)的代碼都是相同的,連接外部按鍵和顯示器的引腳差別可以通過(guò)修改宏定義來(lái)適配。因此只列出一臺(tái)單片機(jī)的代碼
1.       main.h
  1. #ifndef _main_h_
  2. #define _main_h_

  3. #define MYNAME "Jack"
  4. #define NAME_NUM 2
  5. #define BUTTON_IO P3
  6. #define PRESS_LEFT 0x0E//k30
  7. #define PRESS_RIGHT 0x0D //k31
  8. #define CHANGE 0x0B                 //k32
  9. #define SEND 0x07                            //k33
  10. #define PRESS_TIME 5000//按鍵消去抖動(dòng)時(shí)間
  11. #define ASCII 32
  12. #define GPIO_KEY P3  //獨(dú)立鍵盤用P1口
  13. //carl Lily Jack Lisa

  14. void send(unsigned char* TxArray,unsigned char sendTo);
  15. void receive(void);
  16. void errorFun(unsigned char a);
  17. unsigned char Key_Scan();
  18. Show_Name(int sendTo);  //顯示名字
  19. #endif
復(fù)制代碼

2.       1602LCD.h
#ifndef _1602LCD_h_
#define _1602LCD_h_
sbit RS = P2 ^ 6;    //寄存器選擇位,將RS位定義為P2.0引腳
sbit RW = P2 ^ 5;    //讀寫選擇位,將RW位定義為P2.1引腳
sbit E = P2 ^ 7;     //使能信號(hào)位,將E位定義為P2.2引腳
sbit BF = P0 ^ 7;    //忙碌標(biāo)志位,,將BF位定義為P0.7引腳

bit BusyTest(void);
void Write_com(unsigned char dictate);
void WriteAddress(unsigned char x);
void WriteData(unsigned char y);
void LcdInt(void);

#endif

3.       main.c
  1. #include  //  包含51單片機(jī)寄存器定義的頭文件
  2. #include"1602LCD.h"
  3. #include"myParity.h"
  4. #include"main.h"

  5. sbit TxPort = P1 ^ 0;
  6. sbit RxPort = P1 ^ 1;
  7. sbit TxPort2 = P1 ^ 2;
  8. sbit RxPort2 = P1 ^ 3;
  9. #define TIMEHIGH 0xD0;
  10. #define TIMELOW 0x00;
  11. unsigned char i;
  12. unsigned int TxData;
  13. unsigned char Ti;
  14. unsigned int RxData;
  15. unsigned char Ri;
  16. unsigned char code tab[] = { 0xc0, 0xf9, 0xa4, 0xb0, 0x99, 0x92, 0x82, 0xf8, 0x80, 0x90 }; //共陽(yáng)數(shù)碼管 0-9


  17. /**************************************************************
  18. 函數(shù)功能:主函數(shù)
  19. **************************************************************/
  20. void main(void)
  21. {
  22. unsigned char TxArray[13] = {0,0, 0, 0, 0, 0, 0, 0, 0, 0,0,0,0 };
  23.               unsigned char position = 0;
  24.               unsigned char sendTo = 0;

  25.               unsigned char keyNum;                 //獲取鍵值
  26.               char a;                                             //循環(huán)變量
  27.               char flag=0;
  28.               RxData = 0;
  29.               TxData = 0;
  30.               Ti = 0;
  31.               Ri = 0;
  32.               i = 0;
  33.               P1 = 0xff;
  34.               P3=0xff;
  35.               P3=0xff;
  36.             
  37.               EA = 1;                  //開(kāi)總中斷
  38.               ET0 = 1;                 //定時(shí)器T0中斷允許        
  39.               TMOD = 0x01;             //使用定時(shí)器T0的模式1
  40.               TH0 = TIMEHIGH;
  41.               TL0 = TIMELOW;
  42.               TR0 = 1;                 //啟動(dòng)定時(shí)器T0
  43.               LcdInt();
  44.               delay(1000);

  45.               Write_com(0x01);//清顯示:清屏幕指令
  46.               WriteAddress(0x40);
  47.               WriteAddress(0x40);
  48.               for(a=0;a<10;a++)
  49.               {                                                      
  50.                             WriteAddress(0x40+a);
  51.                             WriteData(ASCII+TxArray[a]);                           
  52.               }                           
  53.               WriteAddress(0x4A);
  54.               WriteData('-');            
  55.               WriteAddress(0x4B);
  56.               WriteData('>');            
  57.               WriteAddress(0x40);
  58.               sendTo=NAME_NUM+1;
  59.               if(NAME_NUM>1)
  60.               sendTo=0;            
  61.               Show_Name(sendTo);
  62.               WriteAddress(0x40);
  63.               while (1)//無(wú)限循環(huán)等待中斷
  64.               {
  65.                             keyNum = Key_Scan();  //掃描鍵盤
  66.                             switch (keyNum&0x0F)
  67.                             {
  68.                                           case(PRESS_LEFT) :               
  69.                                                         if( (position>=0) && (position<10) )
  70.                                                         {                                                                                                
  71.                                                                       WriteAddress(0x40+position);
  72.                                                                       if(TxArray[position]<32)
  73.                                                                                     TxArray[position]=128;
  74.                                                                       else            
  75.                                                                                     TxArray[position]--;
  76.                                                                       WriteData(TxArray[position]);                                                                                   
  77.                                                                       WriteAddress(0x40+position);
  78.                                                         }
  79.                                                         else if( (position==10) || (position==11) )
  80.                                                         {
  81.                                                                       for(a=0;a<10;a++)
  82.                                                                       {                                                      
  83.                                                                                     TxArray[a]=0;
  84.                                                                                     WriteAddress(0x40+a);
  85.                                                                                     WriteData(0);            
  86.                                                                       }                           
  87.                                                                       WriteAddress(0x40);
  88.                                                                       position=0;
  89.                                                         }
  90.                                                         else
  91.                                                         {
  92.                                                                       if(sendTo>0)
  93.                                                                       {
  94.                                                                                     sendTo--;
  95.                                                                       }
  96.                                                                       else
  97.                                                                       {
  98.                                                                                     sendTo=3;
  99.                                                                       }                                                                                       
  100.                                                                       Show_Name(sendTo);
  101.                                                         }
  102.                                                         break;
  103.                                           case(PRESS_RIGHT) :                                                         
  104.                                                         if( (position>=0) && (position<10) )
  105.                                                         {                                                                                                
  106.                                                                       WriteAddress(0x40+position);
  107.                                                                       if(TxArray[position]<32)
  108.                                                                                     TxArray[position]=65;
  109.                                                                       else if(TxArray[position]>128)
  110.                                                                                     TxArray[position]=32;
  111.                                                                       else            
  112.                                                                                     TxArray[position]++;
  113.                                                                       WriteData(TxArray[position]);                                                                                   
  114.                                                                       WriteAddress(0x40+position);
  115.                                                         }
  116.                                                         else if( (position==10) || (position==11) )
  117.                                                         {
  118.                                                                       for(a=0;a<10;a++)
  119.                                                                       {                                                      
  120.                                                                                     TxArray[a]=0;
  121.                                                                                     WriteAddress(0x40+a);
  122.                                                                                     WriteData(ASCII);                           
  123.                                                                       }                                         
  124.                                                                       WriteAddress(0x40);
  125.                                                                       position=0;
  126.                                                         }
  127.                                                         else
  128.                                                         {
  129.                                                                       if(sendTo<3)
  130.                                                                       {
  131.                                                                                     sendTo++;
  132.                                                                       }
  133.                                                                       else
  134.                                                                       {
  135.                                                                                     sendTo=0;
  136.                                                                       }                                                                                      
  137.                                                                       Show_Name(sendTo);
  138.                                                         }
  139.                                                         break;
  140.                                           case(CHANGE) :               
  141.                                                         if(position<12)
  142.                                                         {
  143.                                                                       position++;
  144.                                                         }
  145.                                                         else
  146.                                                         {
  147.                                                                       position=0;
  148.                                                         }
  149.                                                         WriteAddress(0x40+position);
  150.                                                         break;
  151.                                           case(SEND) :
  152.                                                         flag=0;
  153.                                                         for(a=9;a>=0;a--)
  154.                                                         {
  155.                                                                       if(flag==1&&TxArray[a]==0)
  156.                                                                                     TxArray[a]=32;
  157.                                                                       else if(TxArray[a]!=0)
  158.                                                                                     flag=1;
  159.                                                         }            
  160.                                                         send(TxArray,sendTo);
  161.                                                         break;
  162.                                           default:
  163.                                                         break;
  164.                             }
  165.                             receive();
  166.               }

  167. }

  168. Show_Name(int sendTo)
  169. {                                                                                                   
  170.               if(sendTo==0)
  171.               {
  172.                             WriteAddress(0x4C);
  173.                             WriteData('C');            
  174.                             WriteAddress(0x4D);
  175.                             WriteData('a');
  176.                             WriteAddress(0x4E);
  177.                             WriteData('r');            
  178.                             WriteAddress(0x4F);
  179.                             WriteData('l');
  180.                             WriteAddress(0x4C);
  181.               }
  182.               else if(sendTo==1)
  183.               {
  184.                             WriteAddress(0x4C);
  185.                             WriteData('L');            
  186.                             WriteAddress(0x4D);
  187.                             WriteData('i');
  188.                             WriteAddress(0x4E);
  189.                             WriteData('l');            
  190.                             WriteAddress(0x4F);
  191.                             WriteData('y');
  192.                             WriteAddress(0x4C);
  193.               }
  194.               else if(sendTo==2)
  195.               {
  196.                             WriteAddress(0x4C);
  197.                             WriteData('J');            
  198.                             WriteAddress(0x4D);
  199.                             WriteData('a');
  200.                             WriteAddress(0x4E);
  201.                             WriteData('c');            
  202.                             WriteAddress(0x4F);
  203.                             WriteData('k');
  204.                             WriteAddress(0x4C);
  205.               }
  206.               else
  207.               {
  208.                             WriteAddress(0x4C);
  209.                             WriteData('L');            
  210.                             WriteAddress(0x4D);
  211.                             WriteData('i');
  212.                             WriteAddress(0x4E);
  213.                             WriteData('s');            
  214.                             WriteAddress(0x4F);
  215.                             WriteData('a');
  216.                             WriteAddress(0x4C);
  217.               }
  218. }
  219. /*******************************************************************************
  220. * 函 數(shù) 名         : Key_Scan()
  221. * 函數(shù)功能                               : 掃描鍵盤
  222. * 輸    入         : 無(wú)
  223. * 輸    出         : 讀取到的鍵值
  224. *******************************************************************************/

  225. unsigned char Key_Scan()
  226. {
  227.               unsigned char keyValue = 0 , i; //保存鍵值

  228.               //--檢測(cè)按鍵1--//
  229.               if (GPIO_KEY != 0xFF)                            //檢測(cè)按鍵是否按下
  230.               {
  231.                             delay(PRESS_TIME);              //消除抖動(dòng)

  232.                             if (GPIO_KEY != 0xFF)              //再次檢測(cè)按鍵是否按下
  233.                             {
  234.                                           keyValue = GPIO_KEY;
  235. /*                                          i = 0;
  236.                                           while ((i<50) && (GPIO_KEY != 0xFF))              //檢測(cè)按鍵是否松開(kāi)
  237.                                           {
  238.                                                         delay(PRESS_TIME);
  239.                                                         i++;
  240.                                           }  */
  241.                             }
  242.               }

  243.               return keyValue;   //將讀取到鍵值的值返回
  244. }

  245. /**************************************************************
  246. 函數(shù)功能:定時(shí)器T0的中斷服務(wù)程序
  247. **************************************************************/
  248. void Time0(void) interrupt 1 using 0 //“interrupt”聲明函數(shù)為中斷服務(wù)函數(shù)
  249. //其后的1為定時(shí)器T0的中斷編號(hào);0表示使用第0組工作寄存器
  250. {
  251.               bit RxTemp;
  252.               /*發(fā)送數(shù)據(jù)*/
  253.               if ((TxData & 0x01) == 1)
  254.               {
  255.                             if (Ti == 9)
  256.                             {
  257.                                           TxPort = (bit)(TxData & 0x8000);
  258.                                           TxPort2 = (bit)(TxData & 0x8000);
  259.                                           Ti = 0;
  260.                                           TxData = TxData & 0xfffe;
  261.                             }
  262.                             else
  263.                             {
  264.                                           TxPort = (bit)(TxData & 0x8000);
  265.                                           TxPort2 = (bit)(TxData & 0x8000);
  266.                                           TxData <<= 1;
  267.                                           TxData = TxData - 1;
  268.                                           Ti++;
  269.                             }
  270.               }
  271.               else
  272.               {
  273.                             TxPort = 1;
  274.                             TxPort2 = 1;
  275.               }
  276.               /*發(fā)送數(shù)據(jù)結(jié)束*/

  277.               /*接收數(shù)據(jù)*/
  278.                             RxTemp=RxPort&RxPort2;
  279.               if ((RxData & 0x8000) == 0x8000)//S1==1?
  280.               {
  281.                             if (Ri != 8)
  282.                             {
  283.                                           Ri++;
  284.                                           RxData <<= 1;
  285.                                           RxData = RxData | 0x8000;//S1置1
  286.                                           RxData = RxData | (unsigned int)RxTemp;
  287.                             }
  288.                             else
  289.                             {
  290.                                           RxData <<= 1;
  291.                                           RxData = RxData | (unsigned int)RxTemp;
  292.                                           Ri = 0;
  293.                                           RxData = RxData & 0x7fff;//S1置0
  294.                                           RxData = RxData | 0x4000;//S2置2
  295.                             }
  296.               }
  297.               else
  298.               {
  299.                             if (RxTemp == 0)
  300.                             {
  301.                                           if ((RxData & 0x4000) == 0)//S2==0?
  302.                                           {
  303.                                                         RxData = RxData | 0x8000;//S1置1
  304.                                           }
  305.                                           else
  306.                                           {
  307.                                                         errorFun(1);
  308.                                           }
  309.                             }
  310.               }
  311.               if(RxPort==0)
  312.                             TxPort2=0;
  313.               if(RxPort2==0)
  314.                             TxPort=0;
  315.               /*接收數(shù)據(jù)結(jié)束*/
  316.               TH0 = TIMEHIGH;
  317.               TL0 = TIMELOW;
  318. }

  319. void errorFun(unsigned char a)
  320. {
  321.               char i,s[]="Error";
  322.               WriteAddress(0x00);
  323.               for(i=0;i<16;i++)
  324.               {
  325.                             WriteData(32);            
  326.               }

  327.               WriteAddress(0x00);
  328.               i=0;
  329.               while(s[i]!=0)
  330.               {
  331.                             WriteData(s[i]);
  332.                             i++;
  333.                             delay(100);
  334.               }
  335.               WriteData('0'+a);
  336.               while(1);
  337. }

  338. void send(unsigned char* TxArray,unsigned char sendTo)
  339. {
  340.               unsigned char Tcount=0,i=0,TxD=0;
  341.               while (TxArray[Tcount] != 0)
  342.               {
  343.                             Tcount++;
  344.               }
  345.               TxD |= Tcount;
  346.               TxD<<=4;
  347.               sendTo <<= 2;
  348.               TxD |= sendTo;
  349.               TxD |= NAME_NUM;
  350.               while ((TxData & 0x0001) == 0x0001)//沒(méi)發(fā)完
  351.                             ;
  352.               TxData = calculateTxData(TxD);
  353.               for (i = 0; i < Tcount; i++)
  354.               {
  355.                             while ((TxData & 0x0001) == 0x0001)//沒(méi)發(fā)完
  356.                                           ;
  357.                             TxData = calculateTxData(TxArray[i]);
  358.               }
  359. }

  360. void receive(void)
  361. {
  362.               unsigned char RxArray[13] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 };
  363.               unsigned char Rcount = 0, j = 0, sendTo = 0,temp=0;
  364.               if ((RxData & 0x4000) == 0x4000)//S2==1,數(shù)據(jù)待讀取
  365.               {
  366.                             RxArray[0] = checkRxData();
  367.                             Rcount=RxArray[0] & 0xf0;
  368.                             Rcount>>=4;
  369.                             for (j = 1; j < Rcount+1; j++)
  370.                             {
  371.                                           while ((RxData & 0x4000) == 0x0000)//沒(méi)有數(shù)據(jù)讀取
  372.                                                         ;
  373.                                           RxArray[j] = checkRxData();
  374.                             }
  375.                             sendTo =RxArray[0] & 0x0c;
  376.                             sendTo>>=2;
  377.                             if (sendTo != NAME_NUM)
  378.                                           ;//send(RxArray + 1, sendTo);
  379.                             else
  380.                             {
  381.                                           WriteAddress(0x00);
  382.                                           switch (RxArray[0] & 0x03)
  383.                                           {
  384.                                           case 0:
  385.                                                         WriteData('C');
  386.                                                         WriteData('a');
  387.                                                         WriteData('r');
  388.                                                         WriteData('l');
  389.                                                         break;
  390.                                           case 1:
  391.                                                         WriteData('L');
  392.                                                         WriteData('i');
  393.                                                         WriteData('l');
  394.                                                         WriteData('y');
  395.                                                         break;
  396.                                           case 2:
  397.                                                         WriteData('J');
  398.                                                         WriteData('a');
  399.                                                         WriteData('c');
  400.                                                         WriteData('k');
  401.                                                         break;
  402.                                           case 3:
  403.                                                         WriteData('L');
  404.                                                         WriteData('i');
  405.                                                         WriteData('s');
  406.                                                         WriteData('a');
  407.                                                         break;
  408.                                           }
  409.                                           WriteData(':');
  410.                                           WriteData(32);
  411.                                           WriteData(32);
  412.                                           WriteData(32);
  413.                                           WriteData(32);
  414.                                           WriteData(32);
  415.                                           WriteData(32);
  416.                                           WriteData(32);
  417.                                           WriteData(32);
  418.                                           WriteData(32);
  419.                                           WriteData(32);
  420.                                           WriteData(32);
  421.                                           WriteAddress(0x05);
  422.                                           for (j = 1; j < Rcount + 1;j++)
  423.                                                         WriteData(RxArray[j]);
  424.                             }
  425.               }
  426. }
  427. 4.       parity.h

  428. #include  //  包含51單片機(jī)寄存器定義的頭文件
  429. #include"myparity.h"
  430. #include"main.h"
  431. extern unsigned int RxData;
  432. //--定義全局變量--//
  433. unsigned char code DIG_PLACE[8] = {
  434.               0xfe, 0xfd, 0xfb, 0xf7, 0xef, 0xdf, 0xbf, 0x7f };//位選控制   查表的方法控制
  435. unsigned char code DIG_CODE[17] = {
  436.               0x50, 0x5c, 0x50, 0x50, 0x79 };
  437. //Error的顯示碼
  438. unsigned char DisplayData[8];
  439. //用來(lái)存放要顯示的8位數(shù)的值

  440. /*來(lái)自安馳的代碼如下*/
  441. unsigned char checkRxData()
  442. {
  443.               unsigned int a = 1;  //用于移位后與運(yùn)算,即為0000 0001
  444.               int i;
  445.               int UsefulData = RxData;
  446.               int bin[9] = { 0 };   //用于記錄Rxdata轉(zhuǎn)化為二進(jìn)制后的數(shù)值
  447.               int num1 = 0;    //用于記錄Rxdata中1的個(gè)數(shù)

  448.               UsefulData = UsefulData >> 1;              //先右移一位再與運(yùn)算提取
  449.               UsefulData = UsefulData & 255;              //出原int型數(shù)據(jù)中有效的8位

  450.               for (i = 0; i<9; i++)
  451.               {
  452.                             bin[i] = RxData&a;
  453.                             RxData = RxData >> 1; //右移一位
  454.               }
  455.               for (i = 0; i<9; i++)
  456.               {
  457.                             if (bin[i] == 1)
  458.                             {
  459.                                           num1++;
  460.                             }
  461.               }
  462.               if (num1 % 2 == 0)
  463.               {
  464.                             errorFun(2);//奇偶校驗(yàn)錯(cuò)error2
  465.               }
  466.               return (char)UsefulData;
  467. }

  468. unsigned int calculateTxData(unsigned char UsefulData)
  469. {
  470.               unsigned int CutData;
  471.               unsigned int FinalData;
  472.               int flag = 0;   //判斷1的個(gè)數(shù)            
  473.               int bin[8] = { 0 };
  474.               int num1 = 0;
  475.               int num = 0;
  476.               int i;
  477.               CutData = (int)UsefulData;
  478.               num = (int)UsefulData;
  479.               for (i = 0; i<8; i++)
  480.               {
  481.                             bin[i] = CutData & 1;
  482.                             CutData = CutData >> 1; //右移一位
  483.               }
  484.               for (i = 0; i<8; i++)
  485.               {
  486.                             if (bin[i] == 1)
  487. ……………………

  488. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼


詳細(xì)內(nèi)容見(jiàn)附件:
多臺(tái)單片機(jī)間網(wǎng)絡(luò)的實(shí)現(xiàn).docx (1.95 MB, 下載次數(shù): 81)



相關(guān)帖子

回復(fù)

使用道具 舉報(bào)

ID:1 發(fā)表于 2017-5-29 03:17 | 顯示全部樓層
好資料,51黑有你更精彩!!!
回復(fù)

使用道具 舉報(bào)

ID:171028 發(fā)表于 2020-3-26 19:05 | 顯示全部樓層
哇!感謝,正在學(xué)習(xí)多機(jī)通信
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
亚洲色图丝袜| 久久伊人中文字幕| 国产精品第一国产精品| 美女视频免费观看网站在线| 亚洲天堂网在线视频| 国产精久久久久| 中文字幕精品一区日韩| 国产精品久久久久7777婷婷| 亚洲精选视频在线| 久久99精品国产.久久久久久| 在线观看欧美理论a影院| bl在线肉h视频大尺度| 国产视频一二三区| 婷婷国产成人久久精品激情| 在线精品免费视| 中文字幕人妻一区二区| 日日橹狠狠爱欧美超碰| 国产综合第一页| 欧美精品久久久久久久久久| 日韩欧美第一区| 亚洲一区二区三区四区在线| 成人免费视频国产在线观看| 欧美亚韩一区| 亚洲宅男网av| 久久久久久一区二区三区四区别墅| 91.xxx.高清在线| а√最新版在线天堂| 欧美多人野外伦交| 成 人 免费 黄 色| 日韩免费在线视频观看| 极品粉嫩小仙女高潮喷水久久| 欧美一区二区视频在线播放| 久久精品99久久| 亚洲天堂成人在线观看| 麻豆一区二区在线| 国产日韩欧美高清免费| 欧美亚洲国产精品久久| 亚洲精品高潮| 手机看片久久| 日韩精品卡一| 在线看的av网站| 日韩偷拍自拍| 中文字幕123| 91传媒在线观看| 九九夜夜操妹子| 欧美成人精品福利在线视频| 国产富婆一级全黄大片| 日韩熟女一区二区| 国产精品第二十页| 麻豆精品一区二区三区视频| 3d动漫精品啪啪一区二区下载| 天堂av在线网站| 免费成人在线视频网站| 91免费观看网站| 国产精品高精视频免费| 91成人精品网站| 欧美激情第三页| 欧美理论电影在线播放| 日韩视频精品在线| 国产一区二区三区在线免费观看| 亚洲精品一区二区精华| 欧美成人免费网站| 91精品国产色综合久久ai换脸 | 亚洲成a人片77777在线播放| 欧美成人精品午夜一区二区| 亚洲伦理一区二区| aa亚洲一区一区三区| 亚洲男男av| 清纯唯美激情亚洲| 91蝌蚪精品视频| 日韩mv欧美mv国产网站| 日韩美女国产精品| 九一成人免费视频| 成人羞羞视频播放网站| 国产精品传媒精东影业在线| 亚洲国产一成人久久精品| 在线精品小视频| 99国产精品99久久久久久粉嫩| 亚洲国产国产亚洲一二三| 亚洲一级一区| 爽爽淫人综合网网站| 美女一区二区视频| 顶级嫩模精品视频在线看| 成人动漫av在线| 久久综合色综合88| 国产精品久久久久久久蜜臀| 夜夜嗨av一区二区三区中文字幕 | 日韩欧美中文字幕不卡| 韩日电影在线观看| 黄色动漫免费网站| 嫩草影院发布页| 精品成人一区二区三区免费视频| 青青影院在线观看| 美女18一级毛片一品久道久久综合| 91精品xxx在线观看| 久久三级中文| 成人婷婷网色偷偷亚洲男人的天堂| 羞羞色午夜精品一区二区三区| 在线国产日韩| 国产一区二区三区在线观看精品 | 亚洲欧洲日本一区二区三区| 久久精品国产精品亚洲精品| 成人美女视频在线观看18| 国产精品美女久久久久久| 亚洲图片欧美视频| 外国成人激情视频| 欧美日韩蜜桃| 紧缚奴在线一区二区三区| 久久综合色一综合色88| 精品久久久久久久久国产字幕 | 岛国片免费观看| 免费自拍视频| 一个人免费视频www在线观看| 麻豆系列在线观看| 暖暖成人免费视频| 中文字幕亚洲影视| 国产精品外国| 99精品一区二区| 欧美日韩美女视频| 日韩精品中文字幕视频在线| 国内精品久久久久| 国产精品二区三区| 人人干视频在线| 亚洲国产精品第一页| 日韩成人短视频| 精品二区在线观看| 毛片网站免费| 天天综合视频在线观看| 日韩专区视频网站| 牛牛国产精品| 成人激情黄色小说| 黑人狂躁日本妞一区二区三区 | 看av免费毛片手机播放| aaaaaav| 91香蕉在线视频| 777琪琪电影午夜理伦片| 美女胸又www又黄的网站| 中文字幕免费高清电视剧网站在线观看| www.91精品| 国产亚洲精品v| 永久91嫩草亚洲精品人人| 国产综合久久久久久鬼色 | 国产视频一区欧美| 国产亚洲欧美一级| 欧美精品一二三四| 国语自产精品视频在线看抢先版图片 | 久久久久国产精品人| 欧美群妇大交群中文字幕| 久久亚洲精品视频| 国产精品久久九九| 国产精品69页| 国产亚洲精品久久777777| 先锋影音男人站你懂得| 成人福利资源| 国产va在线视频| 中文字幕乱码亚洲无线精品一区| 国产一区二区成人久久免费影院 | 亚洲精品久久久久久久久久久久久久 | 亚洲成人自拍一区| 日韩一区二区av| 精品国产乱码久久久久久久软件 | 国产精品va在线播放| 伊人再见免费在线观看高清版 | 成人综合网址| 最新日韩精品| 在线亚洲欧美| 亚洲国产美女搞黄色| 亚洲性视频网址| 国产视频在线观看一区| av地址在线观看| 精品国产www| 天天干天天爽| 在线毛片观看| 日韩午夜高潮| 一区二区三区av电影| 亚洲欧美日韩国产成人| 欧美一区二区三区图| 91免费国产网站| 99久久国产综合精品五月天喷水| 欧美性猛交xxxx乱| 美女扒开腿免费视频| 神马午夜精品95| 最后生还者第二季在线观看| www.成人影院| 激情婷婷久久| 久久久久久久综合日本| 欧美一级艳片视频免费观看| 国产成人aa精品一区在线播放| 成人在线视频一区二区三区| 任你操精品视频| 久久91av| 影院在线观看全集免费观看| 日本黄色精品| 中文字幕乱码久久午夜不卡 | 韩剧1988在线观看免费完整版| 久久久国产精华液999999| 日本美女bbw| 天天射天天操天天干| 超鹏97在线| 欧美喷水视频| 国产精品欧美久久久久一区二区 | 99精品黄色片免费大全| 精品999久久久| 任我爽在线视频精品一| 97在线观看免费视频| 热99精品视频| 国产三级电影在线播放| 99精品视频网| 欧美视频在线免费| 国产精品久久久久久久久借妻| 色婷婷综合久久久久中文字幕| 免费黄色片视频| 国产午夜在线视频| 午夜精品视频一区二区三区在线看| 精品视频在线观看网站| 国产成人久久精品77777最新版本| 亚洲人成电影在线| 日韩一区二区三区高清| 加勒比婷婷色综合久久| av电影免费看| 成人在线超碰| 国产精品免费视频网站| 欧美高清不卡在线| av五月天在线| 国产免费一区二区三区免费视频| 国产一二区在线| 亚洲最黄网站| 日韩一区二区中文字幕| 欧美日韩一区在线观看视频| 久久久久久久久久91| 激情婷婷丁香| 欧美激情777| 日本韩国欧美一区| 欧美日韩国产一二| 欧美成人黄色网| 国产九色porn网址| 蜜桃国内精品久久久久软件9| 五月激情六月综合| 99中文视频在线| 久草视频手机在线| 在线观看污污视频| 国产精品久久久久毛片大屁完整版| 欧美日韩美少妇| 亚洲人成网站在线播放2019| 毛片视频网站在线观看| 免费在线午夜视频| 日韩精品欧美成人高清一区二区| 欧美精品一区二区三区在线| 无码毛片aaa在线| 人妻中文字幕一区| 成人性生交大片免费网站| 成a人片亚洲日本久久| 欧美大秀在线观看| 日本激情小视频| 国产成免费视频| 国产精品久久天天影视| 欧美区视频在线观看| 国产深夜男女无套内射| 四虎永久在线观看| 亚洲成人高清| 精品久久成人| 色综合激情五月| 视频一区二区三区在线观看| 国产一级片一区二区| 日韩三级免费| 中文字幕第一区第二区| 91久久精品国产91久久性色| 欧美大片xxxx| 黄色在线观看网| 不卡的av电影在线观看| 欧美中文字幕视频| 日本成人精品视频| 中文字幕在线永久在线视频 | 国产精品亚洲欧美日韩一区在线| 国产精品嫩草影院com| 91精品久久久久久久久久久| 日本青青草视频| 久久国产精品黑丝| 久久久综合视频| 亚洲一区二区三区乱码aⅴ蜜桃女| 国产1区2区3区4区| 国产在线xxx| 国产精品久久久久久福利一牛影视 | 91精品国产99久久久久久红楼| 日韩乱码在线观看| 国产精品xx| 精品高清美女精品国产区| 青青草国产精品| 黄色av中文字幕| 国产精品香蕉| 亚洲国产精品va在线看黑人动漫| 日本免费观看网站| 夜色av.com| 麻豆91精品| 国产精品久久久久久久久久久久| 精品视频在线观看免费| 丁香花在线影院| 国产精品人人做人人爽人人添| 无码免费一区二区三区免费播放 | 亚洲黄色尤物视频| 法国空姐在线观看免费| 精品国产免费第一区二区| 青青草成人影院| 蜜月aⅴ免费一区二区三区| 中国1级黄色片| 九七久久人人| 国产精品乱人伦| 久久这里只有精品18| 免费在线观看a| 久久精品亚洲| 欧美成人激情在线| www.97视频| 国产一二三在线| 欧美日韩国内自拍| 五月婷婷丁香色| 天堂中文av| 成人av免费网站| 伊人婷婷久久| 日日爱66.cn| 日韩av网站免费在线| 九九热精品视频国产| 亚洲 日本 欧美 中文幕| 伊人亚洲精品| 日韩免费视频一区| 黑人と日本人の交わりビデオ| 久久不射影院| 欧美性猛交视频| 在线观看国产一级片| 在线观看黄网| 国产欧美日韩精品在线| 自拍偷拍一区二区三区| 日产乱码一卡二卡三免费| 亚洲精选国产| 国产欧美日韩视频| a级片免费视频| 欧美日韩在线观看视频小说| 中文字幕国产日韩| 久久久久性色av无码一区二区| 成人黄色免费观看| 精品成a人在线观看| 国产成人一区二区在线观看| av美女在线观看| 欧美日韩aaa| 欧美无人区码suv| 成人福利在线观看视频| 制服丝袜亚洲播放| 谁有免费的黄色网址| 手机av在线播放| 精品久久久久久最新网址| 亚洲国产av一区| 桃色一区二区| 日韩最新免费不卡| 久久国产视频一区| 国产在线观看91一区二区三区| 欧美最近摘花xxxx摘花| 亚洲精品久久久久avwww潮水| 国产精品大片| 国产丝袜不卡| 成年网站免费观看| 久久先锋影音av鲁色资源| www.色偷偷.com| 男人资源在线播放| 欧美精品乱人伦久久久久久| 黄色录像免费观看| aaa国产精品| 欧美精品999| 色悠久久久久综合网小说| 日韩成人免费看| 亚洲成人午夜在线| 国产wwww| 亚洲欧美日韩在线不卡| 免费网站在线观看黄| 亚洲a∨精品一区二区三区导航| 日韩精品在线看| 亚洲 欧美 中文字幕| 亚洲日韩成人| 精选一区二区三区四区五区| 免费看a网站| 久久久精品人体av艺术| 波多野结衣天堂| 2021中文字幕在线| 日韩少妇与小伙激情| 97人妻精品一区二区三区| 亚洲视频观看| 欧美精品一区二区三区在线看午夜 | av日韩在线网站| 国产精品动漫网站| www在线观看播放免费视频日本| 亚洲第一中文字幕| 岛国av中文字幕| 亚洲三级免费| 欧美黑人在线观看| 日本不卡在线| 精品嫩草影院久久| 国产第一页在线观看| 99在线|亚洲一区二区| 超碰97免费观看| 99青草视频在线播放视| 日韩免费成人网| www.激情五月|