串行通信7章改_第1頁
串行通信7章改_第2頁
串行通信7章改_第3頁
串行通信7章改_第4頁
串行通信7章改_第5頁
已閱讀5頁,還剩49頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

一、串行與并行通信

并行通信——數(shù)據(jù)各位同時傳送串行通信——數(shù)據(jù)各位一位一位順序傳送第七章89C51串行口及串行通信技術(shù)7.1串行通信基本知識二、串行通信的傳輸方式單工:單方向半雙工:發(fā)送接收分時進(jìn)行全雙工:發(fā)送接收同時進(jìn)行三、異步和同步通信

同步通信特點(diǎn):

發(fā)送和接收時鐘始終保持嚴(yán)格同步。由發(fā)送一方用同步字符指示每一同步數(shù)據(jù)流的開始。發(fā)送方不得間斷發(fā)送數(shù)據(jù),否則插入同步字符。起始位數(shù)據(jù)位奇偶校驗(yàn)位終止位異步通信特點(diǎn):

數(shù)據(jù)是一幀一幀的傳送。規(guī)定了字符數(shù)據(jù)的傳送格式。用“起始位”“終止位”指示每一個傳輸數(shù)據(jù)的開始和結(jié)束。每個數(shù)據(jù)都以相同的幀格式傳輸。

同步通信數(shù)據(jù)格式

異步通信數(shù)據(jù)格式四、通信數(shù)據(jù)的差錯檢測

(1)奇偶校驗(yàn)

在數(shù)據(jù)位后附加一個奇偶校驗(yàn)位,該位可為“0”或“1”,以保證整個字符(包括校驗(yàn)位)中“1”的個數(shù)為偶數(shù)(偶校驗(yàn))或?yàn)槠鏀?shù)(奇校驗(yàn))。接收方按約定檢查數(shù)據(jù)是否正確。(2)校驗(yàn)和發(fā)送方對數(shù)據(jù)塊簡單求和,產(chǎn)生一個單字節(jié)校驗(yàn)字符(校驗(yàn)和)附加到數(shù)據(jù)塊的結(jié)尾。接收方對收到的數(shù)據(jù)求和后與收到的校驗(yàn)和進(jìn)行比較,不同則有誤。(3)返回檢驗(yàn)收到數(shù)據(jù)全部返回。五、波特率

數(shù)據(jù)傳送速率,用每秒傳送位數(shù)表示。例:電傳機(jī)最快傳送速率為10字符/秒,每個字符11位,則波特率為11位/字符×10字符/秒=110位/秒六、串行通信的過程及通信協(xié)議串←→并轉(zhuǎn)換與設(shè)備同步

兩個通信設(shè)備在串行線路上成功地實(shí)現(xiàn)通信必須解決兩個問題:

一是串←→并轉(zhuǎn)換,即如何把要發(fā)送的并行數(shù)據(jù)串行化,把接收的串行數(shù)據(jù)并行化;二是設(shè)備同步,即同步發(fā)送設(shè)備與接收設(shè)備的工作節(jié)拍,以確保發(fā)送數(shù)據(jù)在接收端被正確讀出。發(fā)送時的并-串轉(zhuǎn)換接收時的串-并轉(zhuǎn)換進(jìn)行串行通信的兩臺設(shè)備必須同步工作才能有效地檢測通信線路上的信號變化,從而采樣傳送數(shù)據(jù)脈沖。設(shè)備同步對通信雙方有兩個共同要求:一是通信雙方必須采用統(tǒng)一的編碼方法;二是通信雙方必須能產(chǎn)生相同的傳送速率。串行通信協(xié)議通信協(xié)議是對數(shù)據(jù)傳送方式的規(guī)定,包括數(shù)據(jù)格式定義和數(shù)據(jù)位定義等。起始位數(shù)據(jù)位奇偶校驗(yàn)位停止位波特率設(shè)置掛鉤(握手)信號約定串行通信接口電路功能:CPU并行輸出CPU并行輸入串行發(fā)送串行接收UniversalAsychronousReceiver/Transmitter通用異步接收器/發(fā)送器UARTUniversalSynchronousReceiver/Transmitter通用同步接收器/發(fā)送器USRT通用同步/異步·接收器/發(fā)送器USART7.2串行口及應(yīng)用典型串行接口芯片:INS82508251MCS-51的串行通信口特點(diǎn):片內(nèi)一個全雙工串行口四種方式編程選擇波特率由軟件控制、片內(nèi)定時器產(chǎn)生接收/發(fā)送均可工作在查詢或中斷方式一、89C51串行口

1.結(jié)構(gòu)

89C51通過引腳RXD(P3.0,串行數(shù)據(jù)接收端)和引腳TXD(P3.1,串行數(shù)據(jù)發(fā)送端)與外界進(jìn)行通信。串行口內(nèi)部結(jié)構(gòu)示意簡圖2.串行口控制字及特殊功能寄存器(1)SBUF串行數(shù)據(jù)緩沖器發(fā)送緩沖器接收緩沖器同名同地址99H

串行發(fā)送與接收的速率與移位時鐘同步。89C51用定時器T1作為串行通信的波特率發(fā)生器,T1溢出率經(jīng)2分頻(或不分頻)后又經(jīng)16分頻作為串行發(fā)送或接收的移位脈沖。移位脈沖的速率即是波特率。CPU發(fā)送數(shù)據(jù)SUBFTXD(P3.1)串行輸出CPU接收數(shù)據(jù)SUBFRXD(P3.0)接收數(shù)據(jù)(2)PCON-電源控制寄存器(87H)SMODD7D6D5D4D3D2D1D0PCON波特率選擇其它定義位字節(jié)地址87HSMOD=1,串口方式1,2或3,波特率提高一倍。可用MOVPCON,#80H;或MOV87H,#80H;使SMOD置1用于波特率選擇(3)串口控制寄存器SCON(98H)位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRI位D7D6D5D4D3D2D1D0SCON字節(jié)地址98H串行口操作方式選擇位00方式001方式110方式211方式3允許方式2、3的多機(jī)通信使能位允許串行接收位1允許接收;0禁止接收方式2、3中要發(fā)送的第9位數(shù)據(jù),可編程方式2、3中接收到的第9位數(shù)據(jù)。發(fā)送中斷標(biāo)志接收中斷標(biāo)志3.串行接口工作方式串口工作方式由SM0,SM1決定,見下表:串行口方式選擇SM0SM100011011方式

01

2

3

功能說明

移位寄存器方式

8位UART

9位UART

9位UART

波特率

fosc/12

可變

fosc/64或fosc/32

可變方式1、3的波特率:波特率=(2SMOD/32)×T1溢出率=(1)方式0-同步移位寄存器方式RxD(P3.0)串行發(fā)送或接收數(shù)據(jù),TxD(P3.1)輸出同步移位脈沖,數(shù)據(jù)傳送以8位為一幀,最低有效位LSB居先,波特率為方式0接收電路及時序說明:方式0發(fā)送或接收完8位數(shù)據(jù)后由硬件置位發(fā)送中斷標(biāo)志TI或接收中斷標(biāo)志RI。CPU響應(yīng)中斷請求轉(zhuǎn)入中斷服務(wù)程序時并不清TI或RI。中斷標(biāo)志TI或RI要用程序來清0。具體做法:CLRTI

CLRRI或ANLSCON,#0FEH

ANLSCON,#0FDH來實(shí)現(xiàn)。以方式0工作時SM2位(多機(jī)通信控制位)必須為0.(2)方式1-8位異步通信方式TxD(P3.1)發(fā)送數(shù)據(jù),RxD(P3.0)接收數(shù)據(jù),一幀信息10位D0D1D2D3D4D5D6D7起始位停止位波特率方式1發(fā)送和接收時序(3)方式2-9位異步通信接口D0D1D2D3D4D5D6D7D8起始位停止位TxD(P3.1)發(fā)送數(shù)據(jù),RxD(P3.0)接收數(shù)據(jù),一幀信息11位波特率(4)方式3-9位異步通信接口TxD(P3.1)發(fā)送數(shù)據(jù),RxD(P3.0)接收數(shù)據(jù),一幀信息11位D0D1D2D3D4D5D6D7D8起始位停止位波特率方式2、方式3發(fā)送和接收時序4.串行口波特率設(shè)置 方式0:波特率=為時鐘頻率,由硬件決定方式2:波特率=SMOD為特殊功能寄存器PCON最高位,由軟件決定.T1溢出率:T1溢出次數(shù)/每秒方式1,3:波特率=T1溢出一次所需時間(28-N)×12/foscT1溢出率=1/溢出一次所需時間=波特率=初始化步驟MOVTMOD,#20HMOVTH1,#XXH;定時器1初始化(如果波特率和定MOVTL1,#XXH;時器1有關(guān))SETBTR1MOVPCON,#80H;串行口初始化,根據(jù)工作方式和波MOVSCON,#50H;特率等決定SETBEA;中斷開放SETBES二、89C51串行口應(yīng)用1.串行口方式0的應(yīng)用例1:用89C51串行口外接164串入——并出移位寄存器擴(kuò)展8位并行口;8位并行口的每位都接一個發(fā)光二極管,要求發(fā)光二極管從左到右以一定延遲輪流顯示,并不斷循環(huán)。設(shè)發(fā)光二極管為共陰極接法。解:設(shè)數(shù)據(jù)串行發(fā)送采用中斷方式,顯示的延遲通過調(diào)用延遲程序DELAY來實(shí)現(xiàn)。串入并出電路 ORG0023H;串行口中斷入口 AJMPSBR;轉(zhuǎn)入串行口中斷服務(wù)程序 ORG2000H;主程序起始地址 MOVSCON,#00H ;串行口方式0初始化 MOVA,#80H ;最左一位發(fā)光二極管先亮 CLRP1.0 ;關(guān)閉并行輸出 MOVSBUF,A ;開始串行輸出LOOP: SJMP$ ;等待中斷SBR: SETBP1.0 ;啟動并行輸出 ACALLDELAY ;顯示延遲一段時間 CLRTI ;清發(fā)送中斷標(biāo)志 RRA ;準(zhǔn)備右邊一位顯示 CLRP1.0 ;關(guān)閉并行輸出 MOVSBUF,A ;再一次串行輸出 RETI ;中斷返回例2:用89C51串行口外加移位寄存器165或166擴(kuò)展8位輸入口,輸入數(shù)據(jù)由8個開關(guān)提供,另有一個開關(guān)K提供聯(lián)絡(luò)信號。當(dāng)K=0時,表示要求輸入數(shù)據(jù),輸入的8位為開關(guān)量,并入串出電路對RI采用查詢方式來編寫程序,當(dāng)然,先要查詢開關(guān)K是否閉合。程序清單:START: MOVSCON,#10H;串行口方式0初始化

JBP1.1,$ ;開關(guān)K未閉合,等待 SETBP1.0 ;P/S=1,并行置入數(shù)據(jù) CLRP1.0 ;PS=0,開始串行移位 JNBRI,$ ;查詢RI CLRRI ;查詢結(jié)束,清RI MOVA,SBUF ;讀數(shù)據(jù)到累加器 ACALLLOGSIM ;進(jìn)行邏輯模擬 SJMPSTART ;準(zhǔn)備下一次模擬2.串行口方式1的應(yīng)用例3:在8051片內(nèi)RAM30~4FH單元中有32個字節(jié)的數(shù)據(jù),若采用方式1進(jìn)行串行通信,波特率為1200bit/s,fosc=6MHz(SMOD=0),用查詢和中斷兩種方式編寫發(fā)送/接收程序?qū)?。解:T1為方式2由:波特率=位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRISCON允許接收01010000=50H禁止接收01000000=40H查詢方式

發(fā)送:

ORG0000H AJMPMAIN ORG0030H MAIN: MOVTMOD,#20HMOVTL1,#0F3H MOVTH1,#0F3H SETBTR1

MOVSCON,#40HHERE:JNBTI,HERE

MOVPCON,#00H CLRTI MOVR0,#30HINCR0 MOVR7,#20HDJNZR7,LOOP LOOP: MOVA,@R0SJMP$MOVSBUF,AEND 查詢方式

接收:

ORG0000H AJMPMAIN ORG0030H MAIN: MOVTMOD,#20HMOVTL1,#0F3H MOVTH1,#0F3H SETBTR1

MOVSCON,#50HMOVA,SBUF

MOVPCON,#00HMOV@R0,A MOVR0,#30HINCR0 MOVR7,#20HDJNZR7,HERE HERE:JNBRI,HERESJMP$CLRRIEND 中斷方式

ORG0000HMOVA,@R0 AJMPMAINMOVSBUF,A

ORG0023HCLRF0

AJMP

SERWAIT:JBF0,HERE ORG0030HAJMPWAIT MAIN:MOVSP,#60HHERE:AJMPHERE

MOVTMOD,#20H

SER:CLRTI

MOVTH1,#0F3H

INCR0

MOVTL1,#0F3H

MOVA,@R0

SETBTR1

MOVSBUF,A

MOVSCON,#40H

DJNZR7,HEMOVR0,#30HSETBF0MOVR7,#31;20HCLRES

SETB

EA

HE:

RETI

SETB

ES END發(fā)送:中斷方式

ORG0000H AJMPMAIN

ORG0023HCLRF0

AJMP

SERWAIT:JBF0,HERE ORG0030HAJMPWAIT MAIN:MOVSP,#60HHERE:AJMPHERE

MOVTMOD,#20H

SER:CLRRI

MOVTH1,#0F3H

MOVA,SBUF

MOVTL1,#0F3H

MOV@R0,A

SETBTR1

INCR0

MOVSCON,#50H

DJNZR7,HEMOVR0,#30HSETBF0MOVR7,#20HCLRES

SETBEA

HE:

RETI

SETB

ES END接收:例4:設(shè)計一個發(fā)送程序,將50H~5FH單元中的數(shù)據(jù)從串行口輸出(方式2),TB8做奇偶校驗(yàn)位。解:波特率=2SMOD×fosc/64=21×fosc/64=fosc/32位地址9F9E9D9C9B9A9998SM0SM1SM2RENTB8RB8TIRISCONSCON=10000000=80HPCON=10000000=80H3.串行口方式2的應(yīng)用查詢方式

發(fā)送:

ORG0000H AJMPMAIN ORG0030H MAIN:MOVSCON,#80HWAIT:JBCTI,CONTMOVPCON,#80H SJMPWAIT MOVR0,#50HCONT:INCR0 MOVR7,#10HDJNZR7,LOOP LOOP: MOVA,@R0SJMP$MOVC,PENDMOVTB8,CMOVSBUF,A 4.串行口方式3的應(yīng)用例5:編制一個接收程序,將接收的16B數(shù)據(jù)送入片內(nèi)RAM的5OH—5FH單元中。設(shè)串行口工作于方式3,波特率為2400b/s。解:方式3為11位異步通信方式,波特率取決于TI的溢出率。查表7-2(p165)可知,當(dāng)晶振為11.059MHz,波特率為2400b/s時,可取SMOD=0。TH1=0F4H。MAIN:MOVTMOD,#20H ;設(shè)TI工作于模式2 MOVTH1,#0F4H ;賦循環(huán)計數(shù)初值 MOVTL1,#0F4H ;賦計數(shù)值 SETBTR1 ;啟動定時器TI MOVR0,#50H ;首地址送R0 MOVR7,#10H ;數(shù)據(jù)長度送R7 MOVSCON,#0D0H ;串行口工作與方式3,可接收 MOVPCON,#00H ;設(shè)SMOD=0WAIT:JBCRI,PR1;接收完一幀數(shù)據(jù),清RI,轉(zhuǎn)PR1 SJMPWAIT ;否則等待PR1: MOVA,SBUF ;讀入數(shù)據(jù)

JNBP,PNP ;P=0,轉(zhuǎn)PNP JNBRB8,PER ;P=1,RB8=0,轉(zhuǎn)出錯處理 SJMPRIGHTPNP:JBRB8,PER ;P=0,RB8=1,轉(zhuǎn)出錯處理RIGHT:MOV@R0,A ;數(shù)據(jù)送內(nèi)存INCR0 ;修改地址指針DJNZR7,WAIT;未完,繼續(xù)接收下一個數(shù)據(jù)CLRPSW.5 ;置正確接收完畢標(biāo)志F0=0RETPER:SETBPSW.5RET例6:甲機(jī)向乙機(jī)發(fā)送128個字節(jié)的數(shù)據(jù)。乙機(jī)收到后做校驗(yàn),正確則存儲數(shù)據(jù)并回送“00”給甲機(jī);不正確則回送“FF”給甲機(jī),甲機(jī)將重新發(fā)送,直至全部發(fā)送完畢。7.389C51與89C51點(diǎn)對點(diǎn)異步通信甲機(jī)軟件流程圖乙機(jī)參數(shù)確定a.晶振6MHz,串口工作方式39位UART,每幀數(shù)據(jù)11位(1位起始、8位數(shù)據(jù)、1位奇偶校驗(yàn)、1位停止)b.波特率2400定時初值取SMOD=1得c.發(fā)送數(shù)據(jù)存于外部數(shù)據(jù)存儲器4000H~407FH單元接收的數(shù)據(jù)存于外部數(shù)據(jù)存儲器4000H開始的單元甲機(jī)程序清單ORG0000HLJMPMAINORG0023HLJMPSERVE1ORG0100HMAIN:MOVTMOD,#20H

MOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVPCON,#80HMOVSCON,#0D0HMOVDPTR,#4000HMOVR0,#80HSETBESSETBEA

MOVXA,@DPTRMOVC,PMOVTB8,CMOVSUBF,AHERE:SJMPHERESERVE1:JBCRI,LOOPCLRTISJMPENDTLOOP:MOVA,SBUFCLRCSUBBA,#01HJCLOOP1MOVXA,@DPTRMOVC,PMOVTB8,CMOVSUBF,ASJMPENDTLOOP1:INCDPTRMOVXA,@DPTRMOVC,P;MOVTB8,C;MOVSUBF,ADJNZR0,ENDTCLRESENDT:RETI乙機(jī)程序清單

ORG0000H LJMPMAIN ORG0023H LJMPSERVE2 ORG0100HMAIN:MOVTMOD,#20HMOVTH1,#0F3HMOVTL1,#0F3HSETBTR1MOVPCON,#80HMOVSCON,#0D0HMOVDPTR,#4000HMOVR0,#80HSETBESSETBEAHERE:SJMPHERE

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

最新文檔

評論

0/150

提交評論