新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 串行口通信原理及操作流程

        串行口通信原理及操作流程

        作者: 時(shí)間:2016-12-01 來源:網(wǎng)絡(luò) 收藏
        51單片機(jī)的串行口是一個(gè)可編程全雙工的通信接口,具有UART(通用異步收發(fā)器)的全部功能,能同時(shí)進(jìn)行數(shù)據(jù)的發(fā)送和接收,也可以作為同步移位寄存器使用。

        51單片機(jī)的串行口主要由兩個(gè)獨(dú)立的串行數(shù)據(jù)緩沖寄存器SBUF(發(fā)送緩沖寄存器和接收緩沖寄存器)和發(fā)送控制器、接收控制器、輸入移位寄存器及若干控制門電路組成。

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

        51 單片機(jī)可以通過特殊功能寄存器SBUF隊(duì)串行接收或串行發(fā)送寄存器進(jìn)行訪問,兩個(gè)寄存器共用一個(gè)地址99H,但在物理上是兩個(gè)獨(dú)立的寄存器,由指令操作決定訪問哪一個(gè)寄存器。執(zhí)行寫指令時(shí)訪問串行發(fā)送寄存器;執(zhí)行讀指令時(shí),訪問串行接收寄存器。(接收器具有雙緩沖結(jié)構(gòu),即在接收寄存器中讀出前一個(gè)已接收到的字節(jié)之前,便能接收第二個(gè)字節(jié),如果第二個(gè)字節(jié)已接收完畢,而第一個(gè)字節(jié)還沒有讀出,則將丟失其中一個(gè)字節(jié),編程時(shí)應(yīng)引起注意。對于發(fā)送器,因?yàn)槭怯?cpu控制的,所以不需要考慮。

        與串行口緊密相關(guān)的一個(gè)特殊功能寄存器是串行口控制寄存器SCON,它用來設(shè)定串行口的工作方式、接收/發(fā)送控制以及狀態(tài)標(biāo)志等。

        串行口控制寄存器SCON

        串行口控制寄存器SCON在特殊功能寄存器中,字節(jié)地址為98H,可位尋址,單片機(jī)復(fù)位時(shí)SCON全部被清零。

        位序號

        D7

        D6

        D5

        D4

        D3

        D2

        D1

        D0

        位符號

        SM0

        SM1

        SM2

        REN

        TB8

        RB8

        T1

        R1

        SM0,SM1為工作方式選擇位。串行口有四種工作方式,它們由SM0、SM1設(shè)定。其中方式一最為常用。

        SM2為多機(jī)通信控制位。

        REN為允許串行接收位。

        TB8為方式2、3中方式數(shù)據(jù)的第九位。

        RB8為方式2、2中接收數(shù)據(jù)的第九位。

        TI為發(fā)送中斷標(biāo)志位,在方式0時(shí),當(dāng)串行發(fā)送第8位數(shù)據(jù)結(jié)束時(shí),或在其他方式,串行發(fā)送停止位的開始時(shí),由內(nèi)部硬件使TI置一,向CPU發(fā)出中斷申請。在中斷服務(wù)程序中,必須使用軟件將其清零,取消此中斷申請。

        RI為接收中斷標(biāo)志位。在方式0時(shí),當(dāng)串行接收第8位數(shù)據(jù)結(jié)束時(shí),或在其他方式,串行接收停止位的中間時(shí),由內(nèi)部硬件使RI置一,向CPU發(fā)出中斷申請。在中斷服務(wù)程序中,必須使用軟件將其清零,取消此中斷申請。

        串口工作方式1簡介(0、2、3以后再說),串行口方式傳送1幀數(shù)據(jù)共10位,其中一位起始位(0),八位數(shù)據(jù)位(最低位在前,高位在后),一位停止位(1)。幀與幀之間可以有空閑,也可以無空閑。TXD(P3.1)位數(shù)據(jù)發(fā)送引腳,RXD(P3.0)為數(shù)據(jù)接收引腳。其傳輸波特率是可變的,對于51單片機(jī),波特率由定時(shí)器1的溢出率決定。

        串行口方式1編程與實(shí)現(xiàn)

        當(dāng)數(shù)據(jù)被寫入SBUF寄存器后,單片機(jī)自動(dòng)開始從起始位發(fā)送數(shù)據(jù),發(fā)送到停止位的開始時(shí),由內(nèi)部硬件使TI置1,向CPU申請中斷,接下來可在中斷服務(wù)程序中做相應(yīng)的處理,也可選擇不進(jìn)入中斷。

        用軟件置REN為1時(shí),接收器以所選擇波特率的16倍速率采樣RXD引腳電平,檢測到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位。接收過程中,數(shù)據(jù)從移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。當(dāng) RI=0,且SM2=0(或接收到的停止位為1時(shí)),將接收到的9位數(shù)據(jù)的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向 CPU請求中斷。


        上一頁 1 2 下一頁

        關(guān)鍵詞: 串行口通信原理操作流

        評論


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

        關(guān)閉
        主站蜘蛛池模板: 桂阳县| 眉山市| 鲁山县| 东兴市| 维西| 山阳县| 瑞安市| 墨江| 景德镇市| 库车县| 蓬溪县| 固始县| 安阳县| 黔西县| 凤庆县| 六枝特区| 宜良县| 湄潭县| 五莲县| 莆田市| 吴桥县| 平顺县| 绥德县| 商丘市| 伊川县| 汤原县| 隆昌县| 武平县| 梁河县| 洪江市| 青铜峡市| 涟水县| 广汉市| 河曲县| 淳化县| 潞城市| 手游| 泗水县| 象山县| 仙桃市| 威海市|