<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>

新聞中心

EEPW首頁(yè) > 嵌入式系統 > 設計應用 > 51手記之標準51(四)

51手記之標準51(四)

作者: 時(shí)間:2016-11-10 來(lái)源:網(wǎng)絡(luò ) 收藏
51手記標準51---串行口

1.串行通信基本方式:異步通信和同步通信

本文引用地址:http://dyxdggzs.com/article/201611/317147.htm

1).異步通信方式——以“字符”為單位進(jìn)行傳送

用一幀表示一個(gè)字符,一個(gè)字符包括4個(gè)部分

起始位1位有效

數據位5--8位

奇偶校驗位1位

停止位1位、1位半、2位“1”有效

在異步通信時(shí),通信雙方必須事先約定

①字符格式。雙方要事先約定數據位的位數、奇偶校驗形式及起始位和停止位的位數;

例如:用ASCⅡ碼通信,有效數據為7位,加一個(gè)奇偶校驗位、一個(gè)起始位和一個(gè)停止位共10位。當然停止位也可以大于1位。

②波特率(Baud rate)。波特率就是傳送速率,即每秒傳送的二進(jìn)制位數。單位為bit/s或波特。

2).同步通信方式

異步通信由于要在每個(gè)數據前后附加起始位、停止位,每發(fā)送一個(gè)字符約有20%的附加數據,占用了傳輸時(shí)間,降低了傳送效率

同步通信則去掉每個(gè)數據的起始位和停止位,把要發(fā)送的數據按順序連接成一個(gè)數據塊,在數據塊的開(kāi)頭附加1~2個(gè)同步字符,

在數據塊的末尾加差錯校驗字符。同步通信的數據格式如圖7-2所示。在數據塊內部,數據與數據之間沒(méi)有間隙。

要求:發(fā)送和接收雙方要保持完全同步,所以,要求發(fā)送和接收設備必須使用同一時(shí)鐘。

解決辦法:

對于近距離通信:采用在傳輸線(xiàn)中增加一根時(shí)鐘信號線(xiàn)來(lái)解決。

對于遠距離通信:通過(guò)解調器從數據流中提取同步信號,用鎖相技術(shù)實(shí)現收、發(fā)頻率完全相同的時(shí)鐘信號。

如上所述,異步通信技術(shù)較為簡(jiǎn)單,應用范圍廣;同步通信傳輸速率高,適用于高速率、大容量的數據通信,但硬件復雜。

2.串行通信數據傳輸方式

單工方式:數據傳送是單向的,一端為發(fā)送另一端為接收,只需一條數據線(xiàn)。

半雙工方式:數據傳送是雙向的,A→B,B→A,同一時(shí)間只能做一個(gè)方向傳送,只需一條數據線(xiàn)。

全雙工方式:數據傳送是雙向的,A、B兩端可同時(shí)發(fā)送,又可同時(shí)接收,需兩根數據線(xiàn)。


MCS-51系列單片機有一個(gè)全雙工的串行口

1.串行口結構

組成:發(fā)送數據緩沖器:只能寫(xiě)入,不能讀出

接收數據緩沖器:只能讀出,不能寫(xiě)入

發(fā)送控制器

輸出控制門(mén)

接收控制器

輸入移位寄存器

兩個(gè)專(zhuān)用寄存器SCON:存放串行口的控制和狀態(tài)信息

PCON:改變串行通信波特率

發(fā)送緩沖器和接收緩沖器兩個(gè)用同一符號SBUF,地址99H,用指令判斷選哪個(gè)

MOV SBUF,A寫(xiě)入;MOV A,SBUF讀出

2.工作方式

串行口有4種工作方式,由SCON中的SM0:SM1來(lái)定義。方式0時(shí),SM2位(多機通訊控制位)必須為0。

1)方式0

發(fā)送數據緩沖器:只能寫(xiě)入,不能讀出

同步移位寄存器輸入輸出方式,常用于外接移位寄存器,以擴展并行I/O口。

RXD引腳——串行輸入/輸出

TXD引腳——輸出同步移位脈沖

8位數據為一幀,不設起始位和停止位,先發(fā)送或接收最低位。

波特率固定為fosc/12。

①發(fā)送

當CPU執行一條將數據寫(xiě)入發(fā)送緩沖器SBUF的指令時(shí),產(chǎn)生一個(gè)正脈沖,串行口即把SBUF中的8位數據以fosc/12的固定波特率從RXD引腳串行輸出,低位在先, TXD引腳輸出同步移位脈沖,發(fā)送完8位數據置“1”中斷標志位TI。

②接收

方式0接收時(shí),REN為串行口接收允許接收控制位,REN=0,禁止接收。REN=1,允許接收。當CPU向串行口的SCON寄存器寫(xiě)入控制字(置為方式0,并置“1”REN位,同時(shí)RI=0)時(shí),產(chǎn)生一個(gè)正脈沖,串行口即開(kāi)始接收數據。

引腳RXD為數據輸入端,TXD為移位脈沖信號輸出端,接收器也以fosc/12的固定波特率采樣RXD引腳的數據信息,當接收到8位數據時(shí)置“1”中斷標志RI。表示一幀數據接收完畢,可進(jìn)行下一幀數據的接收。

2)方式1

8位異步收發(fā)通信。用于數據的串行發(fā)送和接收。TXD腳和RXD腳分別用于發(fā)送和接收數據。

方式1收發(fā)一幀的數據為10位,1個(gè)起始位(0),8個(gè)數據位,1個(gè)停止位(1),先發(fā)送或接收最低位。

①發(fā)送

方式1輸出時(shí),數據位由TXD端輸出,

當CPU執行一條數據寫(xiě)發(fā)送緩沖器SBUF的指令,就啟動(dòng)發(fā)送。圖中TX時(shí)鐘的頻率就是發(fā)送的波特率。發(fā)送開(kāi)始時(shí),內部發(fā)送控制信號變SEND*變?yōu)橛行?,將起始位向TXD輸出。

此后,每經(jīng)過(guò)一個(gè)TX時(shí)鐘周期,便產(chǎn)生一個(gè)移位脈沖,并由TXD輸出一個(gè)數據位。8位數據位全部發(fā)送完畢后,置“1”中斷標志位TI,然后SEND*信號失效。

②接收

前提REN=1;數據從RXD(P3.0)引腳輸入。當檢測到起始位的負跳變時(shí),則開(kāi)始接收。

定時(shí)控制信號有兩種(如圖所示),一種是接收移位時(shí)鐘(RX時(shí)鐘),它的頻率和傳送的波特率相同。另一種是位檢測器采樣脈沖,它的頻率是RX時(shí)鐘的16倍。也就是在1位數據期間,有16個(gè)采樣脈沖,以波特率的16倍的速率采樣RXD引腳狀態(tài),當采樣到RXD端從1到0的跳變時(shí)就啟動(dòng)檢測器,采用三中取二的原則,接收的值是3次連續采樣(第7、8、9個(gè)脈沖時(shí)采樣)取其中兩次相同的值,以確認是否是真正的起始位(負跳變)的開(kāi)始。

當一幀數據接收完畢以后,必須同時(shí)滿(mǎn)足以下兩個(gè)條件,這次接收才真正完成。

a.RI=0,即上一幀數據接收完成時(shí),RI=1發(fā)出的中斷請求已被響應,SBUF中的數據已被取走,說(shuō)明“接收SBUF”已空。

b.SM2=0或收到的停止位=1(方式1時(shí),停止位已進(jìn)入RB8),則收到的數據裝入SBUF和RB8(RB8裝入停止位),且置“1”中斷標志RI。

若這兩個(gè)條件不同時(shí)滿(mǎn)足,收到的數據不能裝入SBUF,該幀數據將丟失。

方式1波特率=(2SMOD/32)×定時(shí)器T1的溢出率=(2SMOD/32)/(256-TL1)

3)方式2

9位異步通信接口。每幀數據均為11位,1位起始位0,8位數據位(先低位),1位可程控的第9位數據和1位停止位。

方式2波特率=(2SMOD/64)×fosc

①發(fā)送

發(fā)送前,先根據通訊協(xié)議由軟件設置TB8(例如,雙機通訊時(shí)的奇偶校驗位或多機通訊時(shí)的地址/數據的標志位)。

②接收

REN=1。數據由RXD端輸入,接收11位信息。當位檢測邏輯采樣到RXD引腳從1到0的負跳變,并判斷起始位有效后,便開(kāi)始接收一幀信息。在接收器完第9位數據后,需滿(mǎn)足以下兩個(gè)條件,才能將接收到的數據送入SBUF。

a.RI=0,意味著(zhù)接收緩沖器為空。

b.SM2=0或接收到的第9位數據位RB8=1時(shí)。

當上述兩個(gè)條件滿(mǎn)足時(shí),接收到的數據送入SBUF(接收緩沖器),第9位數據送入RB8,并置“1”RI。若不滿(mǎn)足這兩個(gè)條件,接收的信息將被丟棄。

4)方式3

方式3為波特率可變的9位異步通訊方式,除波特率外,方式3和方式2相同。

方式3波特率=(2SMOD/32)×定時(shí)器T1的溢出率=(2SMOD/32)/(256-TL1)

3.多機通信

串行口用于多機通信時(shí)必須使用方式2或方式3。

由單片機構成的多機系統,常采用總線(xiàn)型主從式結構:在多個(gè)單片機組成的系統中,只有一個(gè)是主機,其余是從機,主機發(fā)送的信息可被各從機接收,而各從機發(fā)送的信息只有主機接收,從機與從機之間不能互相直接通信。

主機的RXD與所有從機的TXD端相連,TXD與所有從機的RXD端相連。

多機通信的實(shí)現,主要靠主、從機正確地設置與判斷多機通信控制位SM2和發(fā)送、接收的第9位數據(TB8或RB8)。

1)多機通信原理

串行口控制寄存器SCON中的SM2位就是滿(mǎn)足這一條件而設置的多機通訊控制位。

在串行口以方式2(或方式3)接收時(shí):

若SM2=1,表示允許多機通訊,這時(shí)出現兩種可能情況:

①接收到的第9位數據為1時(shí),數據才裝入SBUF,并將中斷標志RI置“1”,向CPU發(fā)出中斷請求;

②接收到的第9位數據為0時(shí),則不產(chǎn)生中斷標志,信息將拋棄。

若SM2=0,則接收的第9位數據不論是0還是1,都產(chǎn)生RI=1中斷標志,接收到的數據裝入SBUF中。

當主機給從機發(fā)送信息時(shí),要根據發(fā)送信息的性質(zhì)來(lái)設置TB8,

發(fā)送地址信號時(shí),設置TB8=1,

發(fā)送數據或命令時(shí),設置TB8=0。

當從機的SM2為1時(shí),該從機只接收地址幀(RB8位為1),對數據幀(RB8位為0)不予理睬。

而當SM2為0時(shí),該從機接收所有發(fā)來(lái)的信息。

2)多機通信過(guò)程

①令所有從機的SM2位置1,使它們處于只接收地址幀的狀態(tài)(即從機復位);

②主機發(fā)送一幀地址信息,其中包括8位地址,第9位(即TB8)為1,以表示發(fā)送的是地址;

③從機接收到地址幀后,各自中斷CPU,把接收到的地址與其本機地址作比較;

④地址相符的從機對SM2清0,準備接收主機發(fā)來(lái)的數據/命令。地址不符的從機仍維持SM=1不變,對主機發(fā)來(lái)的數據幀不予理睬,直到主機發(fā)來(lái)新的地址幀;

⑤主機發(fā)送數據或控制信息(第9位為0)給被尋址的從機;

⑥被尋址的從機,因SM=0,可以接收主機發(fā)送過(guò)來(lái)的所有數據。當從機接收數據結束時(shí),置位SM2,返回接收地址幀狀態(tài)(復位狀態(tài));

⑦當主機需改為與其他從機通信時(shí),可再發(fā)出地址幀來(lái)呼叫其他從機。



關(guān)鍵詞: 51手記標準5

評論


技術(shù)專(zhuān)區

關(guān)閉
国产精品自在自线亚洲|国产精品无圣光一区二区|国产日产欧洲无码视频|久久久一本精品99久久K精品66|欧美人与动牲交片免费播放
<dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><small id="yhprb"></small><dfn id="yhprb"></dfn><small id="yhprb"><delect id="yhprb"></delect></small><small id="yhprb"></small><small id="yhprb"></small> <delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"></dfn><dfn id="yhprb"></dfn><s id="yhprb"><noframes id="yhprb"><small id="yhprb"><dfn id="yhprb"></dfn></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><small id="yhprb"></small><dfn id="yhprb"><delect id="yhprb"></delect></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn> <small id="yhprb"></small><delect id="yhprb"><strike id="yhprb"></strike></delect><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn><dfn id="yhprb"><s id="yhprb"><strike id="yhprb"></strike></s></dfn><dfn id="yhprb"><s id="yhprb"></s></dfn>