⑴ 單片機要實現多機通信,那個RB8和TB8是怎麼變化的
------
主機:
設置為SM2=0。
這是雙機通信的形式,可以任意的發送和接收
發送:
以TB8=1發送,將發送到所有SM2=1的分機。這是呼叫某個從機。
以TB8=0發送,將發送到SM2=0的分機。這是雙機通信的形式。
------
從機:
先設置為SM2=1。
這是多機通信的形式,只能收到RB8=1的。
接收:
僅能收到RB8=1的數據,確認是呼叫本機時,令SM2=0。
設置為SM2=0後,是雙機通信的形式。
⑵ 51單片機串口方式2中的TB8到底是用來奇偶校驗還是定義地址/數據的
看書要仔細,書上的說法沒有錯。
TB8:工作方式2和方式3時,為發送的第9位數據,也可以當做奇偶校驗位。
(跟地址/數據沒有關系)
SM2:多機通信控制位(方式2和方式3)
SM2=1:只有接收到第9位(RB8=1)時,RI才置位。(如果RB8=0,RI就會等於0,就不能進入接收中斷,自然丟失信息了。)
SM2=0:接收到單個位元組,RI就置位。(單機通信方式)
而且這里說的奇偶校驗是TB8,SM2=1時考慮的是RB8,這兩個分別是不同的位,功能又不沖突。
串口通信最基本的控制寄存器SCON,書上的描述都很簡潔,不能跳著看,要對比著一條一條理解。掌握了控制寄存器各個位的作用,串口通信也就基本了解了。
⑶ 單片機狀態控制寄存器SCON中的TB8有什麼用
TB8:第9位發送的數據,多機通信時(方式2、方式3)TB8標明主機發送的是地址還是數據,TB8=0為數據,TB8=1為地址。TB8由指令置位或復位。
方式2和方式3用於多機通信,方式1和方式0用於點對點的通信,因為方式2和方式3中每幀數據有第9位,在通信時候,主機先發送一個地址信息給從機,從機接收到地址信息然後和自己的地址對比,地址相同則認為主機要同自己通信,
就是當串列口工作在方式2,和方式3時候,每幀數據一共有9位,前面8位為發送的數據位,最後面第9位標明的是發送過來的數據是發送的地址信息還是發送的數據信息,當發送的為地址信息的時候寫程序的時候將TB8置1,當發送的數據為數據信息的時候將TB8置0.就是用第9位來讓單片機識別發送的信息類型。
這是我個人的理解,比較通俗,別見笑!
⑷ 單片機奇偶校驗
通常,串列通信的一幀的格式是8-n-1,即8位數據、無校驗、1個停止位。
有時為了提高准確度,需要增加一個「奇」校驗位或者「偶」校驗位。
對於高級語言的做法是很簡單的,只要把格式命令「8-n-1」,改為「8-P-1」或「8-O-1」即可。
串列口在帶有校驗位的通信方式中,是先發送8位數據,然後再發送校驗位。
51單片機也可以按照帶有校驗位的方式進行串列通信,這在51單片機中稱為9位數據方式。
51單片機中有兩個位,分別稱為TB8和RB8,它們在「無校驗」的時候,並沒有用處。
當51單片機用9位數據方式進行串列通信的時候,TB8和RB8的作用如下:
51單片機在發送的時候,先發送8位數據,然後發送TB8中的內容;
51單片機在接收的時候,先接收8位數據,然後接收校驗位,存到RB8中。
編寫51單片機程序的時候,應該在發送數據之前,在TB8中,寫好待發送的校驗位。
8位數據的校驗位,可以利用單片機中奇偶標志位P來自動生成,程序如下。
MOV A, #待發數據 ;數據進了A,即刻生成奇偶標志位P
MOV C, P
MOV TB8, C ;校驗位送到TB8
MOV SBUF, A ;發送數據,以及P
由於P = 1則說明A中有奇數個1,所以上述程序是「偶」校驗的形式。
如果要求的是「奇」校驗,則需要增加一條取反指令,如下:
MOV C, P
CPL C
MOV TB8, C ;校驗位送到TB8
接收方會把收到的8位數送到SBUF,第9位數,送到RB8,然後自動設立RI = 1。
之後,就可以用RB8中的內容,對剛才收到的8位數進行正確性檢驗。
另一個問題:51單片機如何初始化成8-n-1(8數據位,無奇偶校驗位,1停止位)波特率,是用串口的模式幾?
本來想用串口的模式1,可是仔細一看,模式1是10非同步通信方式,1起始位,8數據位,1停止位?
懸賞分:20 - 解決時間:2009-12-1 13:26
問題補充:首先感謝一樓的回答。我還有些疑問,剛才用示波器看了下,當發送0xFF時,示波器顯示一位低電平,其餘為高電平,這點應該是對的,因為起始位是0.可是為什麼發送0xAA時,示波器的(起始位+數據位+停止位)序列是:0 + 0101 0101 + 1,而0x55的序列為:0 +1010 1010 + 1,這兩個值好像不對,是相反了,要是調一下剛好對?
;-----------------------------------------------------------------
最佳答案用串口的模式1,是10位非同步通信方式。
1起始位,8數據位,1停止位,沒有奇偶校驗位。
這種模式就是:8-n-1(8數據位,無奇偶校驗位,1停止位)的模式。
完全符合你的要求。
⑸ 8051單片機中scon的sm2 tb8 rb8有何作用
SM2,TB8,RB8涉及的是串列通信
SM2:多機通信時的接收允許標志位
TB8,RB8:當串口工作於方式2或3 時使用到,指向的是串列傳輸的第9位數據;
1)SM2=0,在方式2或3下,TB8、RB8 發送與接收第9位奇偶校驗位;
2)SM2=1,多機通信時的接收允許位,並且在方式2或3下工作;
下面給你個參考;
簡述多機通訊過程中SM2、TB8和RB8的作用。
答:整個系統只有一台主機,其餘為從機,每台從機都有一個唯一的地址編號;
(1)所有從機 SM2=1;
(2)主機欲和某台從機通信,就將該從機編號作為地址幀信息發送,設置TB8位為1,表示發送地址幀;
(3)所有從機通過RB8位判斷收到地址幀後(在RB8=1 時並使RI=1 產生中斷請求),進行中斷處理,把接收到的地址和自己的地址編號進行比較,若相等,就使 SM2=0,准備接收主機發送的數據信息,如果不相等,仍維持 SM2=1;
(4)被主機點名的從機已經置SM2=0,可以接收主機隨後發送的TB8=0的數據信息,其他從機則不能接收;
(5)通信完畢,該從機恢復 SM2=1;