<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單片機和PC串口異步通信

51單片機和PC串口異步通信

作者: 時(shí)間:2016-11-19 來(lái)源:網(wǎng)絡(luò ) 收藏
單片機和PC機間的通信有很多方式,下面的程序主要用到的是51單片機的異步串行通信。

一.51單片機的串行通信管腳

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

P3.1為單片機的TXD管腳(Transfer Data),P3.2為單片機的RXD管腳(Receive Data)。

通過(guò)TXD管腳可以將CPU要發(fā)送的數據輸出,RXD管腳可以將串行數據線(xiàn)傳來(lái)的數據讀入。

二.51單片機的串行通信控制寄存器SCON,電源控制寄存器PCON

SCON:


其中,SM0,SM1控制著(zhù)串行通信的工作方式。

SM0SM1工作方式說(shuō)明波特率
000移位寄存器fosc/12
01110位異步收發(fā)器(8位數據)可變
10211位異步收發(fā)器(9位數據)fosc/64或fosc/32
11311位異步收發(fā)器(9位數據)可變

其中工作方式1在使用當中比較多。

SM2為多機通信控制位,SM2=1,允許多機通信,=0不允許,實(shí)現點(diǎn)對點(diǎn)通信。這里先不討論。

TB8用于儲存發(fā)送數據的第9位。在方式2和方式3中,發(fā)送數據除了起始位,數據位,停止位外,還有一位校驗位,存儲在TB8中。

RB8用于存儲接收數據的第9位。接收到傳來(lái)的代碼后,數據位存儲在SBUF中,而校驗位就存儲在RB8中。通過(guò)分析,可以判別接受的數據是否正確。

TI為發(fā)送中斷請求標志。當發(fā)送數據緩沖區為空的時(shí)候,TI通過(guò)硬件置1,通知CPU數據發(fā)送完畢,需要有軟件清零。

RI為接收中斷請求標志。總線(xiàn)上的數據通過(guò)RXD引腳串行送入單片機內,通過(guò)移位寄存器將串行數據變成并行數據,送入SBUF中。若接收的SBUF已經(jīng)滿(mǎn),通過(guò)硬件置1,通知CPU一幀數據已經(jīng)接收完畢,可以進(jìn)行讀取。同樣需要軟件清零。

PCON中只有最高位SMOD與串行通信有關(guān)。

SMOD=1,波特率在原來(lái)的基礎上加倍;

否則,不加倍。

三.波特率的計算

對于方式1和方式3,波特率計算公式為:(2^SMOD/32)*(T1的溢出率);

對于方式2,為fosc*(2^SMOD/64);

對于方式1,由晶振決定,為固定值。

T1也就是定時(shí)器1,做波特率發(fā)生器時(shí),一般典型用法為工作在方式2,也就是自動(dòng)裝載的8位計數模式。TH,TL各8位,但只有TL部分計數,故最大計數值為255。溢出后,TH中的數自動(dòng)裝載到TL中。

所以,T1溢出率=fosc/{12x(256-TH1)};

所以可以列出右邊為我們所要波特率的方程。同時(shí)網(wǎng)上也有許多波特率的計算工具,也可以拿來(lái)使用。

最后總結起來(lái),串行通信大致要有這樣幾步:

1.確定定時(shí)器T1工作方式,也就是編程TMOD寄存器;

2.裝載T1的初值,也就是給TH1,TL1賦值;

3.確定串行口工作方式,也就是編程SCON和PCON寄存器;

4.啟動(dòng)T1定時(shí)器,也就是令TR1=1;

5.如果使用中斷查詢(xún)的話(huà),編寫(xiě)中斷服務(wù)函數

上面這些大概就是串口通信的基本知識了。有了這些知識,就可以編寫(xiě)程序來(lái)實(shí)踐了。



關(guān)鍵詞: 51單片機和PC串口異步通

評論


技術(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>