<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

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

          51單片機(jī)串口通信及波特率設(shè)置

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

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

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

          SBUF是可以直接尋址的專用寄存器。物理上,它對應(yīng)著兩個寄存器,即一個發(fā)送寄存器一個接收寄存器,CPU寫SBUF就是修改發(fā)送寄存器;讀SBUF就是讀接收寄存器。接收器是雙緩沖的,以避免在接收下一幀數(shù)據(jù)之前,CPU未能及時的響應(yīng)接收器的中斷,沒有把上一幀的數(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個選擇位對應(yīng)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中是多機(jī)通信的使能位。在工作方式0中,SM2必須為0。在工作方式1中,若SM2=1且沒有接收到有效的停止位,則接收中斷標(biāo)志位RI不會被激活。在工作方式2和3中若SM2=1且接收到的第9位數(shù)據(jù)(RB8)為0,則接收中斷標(biāo)志RB8不會被激活,若接收到的第9位數(shù)據(jù)(RB8)為1,則RI置位。此功能可用于多處理機(jī)通信。

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

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

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

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

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

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

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

          MSB LSB

          SMOD

          ——

          ——

          ——

          GF1

          GF0

          PD

          IDL

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

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

          (1) 工作方式0

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

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

          ……..

          D0

          D1

          D2

          D3

          D4

          D5

          D6

          D7

          …….

          (2)工作方式1

          當(dāng)SM0=0且SM1=1時,串口選擇工作方式1,其數(shù)據(jù)傳輸?shù)牟ㄌ芈视啥〞r/計數(shù)器T1、T2的溢出速率決定,可通過程序設(shè)定。當(dāng)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,當(dāng)執(zhí)行任一條SBUF指令時,就啟動串行數(shù)據(jù)的發(fā)送。在執(zhí)行寫入SBUF的指令時,也將“1”寫入發(fā)送移位寄存器的第9位,并通知發(fā)送控制器有發(fā)送請求。實際上,發(fā)送過程始于內(nèi)部的16分頻計數(shù)器下次滿度翻轉(zhuǎn)(全“1”變?nèi)?ldquo;0”)后的那幾個機(jī)器周期的開始。所以,每位的發(fā)送過程與16分頻計數(shù)器同步,而不是與“寫SBUF”同步。

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

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

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

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

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

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

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

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

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

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

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

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

          (1) 工作方式2和3

          當(dāng)SM0=1且SM1=0時,串口選擇工作方式2,當(dāng)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,接收時可編程位進(jìn)入SCON中的RB8。幀的格式如下:

          起始位0

          D0

          D1

          D2

          D3

          D4

          D5

          D6

          D7

          可編程位D8

          停止位1




          評論


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

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();