版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
第7章單片機(jī)串行口及其應(yīng)用本章介紹串行通訊原理、MCS-51串行口的結(jié)構(gòu)、串行口工作原理、串行口工作方式,重點(diǎn)各有關(guān)特殊功能寄存器的設(shè)置、波特率計(jì)算、發(fā)送、接收中斷服務(wù)程序編寫。7.1串行通訊基本概念
并行通訊并行通信通常是將數(shù)據(jù)字節(jié)的各位用多條數(shù)據(jù)線同時(shí)進(jìn)行傳送,并行通訊傳輸速度快,且控制簡單;但傳輸線較多,線間存在電耦合,長距離傳送時(shí)成本高且容易出錯(cuò)。
串行通訊所需電纜線少,且可以利用電話網(wǎng)等現(xiàn)成的設(shè)備,長距離傳送時(shí)成本低。但傳輸速度較并行通信低;收發(fā)控制比并行通訊復(fù)雜串行通訊串行通訊的基本概念一、串行通信的傳輸方式包括單工、半雙工和雙工3種方式單工方式半雙工方式雙工方式二、同步與異步傳輸同步通信該方式將要傳輸?shù)臄?shù)據(jù)按約定分成數(shù)據(jù)塊,數(shù)據(jù)塊之間用同步字符隔離。傳輸數(shù)據(jù)的二進(jìn)制位之間沒有間隔,因此傳輸時(shí)數(shù)據(jù)位是同步的,而且字符間也是同步的。同步通信傳輸數(shù)據(jù)的位之間的距離均為“位間隔”的整數(shù)倍,同時(shí)傳送的字符間不留間隙,即保持位同步關(guān)系,也保持字符同步關(guān)系。同步通信時(shí)要建立發(fā)送方時(shí)鐘對接收方時(shí)鐘的直接控制,使雙方達(dá)到完全同步。發(fā)送方對接收方的同步可以通過“外同步”和“自同步”兩種方法實(shí)現(xiàn)。異步通信異步通信用起始位“0”表示一次串行通信的開始,然后從低到高逐位傳送數(shù)據(jù),最后用停止位“1”表示一次串行通信結(jié)束一次通信一般傳送一個(gè)字符為傳送一個(gè)字符需要起始位和停止位的配合,將起始位、字符(數(shù)據(jù))和停止位組成的數(shù)據(jù)流稱為一幀信息異步通信原理在不同的異步通信協(xié)議中,起始位、數(shù)據(jù)位和停止位的長度不同由于幀中加入起始位和停止位,將增大數(shù)據(jù)傳輸量
MCS51單片機(jī)的一幀信息包括一位起始位,8位或9位數(shù)據(jù)位和1位停止位異步通信特點(diǎn)異步通信以字符(構(gòu)成的幀)為單位進(jìn)行傳輸,字符與字符之間的間隙(時(shí)間間隔)是任意的每個(gè)字符中的各位是以固定的時(shí)間傳送的,即字符之間是異步的(字符之間不一定有“位間隔”的整數(shù)倍的關(guān)系)但同一字符內(nèi)的各位是同步的(各位之間的距離均為“位間隔”的整數(shù)倍)。三.比特率和波特率比特率用來表示串行通訊的傳輸速率。含義是每秒鐘傳輸二進(jìn)制代碼的位數(shù),單位是:位/秒(bps)。如每秒鐘傳送360幀,而每幀包含10位(1個(gè)起始位、8個(gè)數(shù)據(jù)位和1個(gè)停止位),則比特率為:
10位×360幀/秒=3600bps波特率是指調(diào)制信號(hào)每秒鐘變化的次數(shù),單位是波特(Baud)。在基帶傳輸中,數(shù)字信號(hào)“1”和“0”直接用高低兩種電壓表示的,這種情況下比特率和波特率是相同的。所以,波特率也經(jīng)常用來表示串行通訊的傳輸速率。四.信號(hào)的調(diào)制與解調(diào)
當(dāng)異步通訊的距離在30米以內(nèi)時(shí),計(jì)算機(jī)之間可直接通訊;當(dāng)傳輸距離更遠(yuǎn)時(shí),為了減小信號(hào)畸變,保證通訊的正確率,發(fā)送時(shí)需先用調(diào)制器(Modulator)把數(shù)字信號(hào)轉(zhuǎn)換成模擬信號(hào)(調(diào)制),放大后發(fā)送,而接收端再由解調(diào)器(Demodulator)把收到的模擬信號(hào)轉(zhuǎn)換成數(shù)字信號(hào)(解調(diào))再送入計(jì)算機(jī)或接收設(shè)備;由于通信是雙向的,調(diào)制器和解調(diào)器一般合并在一個(gè)裝置中,稱為調(diào)制解調(diào)器(MODEM)。調(diào)制與解調(diào)通訊模型MODEM數(shù)字終端MODEM數(shù)字終端7.2MCS-51串行口基本原理單片機(jī)有一個(gè)全雙工串行接口,通過P3口的兩個(gè)引腳與外部設(shè)備進(jìn)行串行通訊:P3.1為串行數(shù)據(jù)發(fā)送端TXDP3.0為串行數(shù)據(jù)接收端RXD與串行口操作有關(guān)的特殊功能寄存器有SCON、PCON和SBUF;內(nèi)部還有發(fā)送控制器、接收控制器、輸入移位寄存器等不可訪問寄存器共同實(shí)現(xiàn)串行數(shù)據(jù)的輸入輸出。MCS-51單片機(jī)串行口組成原理
不論是同步還是異步傳輸,收發(fā)雙方的波特率應(yīng)該一致,MCS-51單片機(jī)的波特率發(fā)生器由T1構(gòu)成,對于52子系列,也可用T2構(gòu)成波特率發(fā)生器。÷2÷167.2.1與串口操作有關(guān)的特殊功能寄存器1.串口控制寄存器SCON串口控制寄存器SCON的字節(jié)地址98H,可位尋址,系統(tǒng)復(fù)位時(shí),SCON清零。各位名稱及位地址如下:SM0SM1SM2RENTB8RB8TIRID7D6D5D4D3D2D1D0SCON9FH9EH9DH9CH9BH9AH99H98H位地址串行口工作方式
SM0SM1方式功
能
說
明000移位寄存器方式,波特率為
fosc/12(多用于擴(kuò)展I/O口)01110位異步傳輸方式,波特率為2SMODfosc/32×T1溢出率,可變10211位異步傳輸方式,波特率為2SMODfosc/6411311位異步傳輸方式,波特率為2SMODfosc/32×T1溢出率,可變REN,允許串行接收位。如果軟件對REN置“1”,則啟動(dòng)串行口接收數(shù)據(jù);若清零REN位,則禁止接收。TB8,在方式2或方式3中,是發(fā)送數(shù)據(jù)的第九位,可以用軟件規(guī)定其作用。RB8,在方式2或方式3中,是接收到數(shù)據(jù)的第九位。其作用視發(fā)送方TB8的作用而定。TI,發(fā)送中斷標(biāo)志位RI,接收中斷標(biāo)志位SM2為多機(jī)通信控制位,主要用于方式2和3方式0時(shí),SM2必須是0;方式1時(shí),若SM2=1,則只有接收到有效停止位時(shí),RI才置1;方式2、3時(shí),如果接收機(jī)的SM2=1,當(dāng)收到的RB8位為“1”時(shí),收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI,通知CPU將數(shù)據(jù)從SBUF讀走;反之則不激活RI,收到的信息丟棄;當(dāng)SM2=0時(shí),不論收到的RB8為“0”還是“1”,均可以使收到的數(shù)據(jù)進(jìn)入SBUF,并激活RI。通過設(shè)置SM2,可以實(shí)現(xiàn)多機(jī)通信(后續(xù)介紹)
2.電源控制寄存器PCON
PCON字節(jié)地址位87H,不能位尋址,只有最高位SMOD位與串口工作有關(guān):SMOD=1時(shí),波特率加倍;SMOD=0時(shí),波特率不加倍。SMOD稱為波特率倍增位,復(fù)位時(shí)SMOD=03.數(shù)據(jù)緩沖器SBUF
單片機(jī)內(nèi)部,有兩個(gè)物理上獨(dú)立的緩沖器,分別負(fù)責(zé)接收和發(fā)送數(shù)據(jù),它們占用同一地址99H,編程時(shí)使用同樣的寄存器名稱SBUF寫SBUF--MOVSBUF,A時(shí),硬件自動(dòng)將數(shù)據(jù)送入發(fā)送緩沖器,開始串行發(fā)送執(zhí)行讀SBUF指令--MOVA,SBUF時(shí),硬件自動(dòng)將接收緩沖器的內(nèi)容送入A累加器,完成串行接收
7.2.2串行口的工作方式
通過對SM0和SM1兩個(gè)方式位的設(shè)置,串行口可工作于4種不同方式
方式0
同步移位寄存器輸入輸出方式。數(shù)據(jù)由RXD(P3.0)引腳輸入或輸出,同步移位脈沖由TXD(P3.1)引腳輸出。發(fā)送和接收均為8位數(shù)據(jù),低位在先,高位在后。波特率固定為fosc/12。工作方式0可用于擴(kuò)展并行輸入/輸出口。1)用方式0發(fā)送
數(shù)據(jù)寫入SBUF后,開始從RXD端發(fā)送,低位在前,高位在后;同時(shí)同步移位脈沖從TXD端輸出一字節(jié)發(fā)送完后,TI標(biāo)志置“1”,發(fā)出中斷請求;如果要繼續(xù)發(fā)送下一字節(jié),必須用軟件清除TI中斷標(biāo)志。
2)用方式0接收
REN為“1”,且RI=0的條件下,將啟動(dòng)一個(gè)接收過程。RXD為串行輸入端,TXD為同步脈沖。當(dāng)接收完一幀數(shù)據(jù)后,各控制信號(hào)復(fù)位,RI變?yōu)楦唠娖?,請求中斷。要再次接收,也必須用軟件清零RI。
2.方式1
方式1是異步傳輸方式。一幀數(shù)據(jù)為10位,包括數(shù)據(jù)1位起始位(0),8位數(shù)據(jù)位,1位停止位(1),TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳。
1)用方式1發(fā)送
CPU執(zhí)行寫SBUF的指令后,便開始一次發(fā)送過程,數(shù)據(jù)逐位從TXD端送出,發(fā)送所用移位脈沖是定時(shí)器1溢出信號(hào)經(jīng)16或32分頻信號(hào),即波特率是可變的,方式1的波特率為2SMOD
/32×T1溢出率。一幀數(shù)據(jù)發(fā)送完后,TI置“1”,請求中斷。TI標(biāo)志也只能用軟件清除。
2)用方式1接收
REN被軟件置“1”后,接收器以所選擇波特率的16倍速率采樣RXD引腳電平,當(dāng)檢測到RXD引腳輸入電平發(fā)生負(fù)跳變時(shí),則說明起始位有效,將其移入輸入移位寄存器,并開始接收這一幀信息的其余位,接收過程中,數(shù)據(jù)從輸入移位寄存器右邊移入,起始位移至輸入移位寄存器最左邊時(shí),控制電路進(jìn)行最后一次移位。9位數(shù)據(jù)收完以后,如果滿足下列條件則將接收到的前8位數(shù)據(jù)裝入接收SBUF,第9位(停止位)進(jìn)入RB8,并置RI=1,向CPU請求中斷。RI=0;SM2=0,或SM2=1但接收到的停止位為13.方式2和方式3方式2和方式3均為異步傳輸方式,一幀數(shù)據(jù)由11位構(gòu)成,即1位起始位(0),8位數(shù)據(jù)位,1位可編程位和1位停止位(1),TXD為數(shù)據(jù)發(fā)送引腳,RXD為數(shù)據(jù)接收引腳,方式2的波特率僅受波特率倍增位的影響,為2SMOD×fosc/64;方式3的波特率可變,為2SMOD/32×T1溢出率。TB8。。。1)用方式2或3發(fā)送
方式2或3一幀數(shù)據(jù)包括9位有效位,發(fā)送前必須將要發(fā)送的第9位數(shù)據(jù)裝入SCON寄存器的TB8中,常用方法是使用指令STEB或CLRTB8置“1”或清零。第9位數(shù)據(jù)的作用完全由用戶程序決定,通常可作為奇偶校驗(yàn)位或多機(jī)通訊中的地址/數(shù)據(jù)標(biāo)識(shí)位
第9位數(shù)據(jù)準(zhǔn)備好后,執(zhí)行寫SBUF寄存器的指令即開始發(fā)送
2)用方式2或3接收
REN置“1”后,開始接收,接收過程與方式1相同,8位數(shù)據(jù)接收完后,如果RI=0,且SM2=0(或接收到的第9位數(shù)據(jù)為1)時(shí),接收到的8位數(shù)據(jù)裝入接收緩沖器SBUF,第9位裝入RB8,置位RI,向CPU請求中斷。如果條件不滿足,則數(shù)據(jù)丟失,且不置位RI,繼續(xù)搜索RXD引腳的負(fù)跳變。7.2.3波特率計(jì)算
串行通信中,收發(fā)雙方發(fā)送或接收數(shù)據(jù)的速率應(yīng)該相同,才能保證接收。51單片機(jī)串行口的四種工作方式中,方式0和方式2的波特率是固定的,這時(shí)要求收發(fā)雙方主頻一致或相差一倍;方式1和方式3的波特率可變,必須對雙方的定時(shí)器進(jìn)行正確的設(shè)置才能保證波特率一致。串行口的四種工作方式對應(yīng)三種波特率,各種方式的波特率計(jì)算公式如下:方式0的波特率
=fosc/12方式1的波特率
=(2SMOD/32)×(T1溢出率)方式2的波特率
=(2SMOD/64)×fosc方式3的波特率
=(2SMOD/32)×(T1溢出率)定時(shí)器的溢出率即定時(shí)時(shí)間的倒數(shù),與采用的工作方式有關(guān),可表示為:
fosc/[12×(2K-初值)]定時(shí)器1作波特率發(fā)生器時(shí),一般選方式2,這時(shí)溢出率取決于TH1中的基數(shù)值,即:
T1溢出率
=fosc
/{12×[256-(TH1)]}如果波特率較低時(shí),可定時(shí)器采用方式1。常用的波特率及定時(shí)器初值
波特率(bps)fosc(MHz)SMOD定時(shí)方式定時(shí)器初值625001212FFH1920011.059212FDH960011.059202FDH480011.059202FAH240011.059202F4H120011.059202E8H11060272H1101202FEEBH7.3.1利用串行口實(shí)現(xiàn)單片機(jī)之間通訊
兩臺(tái)計(jì)算機(jī)之間采用什么規(guī)則傳送數(shù)據(jù)(通訊協(xié)議)需要由軟件約定1#機(jī)2#機(jī)需要約定的內(nèi)容一般有波特率、數(shù)據(jù)格式、發(fā)送開始和接收完成后是否需要應(yīng)答、是否需要檢錯(cuò)以及發(fā)生通訊錯(cuò)誤和如何處理等
例:兩臺(tái)單片機(jī)主頻12MHZ,1#機(jī)用串口工作方式1將片內(nèi)數(shù)據(jù)存儲(chǔ)器30H~50H共21H個(gè)數(shù)據(jù)發(fā)送給2#機(jī)。波特率2400波特。1#機(jī)每發(fā)送一字節(jié),計(jì)算一次檢驗(yàn)和,數(shù)據(jù)發(fā)送完成后,發(fā)檢驗(yàn)和字節(jié),最后收到2#機(jī)回送的檢驗(yàn)和字節(jié)后,進(jìn)行判斷,如果相同,清20H位,本次傳輸完成,否則置位20H,主程序進(jìn)行錯(cuò)誤處理。
系統(tǒng)初始化初始化定時(shí)器1初始化串口發(fā)送一字節(jié)并計(jì)算檢驗(yàn)和…..開始清TI中斷入口接收中斷?中斷返回發(fā)送下一字節(jié)并計(jì)算檢驗(yàn)和清TI發(fā)送完成?檢驗(yàn)和正確?置錯(cuò)誤標(biāo)志YynYNN編程步驟:計(jì)算波特率:采用T1的工作方式2作波特率發(fā)生器,初值為:N=256-fosc/[波特率×12×(32/2SMOD
)]=256-12×106/[2400×12×(32/20)]=243=F3H工作單元及標(biāo)志位設(shè)置:R7-待發(fā)送字節(jié)數(shù);R0-發(fā)送單元地址指針;R0-檢驗(yàn)和存放單元;F0-數(shù)據(jù)塊發(fā)送完成標(biāo)志;20H位-通訊錯(cuò)誤標(biāo)志1#機(jī)發(fā)送主程序:OGR 0000HSJMP MAINORG 0023HLJMP SPORT ;轉(zhuǎn)串口中斷服務(wù)程序MIAN:MOVTMOD,#00100000B;定時(shí)器1工作于方式2MOV TH1,#0F3HMOV TL1,#0F3HSETB TR1MOV SCON,#01010000B;串口方式1,REN=1MOV R7,#21HMOV SCON,#01010000B;串口方式1,REN=1MOV R7,#21HMOV R0,#50H;首字節(jié)地址MOV R1,#00H;檢驗(yàn)和清零CLR F0;清發(fā)送完成標(biāo)志CLR 20H;清通訊錯(cuò)誤標(biāo)志MOV A,@R0MOV SBUF,A;發(fā)送第一字節(jié)Add a,R1MOV R1,A;存檢驗(yàn)和
┆ ┆ ;其它程序1#機(jī)發(fā)送中斷服務(wù)程序SPORT:JBC RI,SP1 ;接收中斷,轉(zhuǎn)SP1 CLR TI DJNZ R7,GOON ;數(shù)據(jù)塊未完,轉(zhuǎn)GOON SETB F0 ;置數(shù)據(jù)塊發(fā)送完成標(biāo)志
MOV A,R1 MOV SBUF,A ;發(fā)送檢驗(yàn)和
SJMP SENDSP1: JNB F0,SEND
;不是檢驗(yàn)和,轉(zhuǎn)SEND,返回
MOV A,SBUF CJNE A,R1,ERR
CLR 20H ;清通訊錯(cuò)誤標(biāo)志
SJMP SENDERR: STEB 20H ;置通訊錯(cuò)誤標(biāo)志
SJMP SEND GOON: DEC R0 MOV A,@R0 MOV SBUF,A ADD A,R1 ;計(jì)算檢驗(yàn)和
MOV R1,ASEND: RETI7.3.2多機(jī)通訊的實(shí)現(xiàn)通過串口實(shí)現(xiàn)多機(jī)通訊常采用主從式結(jié)構(gòu),即在數(shù)個(gè)單片機(jī)中,有一個(gè)是主機(jī),其余的是從機(jī)從機(jī)要服從主機(jī)的調(diào)度、支配構(gòu)成這種主從式的多機(jī)通訊系統(tǒng)y一般采用串行口方式2和方式3問題多機(jī)系統(tǒng)中可能遇到哪些問題?如何解決?通信協(xié)議:初始時(shí),主機(jī)SM2位清“0”,所有從機(jī)各確定一數(shù)值(00H~0FFH)為其地址號(hào),且SM2位置“1”,處于接收地址幀狀態(tài);主機(jī)需要和哪臺(tái)從機(jī)通訊時(shí),先發(fā)送一地址幀,即8位數(shù)據(jù)為該從機(jī)地址,第9位TB8置“1”,表示該幀為地址幀;由于TB8為1,所有從機(jī)都可接收到該地址幀,然后將接收的地址與本機(jī)的地址比較:地址相符的從機(jī),在串口接收中斷服務(wù)程序中將SM2位清“0”,并把本站地址發(fā)回主機(jī)作為應(yīng)答;地址不符的從機(jī)
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 內(nèi)科護(hù)理考試題及答案
- 辦公樓電梯安裝協(xié)議(2025年)
- 2025年珍愛生命保護(hù)環(huán)境知識(shí)競賽題庫及答案(共90題)
- 2025年醫(yī)院三基知識(shí)考試試題庫及答案(共100題)
- 鄧州招教筆試真題及答案
- 2025年河南聯(lián)考考題題庫及答案
- 《影像增強(qiáng)檢查靜脈輸注工具規(guī)范應(yīng)用專家共識(shí)》解讀與總結(jié)2026
- 2025年高考政治二模試卷及答案
- 物業(yè)采購電表合同范本
- 上汽金融貸款合同范本
- 班組安全基礎(chǔ)培訓(xùn)
- 水廠調(diào)試方案范本
- 2025年《中外教育史》沖刺押題卷(附答案)
- 物流金融風(fēng)險(xiǎn)管理
- 國開24273丨中醫(yī)藥學(xué)概論(統(tǒng)設(shè)課)試題及答案
- 國家開放大學(xué)電大《當(dāng)代中國政治制度(本)》形考任務(wù)4試題附答案
- 河道臨時(shí)圍堰施工方案
- 2025年廣東省公需課《人工智能賦能制造業(yè)高質(zhì)量發(fā)展》試題及答案
- 有機(jī)肥可行性研究報(bào)告
- 2025年-基于華為IPD與質(zhì)量管理體系融合的研發(fā)質(zhì)量管理方案-新版
- 法律職業(yè)資格考試客觀題(試卷一)試卷與參考答案(2025年)
評(píng)論
0/150
提交評(píng)論