




版權(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025版文化創(chuàng)意產(chǎn)品第三方擔(dān)保服務(wù)協(xié)議
- 2025版離婚協(xié)議書涉及存款收益分配與婚姻財產(chǎn)清算
- 二零二五年度電商產(chǎn)品包裝與物流配送服務(wù)合同
- 2025版財產(chǎn)保險單質(zhì)押抵押貸款服務(wù)合同
- 二零二五年度智能穿戴電子組件采購與市場推廣合同
- 2025版頂崗實(shí)習(xí)就業(yè)協(xié)議書(電子信息工程)
- 2025年高壓電工考試題庫:高壓線路運(yùn)行維護(hù)設(shè)備維護(hù)試題匯編
- 2025年造價員考試造價員職業(yè)道德與實(shí)務(wù)試卷
- 2025年遼寧省沈陽市和平區(qū)皇姑區(qū)鐵西區(qū)和平區(qū)事業(yè)單位招聘考試綜合類專業(yè)能力測試試卷(工程類)
- 二零二五年度新能源汽車購置合同規(guī)范范本
- 腔靜脈濾器置入護(hù)理查房
- 15D502 等電位聯(lián)結(jié)安裝
- 2022新能源集控中心調(diào)試試運(yùn)行應(yīng)急預(yù)案
- 口腔科院感規(guī)章制度
- 濱州惠民縣結(jié)合事業(yè)單位招聘征集本科及以上畢業(yè)生入伍考試真題2022
- 計算思維技能水平量表(CTS)-2
- 云南省新型農(nóng)村合作醫(yī)療基本用藥目錄
- 跆拳道考級打分表
- 南京社區(qū)工作者考試題庫2023
- 神經(jīng)外科運(yùn)用PDCA循環(huán)降低患者平均住院日
- 2021屆高考英語887核心詞(打印、詞頻、出處、例句、背誦)
評論
0/150
提交評論