在线看毛片网站电影-亚洲国产欧美日韩精品一区二区三区,国产欧美乱夫不卡无乱码,国产精品欧美久久久天天影视,精品一区二区三区视频在线观看,亚洲国产精品人成乱码天天看,日韩久久久一区,91精品国产91免费

<menu id="6qfwx"><li id="6qfwx"></li></menu>
    1. <menu id="6qfwx"><dl id="6qfwx"></dl></menu>

      <label id="6qfwx"><ol id="6qfwx"></ol></label><menu id="6qfwx"></menu><object id="6qfwx"><strike id="6qfwx"><noscript id="6qfwx"></noscript></strike></object>
        1. <center id="6qfwx"><dl id="6qfwx"></dl></center>

            新聞中心

            EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 51單片機串口通信及波特率設置

            51單片機串口通信及波特率設置

            作者: 時間:2016-11-18 來源:網(wǎng)絡 收藏
            MCS-51單片機具有一個全雙工的串行通信接口,能同時進行發(fā)送和接收。它可以作為UART(通用異步接收和發(fā)送器)使用,也可以作為同步的移位寄存器使用。

            本文引用地址:http://www.biyoush.com/article/201611/315797.htm

            1. 數(shù)據(jù)緩沖寄存器SBUF

            SBUF是可以直接尋址的專用寄存器。物理上,它對應著兩個寄存器,即一個發(fā)送寄存器一個接收寄存器,CPU寫SBUF就是修改發(fā)送寄存器;讀SBUF就是讀接收寄存器。接收器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時的響應接收器的中斷,沒有把上一幀的數(shù)據(jù)讀走而產(chǎn)生兩幀數(shù)據(jù)重疊的問題。對于發(fā)送器,為了保持最大的傳輸速率,一般不需要雙緩沖,因為發(fā)送時CPU是主動的,不會產(chǎn)生重疊問題。

            2. 狀態(tài)控制寄存器SCON

            SCON是一個逐位定義的8位寄存器,用于控制串行通信的方式選擇、接收和發(fā)送,指示串口的狀態(tài),SCON即可以字節(jié)尋址也可以位尋址,字節(jié)地址98H,地址位為98H~9FH。它的各個位定義如下:

            MSB LSB

            SM0

            SM1

            SM2

            REN

            TB8

            RB8

            TI

            RI

            SM0和SM1是串口的工作方式選擇位,2個選擇位對應4種工作方式,如下表,其中Fosc是振蕩器的頻率。

            SM0 SM1

            工作方式

            功能

            波特率

            0 0

            0

            8位同步移位寄存器

            Fosc/12

            0 1

            1

            10位UART

            可變

            1 0

            2

            11位UART

            Fosc/64或Fosc/32

            1 1

            3

            11位UART

            可變

            SM2在工作方式2和3中是多機通信的使能位。在工作方式0中,SM2必須為0。在工作方式1中,若SM2=1且沒有接收到有效的停止位,則接收中斷標志位RI不會被激活。在工作方式2和3中若SM2=1且接收到的第9位數(shù)據(jù)(RB8)為0,則接收中斷標志RB8不會被激活,若接收到的第9位數(shù)據(jù)(RB8)為1,則RI置位。此功能可用于多處理機通信。

            REN為允許串行接收位,由軟件置位或清除。置位時允許串行接收,清除時禁止串行接收。

            TB8是工作方式2和3要發(fā)送的第9位數(shù)據(jù)。在許多通信協(xié)議中該位是奇偶位,可以按需要由軟件置位或清除。在多處理機通信中,該位用于表示是地址幀還是數(shù)據(jù)幀。

            RB8是工作方式2和3中接收到的第9位數(shù)據(jù)(例如是奇偶位或者地址/數(shù)據(jù)標識位),在工作方式1中若SM2=0,則RB8是已接收的停止位。在工作方式0中RB8不使用。

            TI 為發(fā)送中斷標志位,由硬件置位,軟件清除。工作方式0中在發(fā)送第8位末尾由硬件置位;在其他工作方式時,在發(fā)送停止位開始時由硬件置位。TI=1時,申請中斷。CPU響應中斷后,發(fā)送下一幀數(shù)據(jù)。在任何工作方式中都必須由軟件清除TI。

            RI為接收中斷標志位,由硬件置位,軟件清除。工作方式0中在接收第8位末尾由硬件置位;在其他工作方式時,在接收停止位的中間由硬件置位。RI=1時,申請中斷,要求CPU取走數(shù)據(jù)。但在工作方式1中,SM2=1且未接收到有效的停止位時,不會對RI置位。在任何工作方式中都必須由軟件清除RI。

            系統(tǒng)復位時,SCON的所有位都被清除。

            控制寄存器PCON也是一個逐位定義的8位寄存器,目前僅僅有幾位有定義,如下所示:

            MSB LSB

            SMOD

            ——

            ——

            ——

            GF1

            GF0

            PD

            IDL

            僅最高位SMOD與串口的控制有關,其他位與掉電方式有關。PCON的地址為87H只能按字節(jié)尋址,SMOD是串行通信波特率系數(shù)控制位,當串口工作在工作方式1、2時,若使用T1作為波特率發(fā)生器其SMOD=1則波特率加倍(見下面詳述)。

            GF1 和GF0用于一般的用途,對于AT89系列為通用的標志位,PD為電源下降位,對于AT89系列,PD為1進入掉電狀態(tài),IDL為IDLE模式位,對于AT89系列,IDL為1進入空閑工作方式,在PD和IDL同時為1時,PD優(yōu)先。

            (1) 工作方式0

            SM0=0且SM1=0時,串口選擇工作方式0,實質這是一種同步移位寄存器模式。

            其數(shù)據(jù)傳輸?shù)牟ㄌ芈使潭镕osc/12,數(shù)據(jù)由RXD引腳輸入或輸出,同步時鐘由TXD引腳輸出。接收/發(fā)送的是8位數(shù)據(jù),傳輸是低位在前,幀格式如下:

            ……..

            D0

            D1

            D2

            D3

            D4

            D5

            D6

            D7

            …….

            (2)工作方式1

            當SM0=0且SM1=1時,串口選擇工作方式1,其數(shù)據(jù)傳輸?shù)牟ㄌ芈视啥〞r/計數(shù)器T1、T2的溢出速率決定,可通過程序設定。當T2CON寄存器中的RCLK和TCLK置位時,用T2作為發(fā)送和接收波特率發(fā)生器,而RCLK=TCLK=0時,用T1作為波特率發(fā)生器,兩者還可以交叉使用,即發(fā)送和接收采用不同的波特率。數(shù)據(jù)由TXD引腳發(fā)送,由RXD引腳接收。

            發(fā)送或接收一幀的數(shù)據(jù)為10位,即1位起始位(0)、8位數(shù)據(jù)位(低位在先)和1位停止位(1)。真格式如下:

            起始位0

            D0

            D1

            D2

            D3

            D4

            D5

            D6

            D7

            停止位1

            類似于工作方式0,當執(zhí)行任一條SBUF指令時,就啟動串行數(shù)據(jù)的發(fā)送。在執(zhí)行寫入SBUF的指令時,也將“1”寫入發(fā)送移位寄存器的第9位,并通知發(fā)送控制器有發(fā)送請求。實際上,發(fā)送過程始于內(nèi)部的16分頻計數(shù)器下次滿度翻轉(全“1”變?nèi)?ldquo;0”)后的那幾個機器周期的開始。所以,每位的發(fā)送過程與16分頻計數(shù)器同步,而不是與“寫SBUF”同步。

            此方式的工作過程包括發(fā)送和接收兩部分。

            當執(zhí)行任一條寫SBUF指令時,就啟動串行數(shù)據(jù)的發(fā)送。在執(zhí)行寫入SBUF的指令時,也將“1”寫入發(fā)送移位寄存器的第9位,并使發(fā)送控制器開始發(fā)送。在這期間,內(nèi)部的定時保證寫入SBUF與激活發(fā)送之間有一個完整的機器周期。當發(fā)送脈沖有效后,移位寄存器的內(nèi)容由RXD引腳串行移位輸出,移位脈沖由TXD引腳輸出。

            在發(fā)送有效的每個機器周期,發(fā)送移位寄存器右移一位,就在其左邊補“0 ”。當數(shù)據(jù)的最高位移到移位寄存器的輸出時,原寫入第9位的“1”正好移到最高位的左邊一位,由此向左的所有位都為“0”,這標志著發(fā)送控制器要進行最后依次移位,并撤消發(fā)送有效,同時使發(fā)送中斷標志TI置位。

            當REN=1且接收中斷標志RI位清除時,即啟動一個接收過程。在下一個機器周期,接收控制器將“11111110”寫入接收移位寄存器,并在下一周期內(nèi)激發(fā)接收有效,同時由TXD引腳輸出移位脈沖。在移位脈沖的控制下,接收移位寄存器的內(nèi)容每一個機器周期左移一位,同時由RXD引腳接收一位輸入信號。

            每當接收移位寄存器左移一位,原寫入的“11111110”也左移一位。當最右邊的“0”移到最左邊時,標志著接收控制器要進行最后一次移位。在最后移位即將結束時,接收移位寄存器的內(nèi)容送入到接收數(shù)據(jù)緩沖寄存器SBUF,然后在啟動接收的第10個機器周期時,清除接收信號,將RI置位。

            如果在第一個時鐘周期中接收到的不是起始位(“0”),就復位接收電路,繼續(xù)檢測RXD引腳上1到0的跳變。如果接收到的是起始位,就將其移入接收移位寄存器,然后接收該幀的其他位。接收到的位從右邊移入,原來寫入的1從左邊移出,當起始位移到最左邊時,接收控制器將控制進行最后一次移位,把接收到的第9為數(shù)據(jù)送到接收數(shù)據(jù)緩沖器SBUF和RB8,同時置位RI。

            在進行最后一次移位時,能將數(shù)據(jù)送入到接收數(shù)據(jù)緩沖器SBUF和RB8而且置位RI的條件如下:

            ● RI=0,即上一真數(shù)據(jù)接收完成時,發(fā)出的中斷請求已經(jīng)被響應,SBUF中的上一幀數(shù)據(jù)已經(jīng)被取走。

            ● SM2=0或接收到的停止位為1。

            這兩個條件有一個不滿足接收到的數(shù)據(jù)就有可能丟失,并且無法修復;如兩者都滿足則數(shù)據(jù)裝入SBUF,停止位裝入RB8且置位RI。

            開始發(fā)送后的一個位周期,發(fā)送信號有效,開始將起始位送TXD引腳。一位時間后,數(shù)據(jù)信號有效。發(fā)送移位寄存器將數(shù)據(jù)由低位到高位順序輸出至TXD引腳。一位時間后第一個移位脈沖出現(xiàn),將最低數(shù)據(jù)位從右邊移出,同時從左邊補上“0”。當數(shù)據(jù)的最高位移到移位寄存器的輸出端時,先前寫入第9位的“1”正好移到最高位的左邊一位,而它的左區(qū)全部為“0”。在第10個位周期(16分頻計數(shù)器回0時),發(fā)送控制器要進行最后一次清除發(fā)送信號,同時使發(fā)送中斷標志TI置位。

            當REN=1且接收中斷標志RI位清除后,若在RXD引腳上檢測到一個由“1”到“0”的跳變,立即啟動一次接收的過程。同時復位16分頻計數(shù)器,使輸入位的邊沿與時鐘對齊,并將1FFH(9個“1”)寫入接收移位寄存器。接收控制器繼續(xù)以波特率的16倍的速率繼續(xù)對RXD引腳進行檢測,對每一位時間的第7、8、9個計數(shù)狀態(tài)的采樣值用多數(shù)表決法,當2次或2次以上的采樣值相同時,采樣值被接受。

            (1) 工作方式2和3

            當SM0=1且SM1=0時,串口選擇工作方式2,當SM0=1且SM1=1時,串口選擇工作方式3。數(shù)據(jù)由TXD引腳發(fā)送由RXD引腳接收。

            發(fā)送和接收的一幀信息為11位,即1位起始位(0),9位數(shù)位(低位在前,第9位數(shù)據(jù)位是可編程位)1位停止位(1)。發(fā)送時,可編程位(TB8)可賦0或1,接收時可編程位進入SCON中的RB8。幀的格式如下:

            起始位0

            D0

            D1

            D2

            D3

            D4

            D5

            D6

            D7

            可編程位D8

            停止位1




            評論


            技術專區(qū)

            關閉