51單片機(jī)串行口--同步移位寄存器
MCS-51單片機(jī)的串行口既可以用于網(wǎng)絡(luò)通信,亦可實(shí)現(xiàn)串行異步通信,還可以用作同步移位寄存器。如果在串行口的輸入輸出引腳上加上電平轉(zhuǎn)換器,就可方便地構(gòu)成標(biāo)準(zhǔn)的RS-232接口。
本文引用地址:http://m.butianyuan.cn/article/201611/321707.htmMCS-51單片機(jī)的串行接口是一個(gè)全雙工通信接口,它有兩個(gè)物理上獨(dú)立的接收、發(fā)送緩沖器SBUF,可以同時(shí)發(fā)送和接收數(shù)據(jù)。但是發(fā)送緩沖器只能寫入,不能讀出;接收緩沖器只能讀出,不能寫入。兩個(gè)緩沖器共用一個(gè)地址(99H)。
數(shù)據(jù)通信的基本概念
常用于數(shù)據(jù)通信的傳輸方式有單工、半雙工、全雙工和多工方式。
- 單工方式:數(shù)據(jù)僅按一個(gè)固定方向傳送。因而這種傳輸方式的用途有限,常用于串行口的打印數(shù)據(jù)傳輸與簡(jiǎn)單系統(tǒng)間的數(shù)據(jù)采集。
- 半雙工方式:數(shù)據(jù)可實(shí)現(xiàn)雙向傳送,但不能同時(shí)進(jìn)行,實(shí)際的應(yīng)用采用某種協(xié)議實(shí)現(xiàn)收/發(fā)開關(guān)轉(zhuǎn)換。
- 全雙工方式:允許雙方同時(shí)進(jìn)行數(shù)據(jù)雙向傳送,但一般全雙工傳輸方式的線路和設(shè)備較復(fù)雜。
- 多工方式:以上三種傳輸方式都是用同一線路傳輸一種頻率信號(hào),為了充分地利用線路資源,可通過使用多路復(fù)用器或多路集線器,采用頻分、時(shí)分或碼分復(fù)用技術(shù),即可實(shí)現(xiàn)在同一線路上資源共享功能。
根據(jù)同步方式,串行數(shù)據(jù)通信有兩種形式,如圖5-5所示。
- 異步通信。在這種通信方式中,接收器和發(fā)送器有各自的時(shí)鐘,它們的工作是非同步的。異步通信用一幀來表示一個(gè)字符,其內(nèi)容是一個(gè)起始位,緊接著是若干個(gè)數(shù)據(jù)位。
- 同步通信。同步通信格式中,發(fā)送器和接收器由同一個(gè)時(shí)鐘源控制,在異步通信中,每傳輸一幀字符都必須加上起始位和停止位,占用了傳輸時(shí)間,若要求傳送數(shù)據(jù) 量較大,速度就會(huì)慢得多。同步傳輸方式去掉了這些起始位和停止位,只在傳輸數(shù)據(jù)塊時(shí)先送出一個(gè)同步頭(字符)標(biāo)志即可。
- 同步傳輸方式比異步傳輸方式速度快,這是它的優(yōu)勢(shì)。但同步傳輸方式也有其缺點(diǎn),即它必須要用一個(gè)時(shí)鐘來協(xié)調(diào)收發(fā)器的工作,所以它的設(shè)備也較復(fù)雜。
MCS-51的串行口控制寄存器
在完成串行口初始化后,發(fā)送數(shù)據(jù)時(shí),采用MOV SBUF,A指令,將要發(fā)送的數(shù)據(jù)寫入SBUF,則CPU自動(dòng)啟動(dòng)和完成串行數(shù)據(jù)的輸出;接收數(shù)據(jù)時(shí),采用MOV A,SBUF指令,CPU就自動(dòng)將接收到的數(shù)據(jù)從SBUF中讀出。
控制MCS-51單片機(jī)串行接口的控制寄存器有兩個(gè)——特殊功能寄存器SCON和PCON,用以設(shè)置串行端口的工作方式、接收/發(fā)送的運(yùn)行狀態(tài)、接收/發(fā)送數(shù)據(jù)的特征、數(shù)據(jù)傳輸率的大小,以及作為運(yùn)行的中斷標(biāo)志等,其格式如下:
① 串行口控制寄存器SCON。SCON的字節(jié)地址是98H,位地址(由低位到高位)分別是98H一9FH。SCON的格式如下:
SM0、SMl:串行口工作方式控制位。
00——方式0;01——方式1;
10——方式2;11——方式3。
SM2:僅用于方式2和方式3的多機(jī)通信控制位。
發(fā)送機(jī)SM2=1(要求程控設(shè)置)。
當(dāng)為方式2或方式3時(shí):
接收機(jī) SM2=1時(shí),若RB8=1,可引起串行接收中斷;若RB8=0,不引起串行接收中斷。SM2=0時(shí),若RB8=1,可引起串行接收中斷;若RB8=0,亦可引起串行接收中斷。
- REN串行接收允許位:0——禁止接收;1——允許接收。
- TB8:在方式2、3中,TB8是發(fā)送機(jī)要發(fā)送的第9位數(shù)據(jù)。
- RB8:在方式2、3中,RB8是接收機(jī)接收到的第9位數(shù)據(jù),該數(shù)據(jù)正好來自發(fā)送機(jī)的TB8。
- TI:發(fā)送中斷標(biāo)志位。發(fā)送前必須用軟件清零,發(fā)送過程中TI保持零電平,發(fā)送完一幀數(shù)據(jù)后,由硬件自動(dòng)置1。如要再發(fā)送,必須用軟件再清零。
- RI:接收中斷標(biāo)志位。接收前,必須用軟件清零,接收過程中RI保持零電平,接收完一幀數(shù)據(jù)后,由片內(nèi)硬件自動(dòng)置1。如要再接收,必須用軟件再清零。
② 電源控制寄存器PCON。PCON的字節(jié)地址為87H,無位地址,其格式如下:
PCON是為在CMOS結(jié)構(gòu)的MCS-51單片機(jī)上實(shí)現(xiàn)電源控制而附加的,對(duì)于HMOS結(jié)構(gòu)的MCS-51系列單片機(jī),除了第7位外,其余都是虛設(shè)的。與串行通信有關(guān)的也就是第7位,稱作SMOD,它的用處是使數(shù)據(jù)傳輸率加倍。
SMOD:數(shù)據(jù)傳輸率加倍位。在計(jì)算串行方式1,2,3的數(shù)據(jù)傳輸率時(shí);0表示不加倍;1表示加倍。
其余有效位說明如下。
GF1、GF2:通用標(biāo)志位。
PD:掉電控制位,0表示正常方式,1表示掉電方式。
IDL:空閑控制位,0表示正常方式,1表示空閑方式。
除了以上兩個(gè)控制寄存器外,中斷允許寄存器IE中的ES位也用來作為串行I/O中斷允許位。當(dāng)ES=1,允許 串行I/O中斷;當(dāng)ES=0,禁止串行I/O中斷。中斷優(yōu)先級(jí)寄存器IP的PS位則用作串行I/O中斷優(yōu)先級(jí)控制位。當(dāng)PS=1,設(shè)定為高優(yōu)先級(jí);當(dāng)PS =0,設(shè)定為低優(yōu)先級(jí)。
工作方式
MCS-51 單片機(jī)可以通過軟件設(shè)置串行口控制寄存器SCON中SM0(SCON.7)和SMl(SCON.6)來指定串行口的4種工作方式。串行口操作模式選擇如表5-2所示。
表5-2 串行口操作模式選擇表
SM0 SM1 | 模 式 | 功 能 | 波 特 率 |
0 0 | 0 | 同步移位寄存器 | fOSC/12 |
0 1 | 1 | 8位UART | 可變(T1溢出率) |
1 0 | 0 | 9位UART | fOSC/64或fOSC/32 |
1 1 | 1 | 9位UART | 可變(T1溢出率) |
其中,fosc是振蕩器的頻率,UART為通用異步接收和發(fā)送器的英文縮寫。下面對(duì)這4種工作模式作進(jìn)一步介紹。
評(píng)論