微控制器串列埠通訊小結

2021-06-19 18:58:31 字數 3210 閱讀 2226

網上有很多講串列埠通訊的知識點,看了很多,今天就總結一下吧,歡迎拍磚!

1.資料傳輸

微控制器的序列通訊使用的是非同步序列通訊,所謂非同步就是指傳送端和接收端使用的不是同一時鐘。非同步序列通訊通常以字元(或者位元組)為單位 組成字元幀傳送。字元幀由傳送端一幀一幀的傳送,接收端通過傳輸線一幀一幀地接收。

一、字元幀的格式

字元幀由四部分組成,分別是起始位、資料位、奇偶校驗位、停止位。

1)起始位:位於字元幀的開頭,只佔一位,始終是邏輯低電平,表示傳送端開始傳送一幀資料。

2)資料位:緊跟在起始位後,可取5、6、7、8位,低位在前,高位在後。

3)奇偶校驗位:佔一位,用於對字串傳送做正確性檢查,因此奇偶校驗位是可選擇的,共有三種可能,即奇校驗、偶校驗和無校驗,由使用者根據需要確定。

4)停止位:末尾,為邏輯「1」高電平,可取1、1.5、2位,表示一幀字串送完畢。

非同步序列通訊的字元幀可以是連續的,也可以是斷續的。連續的非同步序列通訊,是在乙個字元格式的停止位之後立即傳送下乙個字元的起始位,開始乙個新的字元的傳送,即幀與幀之間是連續的。而斷續的非同步序列通訊,則是在一幀結束之後不一定接著傳送下乙個字元,不傳送時維持資料線的高電平狀態,使資料線處於空閒。其後,新的字元傳送可以在任何時候開始,並不要求整數倍的位時間。

2.mcs-51微控制器序列通訊的控制暫存器

2.1序列口控制暫存器(scon)

位位址9fh

9eh9dh

9ch9bh

9ah99h

98h位符號

sm0sm1

sm2ren

tb8rb8

tiri

各位說明如下:

1)sm0、sm1——序列口工作方式選擇位

其組合狀態和對應工作方式為:

sm0

sm1工作方式

方式0方式1

方式2方式3

2)sm2——允許方式2、3的多機通訊控制位

在方式2和3中,若sm2=1 且接收到的第九位資料(rb8)為1,才將接收到的前八位資料送入接收sbuf中,並置位ri產生中斷請求:否則丟棄前8位資料。若sm2=0,則不論第九位資料(rb8)為1 還是為0, 都將前八位 送入接收sbuf中,並產生中斷請求。

方式0時, sm2必須置為0。

3)ren——允許接受位

ren=0 禁止接收資料

ren=1 允許接收資料

4)tb8——傳送資料位8

在方式2、3中,tb8的內容是要傳送的第九位資料,其值由使用者通過軟體設定。

5)rb8——接收資料位8

在方式2、3中,rb8是接收的第九位資料。

在方式1時,rb8是接收的停止位。

在方式0時,不使用rb8

6)ti——傳送中斷標誌位

在方式0時,傳送完第八位資料後,該位由硬體置位。

在其他方式下,於傳送停止位之前,由硬體置位。

因此,ti=1表示幀傳送結束,其狀態即可供軟體查詢使用,也可請求中斷。

ti 由軟體置為「0」。

7)ri——接收中斷標誌位

在方式0時,接收完第八位資料後,該位有硬體置位。

在其他方式下,於接收到停止位之前,該位由硬體置位。

因此,ri=1表示幀接收結束,其狀態即可供軟體查詢使用,也可請求中斷。

ri由軟體請「0」。

2.2電源控制暫存器(pcon)

位序d7

d6d5

d4d3

d2d1

d0位符號

smod

gf1gf0

pdidl

與序列通訊有關的只有d7位(smod),該位為波特率倍增位,當smod=1時,序列口波特率增加一倍,當smod=0時,序列口波特率為特定值。當系統復位時,smod=0.

3.mcs-51微控制器序列通訊工作方式

序列口 的工作方式由sm0和sm1確定,編碼和功能如下表

sm0      sm1

方式功能說明

波特率0         0   

方式0    

移位暫存器方式 

fosc/12

0         1

方式18位uart

可變1         0

方式29位uart

fosc/64或fosc/32

1         1

方式39位uart

可變方式0和方式2 的波特率是固定的,而方式1和方式3 的波特率是可變的,有ti溢位率決定。

3.1序列工作方式0

序列口工作方式0時,序列口作同步移位暫存器使用。以rxd(p3.0)端作為資料的輸入和輸出端,而txd(p3.1)提供移位的時鐘脈衝。外接移位暫存器,實現資料並行輸入或輸出。工作方式0時,波特率為fosc/12,即乙個機器週期移位一次。

3.2串列埠工作方式1

方式1為10位為一幀的非同步序列通訊方式。其幀格式為1個起始位、8個資料位和1個停止位。工作在方式1時,其波特率是可變的,波特率的計算方式為:

波特率=2^(smod)/32*(定時器1的溢位率)

其中,smod為pcon暫存器最高位的值,其值為1或0.

當定時器1作為波特率發生器時,選用工作方式2(即自動載入定時初值方式)。選擇方式2可以避免通過程式反覆裝入定時初值所引起的定時誤差,使波特率更加穩定。假定計數初值為x,則計數溢位週期為:

溢位週期=12/fosc*(256-x)

溢位率為溢位週期的倒數。則波特率的計算公式為:

波特率=2^(smod)/32*(fosc)/(12*(256-x))

在實際使用中,波特率是已知的,因此需要根據波特率的計算公式求定時初值x。使用者只需要把定時初值設定到定時器1,就能得到所要求的波特率。

3.3序列工作方式2

方式2為11位為一幀的非同步序列通訊方式。其幀格式為1個起始位、9個資料位和1個停止位。在方式2下,字元還是8個資料位,只不過增加了乙個第9個資料位(d8),而且其功能由使用者確定,是乙個可程式設計位。方式2的接收過程也與方式1基本類似,所不同的只在第9資料位上,序列口把接收到的前8個資料位送入sbuf,而把第九資料位送入rb8。

方式2的波特率是固定的,而且有兩種,即fosc/32和fosc/64。當smod為0時,波特率為fosc/64,當smod為1的時候,波特率為fosc/32。

3.4序列工作方式3

方式3同方式2幾乎完全一樣,只不過方式3 的波特率是可變的,由使用者來決定。其波特率的確定方式同方式1。

微控制器串列埠通訊

微控制器串列埠通訊 通常的usb序列通訊方式為全雙工,即兩條資料線 rxd和txd,一條用於傳送資料,一條用於接收資料。在序列通訊前,需要對序列通訊進行配置。對於微控制器 ri為接受中斷標誌位,未通訊時ri 0 當電腦傳送第乙個位元組幀a0到微控制器時,sbuf a0,中斷標誌位ri 1,微控制器呼...

微控制器串列埠通訊

1 需求 實現電腦端控制微控制器開啟燈光風扇,顯示微控制器傳遞過來的資料 如溫度 濕度等 2 工具 平台軟體 驅動人生 vs2012 keil4 3 下面就開始吧 4 檢視我們當前的通訊埠號 如圖 然後確定我們微控制器的晶振,我是用的是11.0592m的 即9600 差不多我們就可以開始我們的開發了...

微控制器串列埠通訊

1 每隔1秒鐘,a向b通過串列埠傳送乙個位元組c num 該位元組按照0x00 0x09迴圈,例如某一時刻傳送c num 0x 3 2 b接收到資料後,做9 c num的計算,並將計算結果通過串列埠傳送給a微控制器。例如b接收到0x03,則b要通過串列埠返回0x09 0x03 0x06給微控制器a ...