AT89S52單片機的串行接口
本文主要學習AT89S52單片機的串行接口結構以及相關的寄存器。要求在掌握串行口結構的基礎上,學會合理的設置控制寄存器來控制串行口的工作。AT89S52單片機內(nèi)部的串行接口能同時發(fā)送和接收數(shù)據(jù)。發(fā)送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入。串行口還有接收緩沖作用,即從接收寄存器中讀出前一個已收到的字節(jié)之前就能開始接收第二字節(jié)。
一、AT89S52單片機串行口的結構
AT89S52單片機的串行接口主要由兩個物理上獨立的串行數(shù)據(jù)緩沖器SBUF、發(fā)送控制器、接收控制器、輸入移位寄存器和輸出控制門組成。
對外表現(xiàn)為兩個引腳:RXD(P3.0)串行輸入線和TXD(P3.1)串行輸出線,串行口的結構如圖1所示。
圖1 串行口的結構
1.波特率發(fā)生器
主要由T1、T2及內(nèi)部的一些控制開關和分頻器所組成。它提供串行口的時鐘信號TXCLOCK(發(fā)送時鐘)和 RXCLOCK(接收時鐘)。相應的控制波特率發(fā)生器的特殊功能寄存器有TMOD、TCON、T2CON、PCON、TL1、TH1、TL2、TH2等。
2.串行數(shù)據(jù)緩沖寄存器SBUF
串行口數(shù)據(jù)緩沖器(實際上是兩個寄存器)通過特殊功能寄存器SBUF來訪問。兩個緩沖器在物理上是隔離的,共用一個地址99H(特殊功能寄存器SBUF的地址)。
寫入SBUF的數(shù)據(jù)儲存在發(fā)送緩沖器,用于串行發(fā)送;從SBUF讀出的數(shù)據(jù)來自接收緩沖器。串行發(fā)送時,從片內(nèi)總線向發(fā)送緩沖器SBUF寫入數(shù)據(jù);串行接收時,從接收緩沖器SBUF中讀出數(shù)據(jù)。因此可通過兩條指令來表示:
MOV SBUF, A ; 啟動一次數(shù)據(jù)發(fā)送,可向SBUF再發(fā)送下一個數(shù)據(jù)
MOV A, SBUF ; 完成一次數(shù)據(jù)接收,SBUF可再接收下一個數(shù)據(jù)
3.串行數(shù)據(jù)輸入/輸出引腳
接收方式:串行數(shù)據(jù)從RXD(P3.0)引腳輸入
發(fā)送方式下:串行數(shù)據(jù)通過TXD(P3.1)引腳輸出。
4.串行口控制邏輯
發(fā)送控制器在波特率作用下,將發(fā)送SBUF中的數(shù)據(jù)由并行轉換成串行,逐位地傳輸?shù)桨l(fā)送端口;同理接收控制器將接收端口的數(shù)據(jù)由串行轉換成并行,存入接收SBUF。如圖2。
圖2 串行口的控制邏輯 二、串行口控制寄存器SCON
特殊功能寄存器SCON可以位尋址,用于定義串行口的操作方式和控制它的某些功能,字節(jié)地址為98H。其各位的定義如圖3所示。
圖3 SCON
SM0,SM1(D7,D6):串行口操作方式選擇位
SM2(D5):串行口多機通信控制位。
SM2=1:如果接收的一幀數(shù)據(jù)的第九位為1,且原RI=0,則硬件置RI=1,接收數(shù)據(jù)有效;如果第九位為0,則RI不置1,接收數(shù)據(jù)無效。
SM2=0:只要接收完一幀數(shù)據(jù),不管第九位為1還是0,硬件都置RI=1,接收數(shù)據(jù)有效。多機通信時,SM2必須置1;雙機通信,SM2通常置0。
REN(D4):串行口接收允許控制位。REN = 1 表示允許接收;REN = 0 禁止接收。
TB8(D3):方式2和方式3中要發(fā)送的第9位數(shù)據(jù)。
RB8(D2):是方式2和3中已接收到的第9位數(shù)據(jù)。
TI(D1):發(fā)送中斷標志。由軟件清0。
RI(D0):接收中斷標志。由軟件清0。
三、電源控制寄存器PCON
電源控制寄存器PCON中,僅有最高位SMOD與串行口控制有關,PCON的地址為87H,只能字節(jié)尋址。
SMOD(D7):波特率加倍控制位。
SMOD=1,波特率加倍;
SMOD=0,則不加倍。
編輯:admin 最后修改時間:2018-05-08