AT89S51單片機串行口的內部結構如下圖所示。它有兩個物理上獨立的接收、發送緩沖器SBUF(屬于特殊功能寄存器),可同時發送、接收數據。發送緩沖器只能寫入不能讀出,接收緩沖器只能讀出不能寫入,兩個緩沖器共用一個特殊功能寄存器字節地址(99H)。
串行口的控制寄存器共有兩個:特殊功能寄存器SCON和PCON。下面介紹這兩個特殊功能寄存器各位的功能。
1、串行口控制寄存器SCON
串行口控制寄存器SCON,字節地址988H,可位尋址,位地址為98H~9FH。SCON的格式如下圖所示。
下面介紹SCON中各位的功能。
(1) SM0、SMl:串行口4種工作方式選擇位。
SM0、SM1兩位的編碼所對應的4種工作方式見下表。
表 串行口的4種工作方式
(2) SM2:多機通信控制位。
因為多機通信是在方式2和方式3下進行的,因此SM2位主要用于方式2或方式3中。當串行口以方式2或方式3接收時,如果SM2=1,則只有當接收到的第9位數據(RB8)為1時,才使RI置l,產生中斷請求,并將接收到的前8位數據送人SBUF;當接收到的第9位數據(RB8)為0時,則將接收到的前8位數據丟棄。而當SM2=0時,則不論第9位數據是l還是0,都將前8位數據送入SBUF中,并使RI置1,產生中斷請求。
在方式1時,如果SM2=1,則只有收到有效的停止位時才會激活RI。
在方式0時,SM2必須為0。
(3)REN:允許串行接收位。
由軟件置1或清0。
REN=1,允許串行口接收數據。
REN=O,禁止串行口接收數據。
(4)TB8:發送的第9位數據。
在方式2和方式3時,TB8是要發送的第9位數據,其值由軟件置l或清O。在雙機串行通信時,TB8一般作為奇偶校驗位使用;在多機串行通信中用來表示主機發送的是地址幀還是數據幀,TB8=1為地址幀,TB8=0為數據幀。
(5) RB8:接收的第9位數據。
工作在方式2和方式3時,RB8存放接收到的第9位數據。在方式1,如果SM2=0,RB8是接收到的停止位。在方式0,不使用RB8。
(6)TI:發送中斷標志位。
串行口工作在方式0時,串行發送的第8位數據結束時TI由硬件置1,在其他工作方式中,串行口發送停止位的開始時置TI為1。TI=1,表示一幀數據發送結束。TI位的狀態可供軟件查詢,也可申請中斷。CPU響應中斷后,在中斷服務程序中向SBUF寫入要發送的下一幀數據。TI必須由軟件清0。
(7) RI:接收中斷標志位。
串行口工作在方式0時,接收完第8位數據時,RI由硬件置1。在其他工作方式中,串行接收到停止位時,該位置l。RI=1,表示一幀數據接收完畢,并申請中斷,要求CPU從接收SBUF取走數據。該位的狀態也可供軟件查詢。RI必須由軟件清0。
SCON的所有位都可進行位操作清0或置1。
2、特殊功能寄存器PCON
特殊功能寄存器PCON字節地址為87H,不能位尋址。PCON的格式如下圖所示。
下面介紹PCON中各個位的功能。其中,僅僅是最高位SMOD與串行口有關。
SMOD位:波特率選擇位。
例如,方式1的波特率計算公式為
當SMOD=1時,要比SMOD=O時的波特率加倍,所以也稱SMOD位為波特率倍增位。
評論
查看更多