51單片機---串口通訊
MCS-51單片機內(nèi)部有一個可編程的雙向全雙工串行通信接口,簡稱串口;該串口有4種工作方式,以適用于不同場合;其波特率由單片機內(nèi)部的定時器/計數(shù)器產(chǎn)生,可由軟件設(shè)置;接收和發(fā)送均可工作在查詢模式和中斷模式,比較靈活;
二、串口結(jié)構(gòu)與控制
MCS-51單片機內(nèi)部的串口擁有兩個物理上相互獨立的接收、發(fā)送緩沖器SBUF,可以同時接收和發(fā)送數(shù)據(jù);發(fā)送緩沖器只能寫入而不能讀出,接收緩沖器只能讀出而不能寫入;兩個緩沖器占用同一個地址(99H);控制MCS-51單片機串口的寄存器有兩個SCON和PCON;
1、串口工作方式控制寄存器SCON(99H)
如下圖:
(1)、SM0和SM1:控制單片機的工作方式;
(2)、SM2:允許方式2和方式3進行多機通信控制位;
(3)、REN:允許串行接收控制位;1-允許接收;0-禁止接收;
(4)、TB8:用于工作在方式2和方式3時存放要發(fā)送的第9位數(shù)據(jù),根據(jù)需要,由軟件設(shè)置;
(5)、RB8:用于工作在方式2和方式3時存放接收到的第9位數(shù)據(jù);
(6)、TI:發(fā)送中斷標(biāo)志位,必須由軟件清0;當(dāng)發(fā)送完一幀數(shù)據(jù)時,就產(chǎn)生一個中斷,此時TI被硬件自動置1,用于標(biāo)記產(chǎn)生了發(fā)送中斷;
(7)、RI:接收中斷標(biāo)志位,必須由軟件清0;當(dāng)接收完一幀數(shù)據(jù)時,就產(chǎn)生一個中斷,此時RI被硬件自動置1,用于標(biāo)記產(chǎn)生了接收中斷;
2、特殊功能寄存器PCON(87H)
如下圖:
(1)、SMOD:波特率倍增位;當(dāng)SMOD=1時,波特率加倍;當(dāng)SMOD=0時,波特率不加倍;
(2)、GF1和GF0:兩個通用標(biāo)志,供用戶使用;
(3)、PD和IDL:CHMOS型8051單片機的低功耗控制位;
三、串口的工作方式
串口的工作方式有4種,由特殊功能寄存器SCON的SM0位和SM1位共同決定;
如下表:
1、方式0:
該方式下,串口為同步移位寄存器輸入/輸出方式,其波特率固定不變?yōu)镕osc/12;數(shù)據(jù)由RXD(P3.0)口輸入/輸出,同步移位脈沖由TXD(P3.1)端輸出,發(fā)送接收的都是8位數(shù)據(jù),低位在先;
2、方式1:
當(dāng)SM0SM1=01時,串口以該方式工作,此時的串口為8位異步通信接口;
3、方式2:
當(dāng)SM0SM1=10時,串口以該方式工作,此時,發(fā)送和接收的都是一幀數(shù)據(jù),即:由11位組成,其中第1位是起始位,接下來的8位是用戶數(shù)據(jù)(低位在先),然后是1位可編程位(第9位數(shù)據(jù)),最后一位是停止位;RB8/TB8根據(jù)需要,設(shè)置成0或1,作為多機通信中的地址數(shù)據(jù)標(biāo)志位或數(shù)據(jù)的奇偶檢驗位;
4、方式3:
當(dāng)SM0SM1=11時,串口以該方式工作,該方式是波特率可變的9位異步通信方式,除了波特率外,方式3與方式2相同;
四、波特率的計算
方式0: Buard = Fosc/12
方式1: Buard = K*Fosc/[32*12*(256-TH1)]
方式2: Buard = K*Fosc/64
方式3: Buard = K*Fosc/[32*12*(256-TH1)]
注:若波特率的倍增位SMOD=0,則K=1;若SMOD=1,則K=2;
五、串口初始化
STEP1:設(shè)置串口工作模式(如:SCON=0x50);
STEP2:配置定時器
STEP2-1:設(shè)置定時器T1工作在模式2(T如:MOD=0x02自動重裝預(yù)置數(shù)模式);
STEP2-2:給定時器T1裝初始值(THx/TLx);
STEP2-3:啟動定時器(TR1=1);
STEP3:如果讓串口工作在中斷模式,則還需要把RI/TI清0,同時開串口中斷(ES=1)和CPU總中斷(EA=1);
評論