色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計應(yīng)用 > 51系列單片機之串口通信

          51系列單片機之串口通信

          作者: 時間:2016-11-20 來源:網(wǎng)絡(luò) 收藏
          單片機串口通信看起來是很復(fù)雜的,主要是因為他用到了更多的寄存器,與前面的知識相比他更具綜合能力,寫起來考慮的問題自然也變多了.而前面學(xué)習(xí)過的定時器與中斷將是單片機通信的基礎(chǔ).
          單片機的中斷系統(tǒng)中第4個中斷就是串口中斷,要進行串口通信首先就要打開CPU總中斷EA,還要打開串口通信中斷ES,這是串口通信的前堤,而串口通信也跟計時器一樣有很多的模式,因此我們還要設(shè)置SCON寄存器來指定采用哪一種方式進行通信,而在通信的過程中,我們還要設(shè)定通信的波特率,不然的話,單片機是沒辦法進行采樣的,這樣也不會得到正確的結(jié)果了.我在實驗過程中用到的是1號定時器來設(shè)定的波特率,用到了計時器方式2,也就是8位自動重裝,這樣可以簡化編程,她的實現(xiàn)思想就是將常數(shù)放入TH,而TL中則是初始化參數(shù),當(dāng)溢出時,單片機會自動將TH中的常數(shù)裝入TL中.



          再來說說波特率,我們?yōu)槭裁匆O(shè)定波特率,因為單片機會以16倍波特率的速度進行采樣,而在實驗中我們用的是10位異步收發(fā)方式,因此要將SM0置0,SM1置1.而其中的10位有8位數(shù)據(jù)位,第一位和最后一位是發(fā)送數(shù)據(jù)的起始與結(jié)束.采用高的皮特率就不會出錯啦.而波特率是有一個公式的:
          方式0的波特率 = fosc/12
          方式2的波特率 =(2SMOD/64)· fosc
          方式1的波特率 =(2SMOD/32)·(T1溢出率)
          方式3的波特率 =(2SMOD/32)·(T1溢出率)
          T1 溢出率 = fosc /{12×[256 -(TH1)]}
          根據(jù)公式我們很容易就算出當(dāng)晶振為110592HZ時,要達到9600的波特率,我們只需要將TL1置FDH即可,如下圖:


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


          關(guān)鍵詞: 51系列單片機串口通

          評論


          技術(shù)專區(qū)

          關(guān)閉