單片機(jī)原理與應(yīng)用-007課件_第1頁
單片機(jī)原理與應(yīng)用-007課件_第2頁
單片機(jī)原理與應(yīng)用-007課件_第3頁
單片機(jī)原理與應(yīng)用-007課件_第4頁
單片機(jī)原理與應(yīng)用-007課件_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、本章分為三節(jié),主要介紹:7.1 串行口的結(jié)構(gòu)7.0 計算機(jī)串行通信基礎(chǔ)7.2 串行口的四種工作方式第 7 章 MCS-51的串行口7.3 多機(jī)通信7.4 波特率的制定方法1本章分為三節(jié),主要介紹:7.1 串行口的結(jié)構(gòu)7.0 計算7.1 計算機(jī)串行通信基礎(chǔ) 計算機(jī)通信是指計算機(jī)與外部設(shè)備或計算機(jī)與計算機(jī)之間的信息交換。有并行通信和串行通信兩種方式。 MCS-51單片機(jī)內(nèi)部有一個功能強(qiáng)大的全雙工的異步通信串行口。所謂全雙工就是雙機(jī)之間串行接收、發(fā)送數(shù)據(jù)可同時進(jìn)行。所謂異步通信,就是收、發(fā)雙方?jīng)]有同步時鐘來控制收、發(fā)雙方的同步傳送,而是靠雙方各自的時鐘來控制數(shù)據(jù)的異步傳送。27.1 計算機(jī)串行通信基

2、礎(chǔ) 計算機(jī)通信是指計算機(jī)與異步通信的數(shù)據(jù)格式 : 異步通信的特點:不要求收發(fā)雙方時鐘的嚴(yán)格一致,實現(xiàn)容易,設(shè)備開銷較小,但每個字符要附加23位用于起止位,各幀之間還有間隔,因此傳輸效率不高。3異步通信的數(shù)據(jù)格式 : 異步通信的特點:不要求收發(fā)雙方2、同步通信 同步通信時要建立發(fā)送方時鐘對接收方時鐘的直接控制,使雙方達(dá)到完全同步。此時,傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。發(fā)送方對接收方的同步可以通過兩種方法實現(xiàn)。 42、同步通信4 要傳送的串行數(shù)據(jù)在發(fā)方是以數(shù)據(jù)幀形式一幀一幀地發(fā)送,通過傳輸線由收方一幀一幀地接收。 MCS

3、-51的串行口有4種工作方式,波特率可由軟件設(shè)置片內(nèi)的定時器計數(shù)器來控制。每當(dāng)串行口接收或發(fā)送1B完畢,均可發(fā)出中斷請求。 MCS-51的串行口除了可以用于串行數(shù)據(jù)通信之外,還可以非常方便地用來擴(kuò)展并行1/0 口。5 要傳送的串行數(shù)據(jù)在發(fā)方是以數(shù)據(jù)幀形式一幀一幀地發(fā)送,7.1 串行口的結(jié)構(gòu) 有兩個物理上獨立的接收、發(fā)送緩沖器SBUF,可同時發(fā)送、接收數(shù)據(jù),兩個緩沖器共用一個特殊功能寄存器字節(jié)地址(99H)。67.1 串行口的結(jié)構(gòu)6 字節(jié)地址98H,可位尋址,位地址為98H9FH。7.1.1串行口控制寄存器 SCON(1) SM0、SM1:4種工作方式的選擇位7 字節(jié)地址98H,可位尋址,位地址

4、為98H9FH。7(2) SM2:多機(jī)通信控制位 SM2位主要用于方式2或方式3。當(dāng)串行口以方式2或方式3接收時,如果SM2=1,則只有當(dāng)接收到的第9位數(shù)據(jù)(RB8)為1時,才將接收到的前8位數(shù)據(jù)送入SBUF ,并置1 RI, 產(chǎn)生中斷請求;當(dāng)接收到的第9位數(shù)據(jù)(RB8)為0時,則將接收到的前8位數(shù)據(jù)丟棄。 SM2=0時,則不論第9位數(shù)據(jù)是1還是0,都將前8位數(shù)據(jù)送入SBUF中,并置1RI,產(chǎn)生中斷請求。方式1時,如果SM2=1 ,則只有收到有效的停止位時才會激活RI。在方式0時, SM2必須為 0 。8(2) SM2:多機(jī)通信控制位方式1時,如果SM2=1 ,則(3)REN:允許串行接收位

5、由軟件置 1 或清 0 。 REN=1 允許串行口接收數(shù)據(jù)。 REN=0 禁止串行口接收數(shù)據(jù)。(4)TB8: 發(fā)送的第9位數(shù)據(jù) 在方式 2 和 3 時, TB8 是要發(fā)送的第 9 位數(shù)據(jù)。其值由軟件置 1 或清0。 在雙機(jī)通信時, TB8 一般作為奇偶校驗位使用;在多機(jī)通信中用來表示主機(jī)發(fā)送的是地址幀還是數(shù)據(jù)幀, TB8=1 為地址幀, TB8=0 為數(shù)據(jù)幀。9(3)REN:允許串行接收位(4)TB8: 發(fā)送的第9位數(shù)據(jù)(5) RB8:接收到的第 9 位數(shù)據(jù) 工作在方式2和3時,RB8存放接收到的第9位數(shù)據(jù)。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。(6) TI

6、:發(fā)送中斷標(biāo)志位 在方式0時,串行發(fā)送第 8 位數(shù)據(jù)結(jié)束時由硬件置 1 ,在其它工作方式,串行口發(fā)送停止位的開始時置1。TI=1 ,表示一幀數(shù)據(jù)發(fā)送結(jié)束,可供軟件查詢,也可申請中斷。 CPU 響應(yīng)中斷后,在中斷服務(wù)程序中向 SBUF 寫入要發(fā)送的下一幀數(shù)據(jù)。 TI 必須由軟件清 0 。10(5) RB8:接收到的第 9 位數(shù)據(jù)(6) TI:發(fā)送中斷(5) RI:接收中斷標(biāo)志位 串行口工作在方式0時,接收完第8位數(shù)據(jù)時, RI由硬件置1。在其它工作方式中,串行口接收到停止位時,該位置1。 RI=1 ,表示一幀數(shù)據(jù)接收完畢,并申請中斷,要求CPU從接收SBUF取走數(shù)據(jù)。該位的狀態(tài)也可供軟件查詢。

7、RI必須由軟件清 0 。 SCON的所有位都可進(jìn)行位操作清0或置1。11(5) RI:接收中斷標(biāo)志位11SMOD:波特率選擇位。例如:方式 1 的波特率的計算公式為: 當(dāng)SMOD=1時,要比SOMD=0時的波特率加倍,所以也稱SMOD位為波特率倍增位。7.1.2 特殊功能寄存器PCON PCON字節(jié)地址為87H,沒有位尋址功能。12SMOD:波特率選擇位。 當(dāng)SMOD=1時,要比SOM7.2.1 方式 0 串行口的工作方式0為同步移位寄存器輸入輸出方式,常用于外接移位寄存器,以擴(kuò)展并行I/0 口。這種方式不適用于兩個MCS-51之間的串行通信。 以8位數(shù)據(jù)為1幀,不設(shè)起始位和停止位,先發(fā)送或接

8、收最低位。波特率固定為fosc/12 。7.2 串行口的 4 種工作方式137.2.1 方式 0 以8位數(shù)據(jù)為1幀,不設(shè)起始位和停1.方式0發(fā)送 當(dāng)CPU執(zhí)行1條將數(shù)據(jù)寫入SBUF的指令時,產(chǎn)生1個正脈沖,串行口開始即把SBUF中的8位數(shù)據(jù)以fosc12的固定波特率從RXD引腳串行輸出,低位在先,TXD引腳輸出同步移位脈沖,發(fā)送完8位數(shù)據(jù)置1中斷標(biāo)志位TI。141.方式0發(fā)送141.方式0接收 接收時,REN為串行口允許接收控制位,REN=0 ,禁止接收;REN=1 ,允許接收。 當(dāng)CPU向串行口的SCON寄存器寫入控制字(方式0,并置1REN位,同時RI=0)時,產(chǎn)生1個正脈沖,串行口即開始

9、接收數(shù)據(jù)。引腳RXD為數(shù)據(jù)輸入端,TXD為移位脈沖信號輸出端,接收器也以fosc/12的固定波特率采樣RXD引腳的數(shù)據(jù)信息,當(dāng)接收器接收到8位數(shù)據(jù)時置1中斷標(biāo)志RI,表示1幀數(shù)據(jù)接收完畢,可進(jìn)行下一幀數(shù)據(jù)的接收。151.方式0接收15 上面介紹了方式0的發(fā)送和接收。在方式0下, SCON 中的 TB8 、 RB8 位沒有用到,發(fā)送或接收完 8 位數(shù)據(jù)由硬件置 ITI 或 RI 中斷標(biāo)志位, CPU 響應(yīng) TI 或 RI 中斷。 TI或 RI標(biāo)志位必須由用戶軟件清 0 ,可采用如下指令: CLR TI; TI 位清 0 CLR Rl ; RI位清 0 清0 TI 或 RI。方式0時, SM2位(

10、多機(jī)通信控制位)必須為 0 。16 上面介紹了方式0的發(fā)送和接收。在方式0下, SCON7.2.2 方式1 SM0、SM1兩位為 01 時,串行口以方式1工作。方式1真正用于數(shù)據(jù)的串行發(fā)送和接收。 TXD 引腳和 RXD 引腳分別用于發(fā)送和接收數(shù)據(jù)。方式 1 收發(fā)1幀的數(shù)據(jù)為10位,1個起始位(0), 8個數(shù)據(jù)位,1 個停止位(1) ,先發(fā)送或接收最低位。 方式1串行口為波特率可變的8位異步通信接口。方式1的波特率由下式確定:177.2.2 方式1 方式1串行口為波特率可變的8位異步通1.方式1發(fā)送 方式1輸出時,數(shù)據(jù)位由TXD端輸出,發(fā)送1幀信息為10位,1位起始位0, 8位數(shù)據(jù)位(先低位)

11、和1位停止位1 ,當(dāng)CPU執(zhí)行1條數(shù)據(jù)寫發(fā)送緩沖器SBUF的指令,就啟動發(fā)送。 TX時鐘的頻率就是發(fā)送的波特率。發(fā)送開始時,內(nèi)部發(fā)送控制信號 變?yōu)橛行?,將起始位向TXD輸出,每經(jīng)過1個TX時鐘周期,便產(chǎn)生1個移位脈沖,并由TXD輸出1個數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,置1中斷標(biāo)志位TI,然后 失效。181.方式1發(fā)送 TX時鐘的頻率就是發(fā)送的波特率。發(fā)送開1.方式1接收 以方式1接收(REN=1,SM0,SM1=01) 時,數(shù)據(jù)從RXD(P3.0)引腳輸入。當(dāng)檢測到負(fù)跳變的起始位時,則開始接收。接收時,定時控制信號有2種,一種是接收移位時鐘(RX時鐘),它的頻率和傳送的波特率相同。191.方

12、式1接收19 另一種是位檢測器采樣脈沖,頻率是RX時鐘的16倍,以波特率的16倍的速率采樣RXD引腳狀態(tài),當(dāng)采樣到RXD端從1到0的跳變時就啟動檢測器,接收的值是3次連續(xù)采樣(第7、8、9次)取其中2次相同的值,以確認(rèn)是否是真正的起始位的開始,這樣能較好地消除干擾引起的影響,以保證可靠無誤的開始接收數(shù)據(jù)。 當(dāng)確認(rèn)起始位有效時,開始接收1幀信息。接收每一位數(shù)據(jù)時,也都進(jìn)行3次連續(xù)采樣(第 7 、 8 、 9 個脈沖時采樣),接收的值是3次采樣中至少2次相同的值,以保證接收到的數(shù)據(jù)位的準(zhǔn)確性。20 另一種是位檢測器采樣脈沖,頻率是RX時鐘的16倍,以 當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時滿足以下兩個條

13、件,這次接收才真正有效。(1) RI=0 ,即上一幀數(shù)據(jù)接收完成時, RI=1發(fā)出的中斷請求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說明“接收SBUF”已空。(2) SM2=0或收到的停止位=1(方式1時,停止位已進(jìn)入RB8) ,則將接收到的數(shù)據(jù)裝入SBUF和RB8(RB8裝入停止位),且置1中斷標(biāo)志RI。 若這兩個條件不同時滿足,收到的數(shù)據(jù)不能裝入SBUF,這意味著該幀數(shù)據(jù)將丟失。21 當(dāng)一幀數(shù)據(jù)接收完畢以后,必須同時滿足以下兩個條件,這7.2.3 方式2 SM0、SM1兩位為10 時,串行口以方式2工作。方式2和方式3時,串行口被定義為9位異步通信接口。每幀數(shù)據(jù)均為11位,1位起始位0, 8位

14、數(shù)據(jù)位(先低位), 1位可程控為1或0的第9位數(shù)據(jù)和1位停止位1。227.2.3 方式2221.方式 2 發(fā)送 發(fā)送前,先根據(jù)通信協(xié)議由軟件設(shè)置TB8 (例如,雙機(jī)通信時的奇偶校驗位或多機(jī)通信時的地址數(shù)據(jù)的標(biāo)志位)。 然后將要發(fā)送的數(shù)據(jù)寫入 SBUF ,即可啟動發(fā)送過程。 串行口能自動把TB8取出,并裝入到第 9 位數(shù)據(jù)位的位置,再逐一發(fā)送出去。 發(fā)送完畢,則把 TI位置 1 。231.方式 2 發(fā)送23例 7-1 方式 2 發(fā)送在雙機(jī)通信中的應(yīng)用。 下面的發(fā)送中斷服務(wù)程序,是在雙機(jī)通信中,以TB8作為奇偶校驗位,處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的奇偶校驗位寫入 TB8(設(shè)第2組的工作

15、寄存器區(qū)的R0作為發(fā)送數(shù)據(jù)區(qū)地址指針)。 本程序采用奇偶校驗發(fā)送。 程序如下: 24例 7-1 方式 2 發(fā)送在雙機(jī)通信中的應(yīng)用。242.方式2接收 當(dāng)SCON的SM0、SM1兩位為10,且REN=1時,允許串行口以方式2接收數(shù)據(jù)。 接收時,數(shù)據(jù)由RXD端輸入,接收11位信息。當(dāng)位檢測邏輯采樣到RXD引腳從1到0的負(fù)跳變,并判斷起始位有效后,便開始接收1幀信息。 在接收完第9位數(shù)據(jù)后,需滿足以下2個條件才能將接收到的數(shù)據(jù)送入SBUF接收緩沖器。(1) RI=0 ,意味著接收緩沖器為空 (2) SM2=0或接收到的第9位數(shù)據(jù)位RB8=1 當(dāng)都滿足時,接收到的數(shù)據(jù)送入SBUF ,第9位數(shù)據(jù)送入RB

16、8,并置1 RI 。若不滿足這 2 個條件,接收的信息將被丟棄。252.方式2接收 在接收完第9位數(shù)據(jù)后,需滿足以下2個條例 7-2 方式 2 接收在雙機(jī)通信中的應(yīng)用。 本例與例7-1是相對應(yīng)的。若附加的第9位數(shù)據(jù)為校驗位,在接收程序中應(yīng)作奇偶校驗處理,可采用如下程序(設(shè)1組寄存器區(qū)的R0 為數(shù)據(jù)緩沖器指針)。 程序如下:26例 7-2 方式 2 接收在雙機(jī)通信中的應(yīng)用。267.2.4 方式3 SM0、SM1兩位為11 時,串行口以方式3工作。方式2和方式3時,串行口被定義為9位異步通信接口。除了波特率外,方式 3 和方式 2 相同。277.2.4 方式3277.4 波特率的制定方法 在串行通

17、信中,收發(fā)雙方發(fā)送或接收的波特率必須一致。通過軟件對MCS-51串行口可設(shè)定4種工作方式。其中方式0和方式2的波特率是固定的;方式1和方式3的波特率是可變的,由定時器T1的溢出率來確定(定時器T1的溢出率就是T1每秒溢出的次數(shù))。7.4.1 波特率的定義 串行口每秒鐘發(fā)送(或接收)的位數(shù)稱為波特率。設(shè)發(fā)送1位所需要的時間為 T ,則波特率為1/T。287.4 波特率的制定方法7.4.1 波特率的定義287.4.2 定時器T1產(chǎn)生波特率的計算 波特率和串行口的工作方式有關(guān):(1)方式0: 波特率固定為時鐘頻率fosc/12,且不受SMOD位的值的影響。(2)方式2: 波特率與 SMOD 位的值有關(guān)。若fosc=12MHz : SMOD=0, 波特率=187.5 kb/s ; SMOD=1, 波特率=375 kb / s 。297.4.2 定時器T1產(chǎn)生波特率的計算若fosc=12MHz7.4.2 定時器T1產(chǎn)生波特率的計算 波特率和串行口的工作方式有關(guān):(1)方式1或方式3 : 常用定時器T1作為波特率發(fā)生器,其關(guān)系式為, T1的溢出率和SMOD值共同決定波特率。 在實際設(shè)定波特率時,T1常設(shè)置為方式 2 定時(自動裝初值),即TL1作8位計數(shù)器,TH1存放備用初值。不僅可使操作方便,也可避免因軟件重裝初值而帶

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論