單片機串行通信控制寄存器的使用
1.功能MCS-5l單片機中的異步通信串行口能方便地與其他計算機或串行傳送信息的外圍設備(如串行打印機、CRT終端等)實現雙機、多機通信。
串行口有四種工作方式,如表所示:
SM0 | SM1 | 工作方式 | 功能 | 波特率 |
0 | 0 | 方式0 | 移位寄存器方式,用于并行I/O擴展 | fosc/12 |
0 | 1 | 方式1 | 8 位通用異步接收器/發送器 | 可變 |
1 | 0 | 方式2 | 9 位通用異步接收器/發送器 | fosc/1 或 fosc/24 |
1 | 1 | 方式3 | 9 位通用異步接收器/發送器 | 可變 |
2.結構
由發送數據緩沖器、發送控制器、輸出控制門、接收數據緩沖器、接收控制器、輸入移位寄存器等組成。發送數據緩沖器只能寫入,不能讀出,接收數據緩沖器只能讀出,不能寫入,二者共用一個符號 — 特殊功能寄存器 SBUF,共用一個地址 — 99H。串行口中還有兩個特殊功能寄存器SCON、PCON,分別用來控制串行口的工作方式和波特率。波特率發生器由定時器/計數器1構成。
3.串行口控制寄存器SCON
串行口控制寄存器SCON的格式如下:

。╨)工作方式選擇位SMO、SM1:SMO、SM1由軟件置 “1” 或清 “0” ,用于選擇串行口的 4種工作方式。
(2)多機通信控制位SM2:SM2=“1” 時,接收到一幀信息,如果接收到的第 9位數據為1,硬件將RI置“1” ,申請中斷;如果第九位數據為“0” ,則 RI不置“1” ,且所接收的數據無效。
SM2=“0” 時,只要接收到一幀信息,不管第九位數據是0還是1,硬件都置RI =“1”,并申請中斷。RI由軟件清“0”,SM2由軟件置“1”或清“0”。
多機通信時,各從機先將SM2置“l”。接收并識別主機發來的地址,當地址與本機相同時,將 SM2清“0”,與主機進行數據傳遞。各機所發送的數據第 9位必須為“0”。
。3)允許接收控制位REN:REN=“1” 時允許并啟動接收,REN =“0”時禁止接收。REN由軟件置“1”或清“0”。
(4)發送數據D8位TB8:TB8是方式2、方式3中要發送的第九位數據,事先用軟件寫入1或0。方式0、方式1不用。
。5)接收數據D8位RB8:方式2、方式3中,由硬件將接收到的第九位數據存入RB8。方式1中,停止位存入RB8。
(6)發送中斷標志位TI:發送完一幀信息,由硬件使TI置“1”, TI必須由軟件清“0”。
(7)接收中斷標志位RI:接收完一幀有效信息,由硬件使RI置“1”, RI必須由軟件清“0” 。
4.串行口數據寄存器 SBUF
串行口數據寄存器SBUF由串行輸出移位寄存器和兩級緩沖的串行輸入寄存器組成。當數據寫入SBUF時啟動串行數據發送,連同此前置入的TB8,按設定波特率串行輸出。串行數據移入串行輸入寄存器完成后,自動將數據并行送入接收SBUF,并置“1”通知 CPU讀取數據,CPU應該在下一個串行數據接收完成之前讀出。
5.串行口的工作方式
。1)方式0:同步移位寄存器方式
波特率固定為fosc/12
RXD —— 接收發送數據
TXD —— 產生同步移位脈沖
接收/發送完,置位RI/TI ,(要求SM2 = 0)
。2)方式1:8位UART
波特率為(2 SMOD×T1的溢出率)/32 ,可變。
一幀信息10位。
接收到有效數據完畢,置位RI的條件:
REN = 1,RI = 0 且SM2 = 0或接收到第9位數據為1,此時,數據裝載SBUF,RI置1,第9位數據(TB8) RB8。
6.多機通信
多機通信系統有1個主機與多個從機,從機數最多256個,地址編為00H至0FFH。距離近,可直接以TTL電平通信,距離遠可轉換RS485標準進行通信。為了區分是數據信息還是地址信息,主機用第9位數據TB8作為地址/數據的識別位,地址幀的TB8 =“1” ,數據幀的 TB8 =“0”。各從機的 SM2必須置“1”。在主機與某一從機通信前,先將該從機的地址發送給各從機。由于各從機SM2=“1”,接收到的地址幀 RB8=“1”,所以各從機的接收信息都有效,送入各自的接收緩沖器,并置RI=“1” 。各從機 CPU響應中斷后,通過軟件判斷主機送來的是不是本從機地址,如是本從機地址,就使SM2=“0”,否則保持 SM2 =“l”。
7.波特率
串行口每秒鐘發送或接收的數據位數稱為波特率。 假設發送一位數據所需時間為T, 則波特率為 1/T。
(1) 模式0 的波特率等于單片機晶振頻率的 1/12, 即每個機器周期接收或發送一位數據。
(2) 模式2的波特率與電源控制器PCON的最高位SMOD的寫入值有關:即SMOD=0, 波特率為(1/64) f OSC ; SMOD=1, 波特率為(1/32)f OSC 。
(3) 模式 1 和模式 3 的波特率除了與SMOD位有關之外, 還與定時器 T1 的溢出率有關。 定時器 T1 作為波特率發生器, 常選用定時方式 2(8位重裝載初值方式), 并且禁止 T1 中斷。此時 TH1 從初值計數到產生溢出, 它每秒鐘溢出的次數稱為溢出率。 于是


編輯:admin 最后修改時間:2018-05-08


