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