51單片機有一個全雙工串行通訊口,它即可作為UART(Universal Asynchronous Receiver/Transmitter),也可作為一個同步移位寄存器。而且作為UART時,其具有多機通訊能力。 51
單片機的
串行口由發(fā)送控制、接收控制、波特率輸入管理和發(fā)送/接收緩沖區(qū)SBUF(地址為99H)組成。SBUF作為發(fā)送和接收緩沖區(qū)其實際是分開的兩個器件,數據不會相互覆蓋,但在對其尋址時都是99H,51單片機會根據讀或者寫指令操作相應的器件。
站在匯編角度來看,51單片機的串行口通訊操作體現為累加器Acc(地址E0H)和發(fā)送/接收緩沖區(qū)SBUF之間的數據傳遞。當我們要發(fā)送數據時,對串行口完成初始化設置后,數據由累加器A傳入SBUF,然后在發(fā)送控制器的控制下組成幀結構,并自動從TXD端口發(fā)出,發(fā)送結束后置位TI(TI是特殊功能寄存器
SCON的可獨立尋址位,參見SCON介紹),如果要繼續(xù)發(fā)送就在指令中將TI清0。接收數據時,相當于對串口完成初始化設置后,數據由SBUF傳入累加器Acc,在置位允許位(即設置SCON的獨立尋址位REN為1)后才開始進行串行接收操作,在接收控制器控制下,通過移位寄存器將串行數據輸入SBUF,接收結束后將RI(SCON中可獨立尋址位)置位,最后將數據送累加器Acc。
特殊功能寄存器SCON是串行口控制寄存器,用于存放串行口的控制和狀態(tài)信息,其地址為98H,具有位尋址功能,其各位的結構如下圖所示:
其中各個位的功能及含義如下:
SM0、SM1:串行口工作方式選擇位,其組合含義如下圖所示:
SM2:多機通訊控制位。在方式2和方式3中用于多機通訊控制,在方式2、方式3的接收狀態(tài)中,若SM2=1,當接收到的第9位(同時系統(tǒng)將第9位值賦予RB8)為0時,舍棄接收到的數據,RI置0;若第9位為1時,將接收到的數據送入接收SBUF中,并將RI置1;而對于方式1,接收到有效的停止位時,將RI置1。對于方式0,SM2應該置0。
REN:允許接收位。REN置1時允許接收數據,REN由指令置位或者復位。
TB8:第9位發(fā)送的數據。多機通訊時(即方式2、方式3)TB8表示主機發(fā)送的是地址還是數據,TB8=0表示發(fā)送的是數據,TB8=1表示發(fā)送的是地址。TB8由指令置位或者復位。
RB8:第9位接收的數據。用來存儲接收到的第9位數據,用于標明接收到的數據特征或者用于校驗。對于方式0,不使用RB8。
TI:發(fā)送中斷標志,由硬件設置,由軟件清0。方式0串行發(fā)送完8位數據后置位,其它方式串行發(fā)送停止位后置位。
RI:接收中斷標志,由硬件設置,由軟件清0。方式0接收完8位數據后置位,其它方式接收到停止位時置位。
51單片機借用了PCON的D7位作為串行波特率系數SMOD控制位,PCON不可位尋址,其地址為87H,當SMOD=1時,波特率加倍。SMOD在PCON中的位置如下圖所示:
評論