新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 51系列單片機之串口通信

        51系列單片機之串口通信

        作者: 時間:2016-11-20 來源:網絡 收藏
        單片機串口通信看起來是很復雜的,主要是因為他用到了更多的寄存器,與前面的知識相比他更具綜合能力,寫起來考慮的問題自然也變多了.而前面學習過的定時器與中斷將是單片機通信的基礎.
        單片機的中斷系統中第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.


        評論


        技術專區

        關閉
        主站蜘蛛池模板: 靖边县| 维西| 石景山区| 嘉禾县| 佛冈县| 旌德县| 白山市| 名山县| 叶城县| 无为县| 原阳县| 普宁市| 神木县| 江油市| 潞西市| 泸西县| 新田县| 肇东市| 新河县| 巩留县| 永仁县| 淮滨县| 石柱| 宣汉县| 平顺县| 琼结县| 阿荣旗| 焦作市| 图木舒克市| 北宁市| 民县| 合江县| 法库县| 虎林市| 潢川县| 连城县| 夏邑县| 阳东县| 信丰县| 临沂市| 密山市|