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