娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年06月27日(星期五)

正在發生

2020年06月27日 | 51單片機 | 串口通信實驗(模擬串口通信/多機通信實例)

發布者:不羈少年 來源: eefocus關鍵字:51單片機  模擬串口通信  多機通信 手機看文章 掃描二維碼
隨時隨地手機看文章

實驗7.4:RS232串口應用實例

設計要求:

通過串口發送接收數據(串口工作方式1)

實現思路:

  • 定時器設置

  • 串口設置

    • 工作方式

    • 波特率

  • 開啟定時/計數器

  • 串口執行

    • 接收數據

    • 發送數據

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

實現代碼:

 1 #include

 2 main()

 3 {

 4     TMOD = 0x20;

 5     SM0 = 0;

 6     SM1 = 1;

 7     REN = 1;

 8     PCON = 0;

 9     TH1 = 0xFD; //253=256-(1*11.0592*10^6)/(384*9600)

10     TL1 = 0xFD;

11     TR1 = 1;

12     P1 = SBUF;

13     while(!RI);

14     RI = 0;

15     SBUF = P1;

16     while(!TI);

17     TI = 0;

18 }

————————————————————————————————————————————

實驗7.5:MAX487多機通信應用實例

設計要求:

在主從3個單片機中進行雙機通信,當從機顯示的數字和主機相同,則表示該主機和從機正在通信。按下主機按鍵切換當前對象。

實現思路:

  • 主機端

    在主機中設置定時器和串口參數,并一直保持發送數據的狀態。

    通過MAX487芯片將3個單片機連接,并通過設置/RE、DE管腳控制單片機輸入輸出狀態。

    需要按下主機按鍵時檢測按鍵狀態,切換當前對象,設置中斷,并標記此時狀態是從機1或從機2。

    //中斷發生時按照中斷優先級,主機先執行cort++并發送信息,主機中斷結束后才進入從機中斷。

    如果是從機1,輸出狀態下發送對應數字,輸入狀態下設置單片機通信(非多機通信)接收并顯示對應數字,重置輸出狀態。從機2同理。

  • 從機端

    設置與主機相同的串口參數和定時器和默認顯示值。允許接收中斷

    當按鍵被按下,判斷主機要通信的是否是自己,是則顯示對應數字并向主機發送數字,否則重置狀態。

執行流程:(多機通信模式)

  • 主機

  • 從機

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

實現代碼:SM2=1,多機通信模式!


主機

 1 #include

 2 #include

 3 unsigned char cort = 0;

 4 sbit P3_5 = P3 ^ 5;

 5 key_serial() interrupt 0 using 1

 6 {

 7     ++cort;

 8     if (cort == 3)

 9         cort = 1;

10 }

11 void main()

12 {

13     P2 = 0xff;

14     TMOD = 0x20;

15     TH1 = 0xFD;

16     TL1 = 0xFD;

17     PCON = 0x00;

18     TR1 = 1;

19     SCON = 0xF8;

20     EA = 1;

21     EX0 = 1;

22     IT0 = 1;

23     P3_5 = 1;

24     while(1)

25     {

26         if (cort == 1)

27         {

28             SBUF = 0x01;

29             while(TI != 1);

30             TI = 0;

31             P3_5 = 0;

32             RB8 = 1;

33             while(RI != 1);

34             RI = 0;

35             P2 = SBUF;

36             P3_5 = 1;

37         }

38         if(cort == 2)

39         {

40             SBUF = 0x02;

41             while(TI != 1);

42             TI = 0;

43             P3_5 = 0;

44             RB8 = 1;

45             while(RI != 1);

46             RI = 0;

47             P2 = SBUF;

48             SM2 = 1;

49             P3_5 = 1;

50         }

51 

52     }

53 }

從機1

 1 #include

 2 #include

 3 sbit P3_5 = P3 ^ 5;

 4 void serial(void) interrupt 4 using 1

 5 {

 6     ES = 0;

 7     RI = 0;

 8     if (SBUF == 0x01)

 9     {

10         P3_5 = 1;

11         RI = 0;

12         TB8 = 1;

13         P1 = 0x10;

14         SBUF = 0x10;

15         while(!TI);

16         TI = 0;

17     }

18     else P1 = 0;

19     P3_5 = 0;

20     ES = 1;

21 }

22 void main()

23 {

24     P1 = 0x00;

25     TMOD = 0x20;

26     TH1 = 0xFD;

27     TL1 = 0xFD;

28     PCON = 0x00;

29     TR1 = 1;

30     SCON = 0xF0;

31     EA = 1;

32     ES = 1;

33     P3_5 = 0;

34     while(1)

35         _nop_();

36 }

從機2

 1 #include

 2 #include

 3 sbit P3_5 = P3 ^ 5;

 4 void serial() interrupt 4 using 1

 5 {

 6     ES = 0;

 7     RI = 0;

 8     if (SBUF == 0x02)

 9     {

10         P3_5 = 1;

11         RI = 0;

12         TB8 = 1;

13         P1 = 0x20;

14         SBUF = 0x20;

15         while(!TI);

16         TI = 0;

17     }

18     else P1 = 0;

19     P3_5 = 0;

20     ES = 1;

21 }

22 void main()

23 {

24     P1 = 0x00;

25     TMOD = 0x20;

26     TH1 = 0xFD;

27     TL1 = 0xFD;

28     PCON = 0x00;

29     TR1 = 1;

30     SCON = 0xF0;

31     EA = 1;

32     ES = 1;

33     P3_5 = 0;

34     while(1)

35         _nop_();

36 }

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -


實現代碼:SM2=0,單機通信模式!


主機

 1 #include

 2 unsigned char cort = 0;

 3 sbit P3_5 = P3 ^ 5;

 4 void key_serial() interrupt 0 using 1

 5 {

 6     ++cort;

 7 }

 8 void main()

 9 {

10     P2 = 0x0f;

11     TMOD = 0x20;

12     TH1 = 0xFD;

13     TL1 = 0xFD;

14     PCON = 0x00;

15     TR1 = 1;

16     SCON = 0xD0;

17     EA = 1;

18     EX0 = 1;

19     IT0 = 1;

20     P3_5 = 1;

21     while(1)

22     {

23         if (cort == 1)

24         {

25             SBUF = 0x01;

26             while(!TI);

27             TI = 0;

28             P3_5 = 0;

29             while(!RI);

30             RI = 0;

31             P2 = SBUF;

32             P3_5 = 1;

33         }

34         if(cort == 2)

35         {

36             SBUF = 0x02;

37             while(!TI);

38             TI = 0;

39             P3_5 = 0;

40             while(!RI);

41             RI = 0;

42             P2 = SBUF;

43             P3_5 = 1;

44         }

45         if (cort == 3)

46             cort = 1;

47     }

48 }

從機1

 1 #include

 2 #include

 3 sbit P3_5 = P3 ^ 5;

 4 void serial(void) interrupt 4 using 1

 5 {

 6     ES = 0;

 7     RI = 0;

 8     P2 =  SBUF;

 9     if (SBUF == 0x01)

10     {

11         P3_5 = 1;

12         P1 = 0x10;

13         SBUF = 0x30;

14         while(!TI);

15         TI = 0;

16     }

17     else P1 = 0;

18     P3_5 = 0;

19     ES = 1;

20 }

21 void main()

22 {

23     P1 = 0x00;

24     TMOD = 0x20;

25     TH1 = 0xFD;

26     TL1 = 0xFD;

27     PCON = 0x00;

28     TR1 = 1;

29     SCON = 0xD0;

30     EA = 1;

31     ES = 1;

32     P3_5 = 0;

33     while(1)

34         _nop_();

35 }

從機2:略

————————————————————————————————————————————

關于該實驗在多機通信和單機通信下不同情況的討論

  • 在單機通信模式下,SM2 == 0,

    初始化:SCON = D0;

    發送完畢:TI=0;

    接收完畢:RI=0;

    中斷觸發條件:RI=0且SM2=0,RI置位

    此情況下,發送和接收信息結束后需要對RI和TI手動置為0即可。

  • 在多機通信模式下,SM2在0和1之間調整

    初始化:主機:SCON = F8;從機:SCON = F0;

    中斷觸發條件:接收到的第九位RB9==1,RI置位(如果RB8=0,RI就會等于0,就不能進入接收中斷,自然丟失信息了。)

       

  • 51單片機原理及應用(陳海宴)書P129案例是在主機發送狀態下使用多機通信,接收狀態下使用單機通信,在理解上容易出現錯誤,過程分析及代碼如下:

實現代碼:


主機:

 1 #include

 2 #include

 3 unsigned char cort = 0;

 4 sbit P3_5 = P3 ^ 5;

 5 key_serial() interrupt 0 using 1

 6 {

 7     ++cort;

 8 }

 9 void main()

10 {

11     P2 = 0xff;

12     TMOD = 0x20;

13     TH1 = 0xFD;

14     TL1 = 0xFD;

15     PCON = 0x00;

16     TR1 = 1;

17     SCON = 0xF8;

18     EA = 1;

19     EX0 = 1;

20     IT0 = 1;

21     P3_5 = 1;

[1] [2]
關鍵字:51單片機  模擬串口通信  多機通信 引用地址:51單片機 | 串口通信實驗(模擬串口通信/多機通信實例)

上一篇:STC89C52_51單片機_串口配置_UART串口通信
下一篇:單片機_指針讀取內容解析

推薦閱讀

LPC1768的P0口和P2口既能做輸入輸出,還可以配置為中斷源。現在P2.10作為按鍵,配置如下:void BUTTON_init(void){ LPC_GPIO2->FIODIR &=~(1 << 10); /* PORT2.10 definedas input */ LPC_GPIOINT->IO2IntEnF |= (1<< 10); /* enable falling edgeirq */ NVIC_EnableIRQ(EINT3_IRQn); /* enable...
一、STM32 PWM工作過程:STM32 PWM工作過程(通道1為例)CCR1:捕獲比較(值)寄存器(x=1,2,3,4):設置比較值。CCMR1: OC1M[2:0]位:對于PWM方式下,用于設置PWM模式1【110】或者PWM模式2【111】CCER:CC1P位:輸入/捕獲1輸出極性。0:高電平有效,1:低電平有效。CCER:CC1E位:輸入/捕獲1輸出使能。0:關閉,1:打開。二、PWM模式1 & PWM模式2:寄存器TI...
系統功能使用STM8的USART進行自發自收(將發送引腳RXD短接到接收引腳TXD),發出數據:0,1,2。。。數據,能接收到自己發出的數據:0,1,2。。。使用LED作出簡單指示!硬件設計 LED控制電路原理圖 UART電路原理圖軟件設計/*********************************************************************微 雪 電 子 WaveShare http://www.waveShare.net...
參與案件的一名律師周五表示,加拿大法院駁回了華為首席財務官孟晚舟禁止公開其法律團隊從匯豐銀行獲得新的證據的請求。據路透社6月25日報道,華為和匯豐銀行的律師4月在香港法院達成協議,向孟晚舟的法律團隊披露這些文件,條件是他們必須“盡合理努力”不將機密信息公開。加拿大檢察官反對孟晚舟禁止公開這些文件的要求。代表包括路透在內的一個媒體聯盟...

史海拾趣

問答坊 | AI 解惑

開源數控電源——的設計心得(第一版)

今天看到了一篇很好的東西,數控電源設計心得,所以轉載過來,與大家分享。 本人一直從事電源及檢測器,儀表設計工作,有幸被稱為天朝的電工。 因為天朝能說不會做的大師太多了,咱還是做好電工的本份吧。 (自為認可以接受)實驗電源的技術要求 ...…

查看全部問答∨

如何在ISIS中打開cpu source code

E:\\singlechip\\example\\Picture1.png 如上圖所示,如何在isis中打開cpu source code窗口 謝謝…

查看全部問答∨

音頻驅動開發的思路請大蝦們指點

目前接到新任務,開發wm8987的驅動程序,請問音頻驅動跟什么有關?請大蝦們多多指點,謝謝。…

查看全部問答∨

在EVC 4模擬器上怎么安裝SQL CE 2.0?我將需要的文件傳到了模擬器上,單擊dllregister.exe注冊時提示dllregister不是有效WIN

我按網上別人說的方法做了: 1文件夾adocepb\\setup\\Data Access 3.1\\Program Files\\DataAccess31\\DEVICE\\ARM\\ARM720\\CE\\RETAIL下的所有DLL文件復制到開發板中的Windows文件夾下 2.將SQL server  ce 2 的安裝目錄下的文件夾中. ...…

查看全部問答∨

芯片:國產的?進口的?你選哪個?

       從我進實驗室就跟著去做了軍品,到現在有兩年時間了。芯片要求很苛刻,很少有國產的芯片;大都是訂購從國外郵來,價格貴時間長都不說,問題是要看人家臉色,明明網站上有銷售的就說訂不到。   &nb ...…

查看全部問答∨

【求助】430初學者!

因工作需要,于半月前開始學習430,目前手頭上到是有倆本教材。分別是 《msp430系列超低功耗16位單片機原理與應用》 《msp430系列單片機c語言程序設計與開發》 但是現在效果不大,沒什么思路,連問題都提不出來。怎么看都很陌生。 不知道學430 ...…

查看全部問答∨

【求助】參數存儲的優化問題?

我現在有5組(每組參數若干個)參數要存。主存儲區只分了2段,只好再占用程序存儲區,F600(起始)段,F800段和FC00段。 這樣做太浪費了。但由于每組參數設置和存取要分開。而flash又要段擦除,我現在只好一段只存一組參數。而程序存儲區本壘就已經 ...…

查看全部問答∨

LM3問題求救

我下載了網址為:https://bbs.eeworld.com.cn/thread-290529-1-1.html的樓主寫的程序,下載到自己的板子里,現象是:L3L7L5循環閃爍。當我把程序什么都不動,編譯以后,所有的燈(L3-L8)常亮。修稿程序也是一樣。   這是為什么呢?   ...…

查看全部問答∨

IAR MCS-51 7.30B升級到7.60出現問題,兼容性不好。

IAR MCS-51 7.30B升級到7.60出現問題,編譯不過。用CC2430的協議棧,在7.30編譯正常,但7.60編譯不了。那位用個,怎么處理的。…

查看全部問答∨

ADC的中間隊列級是什么??

XC2000   ADC 模塊  的兩個  順序請求源的差別在于   用來保存序列的中間隊列級的個數不同。仲裁時隙0的請求源不提供  中間隊列級。仲裁時隙2的請求源提供  3級 中間隊列級。。。。這 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 诏安县| 义乌市| 宁晋县| 凤台县| 乌兰县| 车致| 策勒县| 平和县| 化德县| 六枝特区| 日照市| 邳州市| 团风县| 阿图什市| 宝坻区| 鱼台县| 奈曼旗| 宁化县| 岚皋县| 山丹县| 南投市| 绥中县| 嵊泗县| 津市市| 新龙县| 闸北区| 额敏县| 屏东市| 固阳县| 商都县| 千阳县| 永善县| 昭通市| 罗山县| 镇沅| 门头沟区| 准格尔旗| 大化| 东乡族自治县| 阿荣旗| 阆中市|