串行口的方式1為雙機(jī)串行通信方式,如右圖所示。
當(dāng)SM0、SM1兩位為01時(shí),串行口設(shè)置為方式1的雙機(jī)串行通信。TXD腳和RXD腳分別用于發(fā)送和接收數(shù)據(jù)。
方式1收發(fā)一幀的數(shù)據(jù)為10位,1個(gè)起始位(0),8個(gè)數(shù)據(jù)位,1個(gè)停止位(1),先發(fā)送或接收最低位。方式1的幀格式如下圖所示。
方式1時(shí),串行口為波特率可變的8位異步通信接口。方式1的波特率由下式確定
式中,SMOD為PCON寄存器最高位的值(0或1)。
1.方式1發(fā)送
串行口以方式1輸出時(shí),數(shù)據(jù)位由TXD端輸出,發(fā)送一幀信息為10位,1位起始位0,8位數(shù)據(jù)位(先低位)和1位停止位1,當(dāng)CPU執(zhí)行一條數(shù)據(jù)寫(xiě)發(fā)送緩沖器SBUF的指令(MOVSBUF,A),就啟動(dòng)發(fā)送。方式1發(fā)送時(shí)序如下圖所示。
下圖中,TX時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開(kāi)始時(shí),內(nèi)部發(fā)送控制信號(hào)SEND變?yōu)橛行В瑢⑵鹗嘉幌騎XD引腳(P3.0)輸出,此后每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD引腳輸出一個(gè)數(shù)據(jù)位。8位數(shù)據(jù)位全部發(fā)送完畢后,中斷標(biāo)志位TI置1,然后SEND(的反)失效。
2.方式1接收
串行口以方式1(SM0、SM1=01)接收時(shí)(REN=1),數(shù)據(jù)從RXD(P3.1)引腳輸入。當(dāng)檢測(cè)到起始位的負(fù)跳變時(shí),則開(kāi)始接收。方式1的接收時(shí)序如下圖所示。
接收時(shí),定時(shí)控制信號(hào)有兩種(如下圖所示),一種是接收移位時(shí)鐘(RX時(shí)鐘),它的頻率和傳送的波特率相同;另一種是位檢測(cè)器采樣脈沖,它的頻率是RX時(shí)鐘的16倍。也就是在1位數(shù)據(jù)期間,有16個(gè)采樣脈沖,以波特率的16倍速率采樣RXD引腳狀態(tài)。當(dāng)采樣到RXD端從1到0的負(fù)跳變時(shí)就啟動(dòng)檢測(cè)器,接收的值是3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣)取其中兩次相同的值,以確認(rèn)是否是真正的起始位(負(fù)跳變)的開(kāi)始,這樣能較好地消除干擾引起的影響,以保證可靠無(wú)誤地開(kāi)始接收數(shù)據(jù)。
當(dāng)確認(rèn)起始位有效時(shí),開(kāi)始接收一幀信息。接收每一位數(shù)據(jù)時(shí),也都進(jìn)行3次連續(xù)采樣(第7、8、9個(gè)脈沖時(shí)采樣),接收的值是3次采樣中至少兩次相同的值,以保證接收到的數(shù)據(jù)位的準(zhǔn)確性。當(dāng)一幀數(shù)據(jù)接收完畢后,必須同時(shí)滿足以下兩個(gè)條件,這次接收才真正有效。
(1)RI=0,即上一幀數(shù)據(jù)接收完成時(shí),RI=1發(fā)出的中斷請(qǐng)求已被響應(yīng),SBUF中的數(shù)據(jù)已被取走,說(shuō)明“接收SBUF”已空。
(2) SM2=0或收到的停止位=1(方式1時(shí),停止位已進(jìn)入RB8),則將接收到的數(shù)據(jù)裝入SBUF和RB8(裝入的是停止位),且中斷標(biāo)志RI置1。
若不同時(shí)滿足這兩個(gè)條件,收到的數(shù)據(jù)不能裝入SBUF,這意味著該幀數(shù)據(jù)將丟失。