51系列單片機之串口通訊

來源:互聯網
上載者:User

單片機的串口通訊看起來是很複雜的,主要是因為他用到了更多的寄存器,與前面的知識相比他更具綜合能力,寫起來考慮的問題自然也變多了.而前面學習過的定時器與中斷將是單片機通訊的基礎.
     單片機的中斷系統中第4個中斷就是串口中斷,要進行串口通訊首先就要開啟CPU總中斷EA,還要開啟串口通訊中斷ES,這是串口通訊的前堤,而串口通訊也跟計時器一樣有很多的模式,因此我們還要設定SCON寄存器來指定採用哪一種方式進行通訊,而在通訊的過程中,我們還要設定通訊的傳輸速率,不然的話,單片機是沒辦法進行採樣的,這樣也不會得到正確的結果了.我在實驗過程中用到的是1號定時器來設定的傳輸速率,用到了計時器方式2,也就是8位自動重裝,這樣可以簡化編程,她的實現思想就是將常數放入TH,而TL中則是初始化參數,當溢出時,單片機會自動將TH中的常數裝入TL中.

    再來說說傳輸速率,我們為什麼要設定傳輸速率,因為單片機會以16倍傳輸速率的速度進行採樣,而在實驗中我們用的是10位非同步收發方式,因此要將SM0置0,SM1置1.而其中的10位有8位元據位,第一位和最後一位是發送資料的起始與結束.採用高的皮特率就不會出錯啦.而傳輸速率是有一個公式的:
方式0的傳輸速率 =  fosc/12
方式2的傳輸速率 =(2SMOD/64)· fosc
方式1的傳輸速率 =(2SMOD/32)·(T1溢出率)
方式3的傳輸速率 =(2SMOD/32)·(T1溢出率)
T1 溢出率 = fosc /{12×[256 -(TH1)]}
根據公式我們很容易就算出當晶振為110592HZ時,要達到9600的傳輸速率,我們只需要將TL1置FDH即可,如: 

  除此之外,你還要將SCON中的REN位置1,不然的話,單片機是不會接收資料的.
  還有不要忘了選擇定時器的工作方式,設定TMOD為0x20既是工作方式2,8位自動重裝定時器.
  這樣一來,初始批工作算是差不多了.而串口通訊分為中斷方式,和查詢方式,如果你想用查詢方式你也不用設定IE寄存器了.
   在串口通訊中,還有一個很重要的寄存器SBUF,其實也不是一個,是兩個,只是它們共用同一個地址,再熱氣運算式的不同,單片機會自動選擇使用哪一個SBUF.

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.