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





