C51微控制器 波特率選擇 和 串列埠的工作方式

2021-06-20 13:10:45 字數 2788 閱讀 3371

方式0:8位同步移位暫存器方式

方式1:10位通用非同步通訊

方式2:11位非同步通訊

方式3:可變波特率11位非同步通訊。

方式0:同步移位暫存器方式,波特率固定為fosc/12.

由rxd(p3.0)引腳輸入和輸出資料,由txd(p3.1)引腳輸出同步移位時鐘。

傳送:當執行一條寫sbuf的指令(mov sbuf ,a)時,就啟動序列資料的傳送。

接收:當滿足ren=1(允許接受)且接收中斷標誌ri=0是,就會啟動一次接受過程。

方式1:10位通用非同步通訊

一幀資訊為10位:1位為起始位(0),8位資料位,1位停止位(1)

txd(p3.1)是傳送端。rxd(p3.2)是接收端。

採用t1作為序列口接收和傳送的波特率發生器,資料傳輸波特率可調,由t1的溢位決定,可用程式設定。

ti:傳送中斷標誌

方式0中,在傳送第8位末尾置位;其它方式中,在傳送停止位開始時設定。ti=1表示傳送幀結束。由硬體置位,用

軟體清零。必須清零,因為如果ti始終等於1,則表示傳送幀結束,也就不會再傳送幀 。(ti=1表示一直處於中斷狀態,也就無法傳送了,所以要清零)

ri:接收中斷標誌

方式0中,在接收第8位末尾置位;其他方式中,在接收停止位中間設定,ri=1表示幀接收結束。由硬體置位,用軟體清除。(ri=1表示一直處於中斷狀態,也就無法接受了,所以要清零。)

ti和ri是同乙個中斷源,兩者共用乙個中斷向量。cpu事先不知道是傳送中斷ti還是接收中斷ri產生的中斷請求,所以在全雙工通訊時,必須由軟體來判別。

ren:允許接收位

ren=0,禁止接收;ren=1,允許接受。軟體設定。

tb8:方式2和方式3中要傳送的第9位資料。在通訊協議中,常規定tb8為奇偶校驗位。在8051多機通訊中,

rb8:方式2和方式3中接受到的第9位資料。

方式1中接收到的是停止位。方式0中不使用這一位

波特率選擇

在序列通訊中,收發雙方的資料傳送率(波特率)要有一定的約定。在8051序列口的四種工作方式中,方式0和2的波特率是固定的,而方式1和3的波特率是可變的,由定時器t1的溢位率控制。

方式0

方式0的波特率固定為主振頻率的1/12。

方式2

方式2的波特率由pcon中的選擇位smod來決定,可由下式表示:

波特率=2的smod次方除以64再乘乙個fosc,也就是當smod=1時,波特率為1/32fosc,當smod=0時,波特率為1/64fosc

方式1和方式3

定時器t1作為波特率發生器,其公式如下:

波特率=

t1溢位率= t1計數率/產生溢位所需的週期數

式中t1計數率取決於它工作在定時器狀態還是計數器狀態。當工作於定時器狀態時,t1計數率為fosc/12;當工作於計數器狀態時,t1計數率為外部輸入頻率,此頻率應小於fosc/24。產生溢位所需週期與定時器t1的工作方式、t1的預置值有關。

定時器t1工作於方式0:溢位所需週期數=8192-x

定時器t1工作於方式1:溢位所需週期數=65536-x

定時器t1工作於方式2:溢位所需週期數=256-x

因為方式2為自動重裝入初值的8位定時器/計數器模式,所以用它來做波特率發生器最恰當。

當時鐘頻率選用11.0592mhz時,取易獲得標準的波特率,所以很多微控制器系統選用這個看起來「怪」的晶振就是這個道理。

下表列出了定時器t1工作於方式2常用波特率及初值。

常用波特率 fosc(mhz) smod th1初值

19200

11.0592

1 fdh

9600

11.0592

0 fdh

4800

11.0592

0 fah

2400

11.0592

0 f4h

1200

11.0592

0 e8h

例如9600 11.0592 0 fdh

波特率=

t1溢位率= t1計數率/產生溢位所需的週期數

產生溢位所需的週期數=256-fd(253)=3

smod=0 11059200/12*3 *1/32=9600

波特率計算

在序列通訊中,收發雙方對傳送或接收的資料速率要有一定的約定,我們通過軟體對mcs—51序列口程式設計可約定四種工作方式。其中,方式0和方式2的波特率是固定的,而方式1和方式3的波特率是可變的,由定時器t1的溢位率決定。

序列口的四種工作方式對應著三種波特率。由於輸人的移位時鐘的**不同,所以,各種方式的波特率計算公式也不同。

一、方式0的波特率

方式0時,移位時鐘脈衝由56(即第6個狀態週期,第12個節拍)給出,即每個機器週期產生乙個移位時鐘,傳送或接收一位資料。所以,波特率為振盪頻率的十二分之一,並不受 pcon暫存器中smod的影響,即:

方式0的波特率=fosc/12

三、方式l和方式3的波特率

系統晶振頻率選為11.0592mhz就是為了使初值為整數,從而產生精確的波特率。

如果序列通訊選用很低的波特率,可將定時器tl置於工作方式0或工作方式1,但在

這種情況下,t1溢位時,需用中斷服務程式重灌初值。中斷響應時間和執行指令時間會使波特率產生一定的誤差,可用改變初值的辦法加以調整。

表6—2列出了各種常用的波特率及其初值。

51微控制器的波特率

最近使用51微控制器的時候,設定串列埠的波特率,需要多種,固先記下來,晶振更改的時候可以通過excel中的改動來調整 excel在126中email的網盤中 51微控制器的波特率.et 下面列表是基於定時器2的方式2,自動重灌的方式 晶振 11.0592 11059200 波特率暫存器的值 1200...

微控制器串列埠通訊波特率計算

在模式0和模式2下,串列埠波特率固定,模式0為fosc 12。模式2為fosc 32或fosc 64,具體由pcon暫存器的smod位決定。在模式1和模式3下,波特率是乙個可變值,波特率可以由定時器1產生 8052可以由定時2產生 那麼波特率到底為多少呢?波特率由定時器1的溢位率來決定 baud r...

微控制器 波特率設定

在序列通訊中 收發雙方對傳送或接收的資料速率要有一定的約定,我們通過軟體對 mcs 51 序列口程式設計可約定四種工作方式。其中,方式 0和方式 2的波特率是固定的,而方式 1和方式 3的波特率是可變的,由定時器 t1的溢位率決定。序列口的四種工作方式對應著三種波特率。由於輸人的移位時鐘的 不同,所...