新聞中心

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

        51單片機---串口通訊

        作者: 時間:2016-11-11 來源:網絡 收藏
        一、簡介

        MCS-51單片機內部有一個可編程的雙向全雙工串行通信接口,簡稱串口;該串口有4種工作方式,以適用于不同場合;其波特率由單片機內部的定時器/計數器產生,可由軟件設置;接收和發送均可工作在查詢模式和中斷模式,比較靈活;
        二、串口結構與控制
        MCS-51單片機內部的串口擁有兩個物理上相互獨立的接收、發送緩沖器SBUF,可以同時接收和發送數據;發送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入;兩個緩沖器占用同一個地址(99H);控制MCS-51單片機串口的寄存器有兩個SCON和PCON;
        1、串口工作方式控制寄存器SCON(99H)
        如下圖:

        本文引用地址:http://www.104case.com/article/201611/316840.htm

        (1)、SM0和SM1:控制單片機的工作方式;
        (2)、SM2:允許方式2和方式3進行多機通信控制位;
        (3)、REN:允許串行接收控制位;1-允許接收;0-禁止接收;
        (4)、TB8:用于工作在方式2和方式3時存放要發送的第9位數據,根據需要,由軟件設置;
        (5)、RB8:用于工作在方式2和方式3時存放接收到的第9位數據;
        (6)、TI:發送中斷標志位,必須由軟件清0;當發送完一幀數據時,就產生一個中斷,此時TI被硬件自動置1,用于標記產生了發送中斷;
        (7)、RI:接收中斷標志位,必須由軟件清0;當接收完一幀數據時,就產生一個中斷,此時RI被硬件自動置1,用于標記產生了接收中斷;
        2、特殊功能寄存器PCON(87H)
        如下圖:

        (1)、SMOD:波特率倍增位;當SMOD=1時,波特率加倍;當SMOD=0時,波特率不加倍;
        (2)、GF1和GF0:兩個通用標志,供用戶使用;
        (3)、PD和IDL:CHMOS型8051單片機的低功耗控制位;
        三、串口的工作方式
        串口的工作方式有4種,由特殊功能寄存器SCON的SM0位和SM1位共同決定;
        如下表:

        1、方式0:
        該方式下,串口為同步移位寄存器輸入/輸出方式,其波特率固定不變為Fosc/12;數據由RXD(P3.0)口輸入/輸出,同步移位脈沖由TXD(P3.1)端輸出,發送接收的都是8位數據,低位在先;
        2、方式1:
        當SM0SM1=01時,串口以該方式工作,此時的串口為8位異步通信接口;
        3、方式2:
        當SM0SM1=10時,串口以該方式工作,此時,發送和接收的都是一幀數據,即:由11位組成,其中第1位是起始位,接下來的8位是用戶數據(低位在先),然后是1位可編程位(第9位數據),最后一位是停止位;RB8/TB8根據需要,設置成0或1,作為多機通信中的地址數據標志位或數據的奇偶檢驗位;
        4、方式3:
        當SM0SM1=11時,串口以該方式工作,該方式是波特率可變的9位異步通信方式,除了波特率外,方式3與方式2相同;
        四、波特率的計算
        方式0: Buard = Fosc/12
        方式1: Buard = K*Fosc/[32*12*(256-TH1)]
        方式2: Buard = K*Fosc/64
        方式3: Buard = K*Fosc/[32*12*(256-TH1)]
        注:若波特率的倍增位SMOD=0,則K=1;若SMOD=1,則K=2;
        五、串口初始化
        STEP1:設置串口工作模式(如:SCON=0x50);
        STEP2:配置定時器
        STEP2-1:設置定時器T1工作在模式2(T如:MOD=0x02自動重裝預置數模式);
        STEP2-2:給定時器T1裝初始值(THx/TLx);
        STEP2-3:啟動定時器(TR1=1);
        STEP3:如果讓串口工作在中斷模式,則還需要把RI/TI清0,同時開串口中斷(ES=1)和CPU總中斷(EA=1);



        關鍵詞: 51單片機串口通

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 高陵县| 霍城县| 密山市| 云阳县| 淮阳县| 江口县| 北海市| 米易县| 紫云| 兴国县| 贵州省| 营山县| 徐水县| 二连浩特市| 柳江县| 安乡县| 隆昌县| 叙永县| 宁阳县| 定陶县| 马公市| 桃园县| 科尔| 隆安县| 武城县| 盐池县| 禄丰县| 鄱阳县| 五河县| 南开区| 米泉市| 佛山市| 黑河市| 聂荣县| 高雄市| 金乡县| 离岛区| 阜平县| 额尔古纳市| 绵竹市| 云阳县|