方式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的溢位率決定。序列口的四種工作方式對應著三種波特率。由於輸人的移位時鐘的 不同,所...