串行口工作于方式2和方式3時,被定義為9位異步通信接口。每幀數(shù)據(jù)均為11位,1位起始位0,8位數(shù)據(jù)位(先低位),1位可程控為1或0的第9位數(shù)據(jù)和1位停止位。方式2、方式3的幀格式如下圖所示。
方式2的波特率由下式確定
1.方式2發(fā)送
發(fā)送前,先根據(jù)通信協(xié)議由軟件設置TB8(如雙機通信時的奇偶校驗位或多機通信時的地址/數(shù)據(jù)的標志位),然后將要發(fā)送的數(shù)據(jù)寫入SBUF,即可啟動發(fā)送過程。串行口能自動把TB8取出,并裝入到第9位數(shù)據(jù)位的位置,再逐一發(fā)送出去。發(fā)送完畢,則使TI位置1。
串行口方式2和方式3發(fā)送時序如下圖所示。
例1:方式2發(fā)送在雙機串行通信中的應用。
下面的發(fā)送中斷服務程序是在雙機串行通信中,以TB8作為奇偶校驗位,本程序采用偶校驗發(fā)送。處理方法為數(shù)據(jù)寫入SBUF之前,先將數(shù)據(jù)的偶校驗位寫入TB8(設第2組的工作寄存器區(qū)的RO為發(fā)送數(shù)據(jù)區(qū)地址指針)。
2.方式2接收
當串行口的SCON寄存器的SMO、SM1兩位為10,且REN=1時,允許串行口以方式2接收數(shù)據(jù)。接收時,數(shù)據(jù)由RXD端輸入,接收11位信息。當位檢測邏輯采樣到RXD引腳從1到O的負跳變,并判斷起始位有效后,便開始接收一幀信息。在接收完第9位數(shù)據(jù)后,需滿足以下兩個條件,才能將接收到的數(shù)據(jù)送入SBUF(接收緩沖器)。
(1)RI=0,意味著接收緩沖器為空。
(2)SM2=0或接收到的第9位數(shù)據(jù)位RB8=1。
當滿足上述兩個條件時,接收到的數(shù)據(jù)送入SBUF(接收緩沖器),第9位數(shù)據(jù)送入RB8,且RI置1。若不滿足這兩個條件,接收的信息將被丟棄。
串行口方式2和方式3接收時序如下圖所示。
例2:方式2接收在雙機通信中的應用。
本例對例1發(fā)送的數(shù)據(jù)進行偶校驗接收,程序如下(設1組寄存器區(qū)的RO為數(shù)據(jù)緩沖區(qū)指針)。
方式3
當SM0、SM1兩位為11時,串行口被定義工作在方式3。方式3為波特率可變的9位異步通信方式,除了波特率外,方式3和方式2相同。
方式3的波特率由下式確定