第11章串行通信接口_第1頁
第11章串行通信接口_第2頁
第11章串行通信接口_第3頁
第11章串行通信接口_第4頁
第11章串行通信接口_第5頁
已閱讀5頁,還剩47頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

接口與通訊技術(shù)武漢科技大學(xué)計算機科學(xué)與技術(shù)學(xué)院第11章串行通信接口本章內(nèi)容11.1串行通信的基本概念11.2串行通信中的傳輸速率控制11.3串行通信中的數(shù)據(jù)格式11.4串行通信接口標準11.5串行通信接口電路11.6用戶擴展的串行通信接口11.7系統(tǒng)配置的串行通信接口11.1串行通信的基本概念11.1.1串行通信的基本特點在1根信號線上分時傳送多位信息;既傳數(shù)據(jù)又傳聯(lián)絡(luò)信息為了區(qū)分數(shù)據(jù)和聯(lián)絡(luò)信息,有固定的數(shù)據(jù)格式(同步和異步)對信號的邏輯定義與TTL不兼容傳輸速率需要控制:雙方約定波特率串行通信易受干擾,需進行差錯的檢測和控制既適用于近距離,又可用于遠程;遠程時需MODEM11.1.2串行通信傳輸?shù)墓ぷ鞣绞?制式)單工:數(shù)據(jù)只能單向傳送全雙工:可同時進行雙向傳送半雙工:可分時進行雙向傳送——方向切換發(fā)送器接收器接收器發(fā)送器A站B站信號地全雙工發(fā)送器接收器A站B站信號地單工發(fā)送器接收器發(fā)送器接收器A站B站信號地半雙工11.1.3串行通信中的差錯檢測1.誤碼率的控制誤碼率——數(shù)據(jù)經(jīng)傳輸后發(fā)生錯誤的位數(shù)與總傳輸位數(shù)之比;一般要求達到10-6數(shù)量級減少誤碼率措施——進行可靠性設(shè)計(軟硬件);檢糾錯編碼2.檢錯糾錯編碼的使用基本通信規(guī)程:奇偶校驗、方陣碼檢錯反饋重發(fā)高級通信規(guī)程:循環(huán)冗余碼(CRC)檢錯自動糾錯3.錯誤狀態(tài)的分析與處理奇偶校驗錯:請求重發(fā)溢出錯:降低發(fā)送速率或在接收方設(shè)置FIFO緩沖器幀格式錯:核對雙方的數(shù)據(jù)格式超時錯:由于硬件接口電路速度跟不上產(chǎn)生4.錯誤檢測只在接收方進行11.1.4串行通信的同步方式1.串行通信中的同步問題(1)字符同步方案雙同步(BISYNC)通信:12個特定的同步字符高級數(shù)據(jù)鏈路控制同步通信HDLC:特定0/1序列(01111110)起止式異步通信:起始位(2)位同步方案——接收時鐘控制每一位數(shù)據(jù)的接收2.串行通信的基本方式(1)異步通信方式以字符為單位傳輸,每個字符隨機出現(xiàn)在數(shù)據(jù)流中字符與字符之間是異步的,而字符內(nèi)位與位之間是同步的(2)同步通信方式以數(shù)據(jù)塊(字符塊)為單位傳輸字符與字符之間以及字符內(nèi)位與位之間都是同步的11.1.5串行通信中的調(diào)制與解調(diào)

電話線:300~3400Hz的音頻模擬信號調(diào)制解調(diào)器(MODEM,調(diào)制器+解調(diào)器)的作用:發(fā)送時將二進制數(shù)據(jù)調(diào)制成音頻模擬信號接收時對音頻模擬信號進行解調(diào)還原成數(shù)字信號數(shù)據(jù)通信設(shè)備(DCE)或數(shù)傳機(DATASET)調(diào)制解調(diào)器的種類幅移鍵控(ASK)、頻移鍵控(FSK)、相移鍵控(PSK)頻率f01+-輸出S1S0數(shù)字信號頻率f1頻率f0FSK:11.2串行通信中的傳輸速率控制11.2.1數(shù)據(jù)傳輸速率控制的實現(xiàn)方法數(shù)字通信中的傳輸速率稱為波特率,單位波特數(shù)據(jù)傳輸率的控制——波特率時鐘發(fā)生器和波特率因子11.2.2波特率與發(fā)送/接收時鐘1.波特率:單位時間內(nèi)傳輸串行數(shù)據(jù)的位數(shù),1波特=1b/s位周期2.發(fā)送/接收時鐘(1)執(zhí)行數(shù)據(jù)的發(fā)送和接收:發(fā)送時鐘的下降沿從發(fā)送移位寄存器輸出;接收時鐘的上升沿移入接收移位寄存器(2)進行位同步發(fā)送/接收時鐘對數(shù)據(jù)發(fā)送/接收的控制0111000111000起始位發(fā)送的數(shù)據(jù)接收的數(shù)據(jù)收/發(fā)時鐘理想情況在碼元中心采樣收發(fā)時鐘頻率嚴格相等采樣錯位(f收<f發(fā))111000111000起始位發(fā)送的數(shù)據(jù)接收的數(shù)據(jù)發(fā)送時鐘1接收時鐘11.2.2波特率與發(fā)送/接收時鐘3.波特率因子:發(fā)送/接收1位數(shù)據(jù)所需的時鐘脈沖個數(shù)

TXC(RXC)=BaudFactor同步:Factor=1;異步:Factor=1、16、641/0起始位1/0接收時鐘數(shù)據(jù)檢測到起始位前沿8個16個16個起始位中心位采樣位采樣16倍波特率時鐘的作用提高了采樣定位的分辨率——提高可靠性提高了通信的抗干擾能力11.2.2波特率與發(fā)送/接收時鐘4.波特率時鐘發(fā)生器:不是所有串行接口芯片內(nèi)都包含5.波特率時鐘的使用——Factor一定,改變TXC控制Baud例8.1

Factor=16個/位,第一次采樣TXC1=38400Hz,第二次TXC2=19200Hz;兩次通信的波特率各為多少解: Baud1=TXC1Factor=3840016=2400b/s Baud2=TXC2Factor=1920016=1200b/s例8.2

甲乙兩機通信,甲機發(fā)送時鐘TXC=38400Hz,F(xiàn)actor1=16個/位;乙機Factor2=64個/位,求乙機的接收時鐘頻率RXC解:RXC=BaudFactor2=(TXCFactor1)Factor2

=384001664=153600Hz6.傳輸距離與傳輸速率的關(guān)系——傳輸線電氣特性一定情況下,直接傳輸最大距離隨速率的增加而減小11.2.3波特率時鐘發(fā)生器設(shè)計(略)例8.3

設(shè)計一個波特率時鐘發(fā)生器,輸入時鐘CLK=1.19318MHz,F(xiàn)actor=16,輸出Baud=9600b/s,按ESC退出解:通常用82C54A輸出方波作為串行通信的發(fā)送/接收時鐘

N=CLKOUT=CLK(BaudFactor) =1.19318106(960016)8硬件設(shè)計(選用T2)8251ATXDRXDSGTXCRXC三總線92582C54A82C55ACLK2GATE2OUT2PC6擴展總線1.19318MHz波特率時鐘發(fā)生器的軟件編程DATA SEGMENT TCEQU8 ;82C54A的T2初值

DATA54 EQU306H ;82C54A的T2地址

CTRL54 EQU307H ;82C54A控制口地址

CTRL55 EQU303H ;82C55A控制口地址DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVDX,CTRL54 MOVAL,0B6H ;82C54A方式字

OUTDX,AL MOVDX,CTRL55 MOVAL,80H ;82C55A方式字

OUTDX,AL MOVAL,0CH OUTDX,AL ;PC6=0,關(guān)82C54A CALLLOAD ;裝入計數(shù)初值波特率時鐘發(fā)生器的軟件編程(續(xù));給82C54A裝入計數(shù)初值的子程序LOAD PROCNEAR PUSHAX PUSHDX MOVDX,DATA54 MOVAX,TC OUTDX,AL MOVAL,AH OUTDX,AL POPDX POPAX RETLOAD ENDPCODE ENDS ENDSTART

MOVDX,CTRL55 MOVAL,0DH ;PC6=1,啟動82C54A OUTDX,AL NOPLOP: MOVAH,08H INT21H CMPAL,1BH ;檢測ESC鍵

JNELOP MOVDX,CTRL55 MOVAL,0CH ;關(guān)閉82C54A OUTDX,AL MOVAX,4C00H INT21H11.3串行通信中的數(shù)據(jù)格式通信控制規(guī)程(傳輸控制規(guī)程、通信協(xié)議)——數(shù)據(jù)格式、同步方式、傳輸速度、檢錯糾錯方式、控制字符定義等11.3.1起止式異步通信數(shù)據(jù)格式1.特點字符隨機出現(xiàn)在數(shù)據(jù)流中字符之間有不定長的空閑位靠起始位和停止位定界1幀數(shù)據(jù)高可靠低效率11.3.1起止式異步通信數(shù)據(jù)格式(續(xù))2.起止式數(shù)據(jù)幀格式起始位:1位,低電平數(shù)據(jù)位:5~8位,先低位后高位校驗位:1位/0位,奇偶校驗停止位:1位、1.5位或2位,高電平空閑位停止位1,1.5奇偶校驗數(shù)據(jù)位(5~8位)起始位不限或2位有/無(先低后高位)1位0/101110/10/10/1…0/10/10LSBMSB第n個字符第n+1個字符7~12位3.起/止位的作用定界一幀數(shù)據(jù)建立收發(fā)雙方同步:起始位標志一幀開始,停止位標志著結(jié)束11.3.2面向字符的同步通信數(shù)據(jù)格式特點:一幀由一個數(shù)據(jù)塊(若干字節(jié))組成,以12個同步字符開始控制字符定界數(shù)據(jù)和控制傳輸SYNC:同步字符,單同步加1個,雙同步加2個SOH:序始,引導(dǎo)標題標題:源地址、目標地址、路由等附加信息STX:文始,引導(dǎo)正文ETB/ETX:組終/文終,當正文很長,分n幀傳送時,前n-1幀用ETB,最后1幀用ETXBCC:塊校驗(從SOH到ETB/ETX),縱橫奇偶校驗或CRC校驗SYNCSYNCSOH標題STX數(shù)據(jù)塊ETB/ETXBCC11.4串行通信接口標準11.4.1RS-232C接口標準1.關(guān)于RS-232C接口標準的說明EIA與BELL公司1969年公布,0~20000b/s,數(shù)據(jù)終端設(shè)備(DTE)與數(shù)據(jù)通信設(shè)備(DCE)通信;接收和發(fā)送針對終端而言2.信號線定義數(shù)據(jù)線:TXD(發(fā)送數(shù)據(jù)),DTEDCE;RXD(接收數(shù)據(jù)),DCEDTE狀態(tài)線:DTR(DTE準備好),DTEDCE;DSR(DCE準備好),DCEDTE聯(lián)絡(luò)線:RTS(請求發(fā)送),DTEDCE;CTS(允許發(fā)送),DCEDTE振鈴信號:RI(MODEM已收到交換臺的呼叫信號),DCEDTE載體檢出信號:DCD(MODEM已收到數(shù)據(jù)載波信號),DCEDTE信號地線:SG(公共地線)11.4.1RS-232C接口標準3.信號線的使用

(1)遠程通信——使用MODEM和電話線TxDRxDRTSCTSDTRDSRRIDCDSG串口調(diào)制解調(diào)器計算機TxDRxDRTSCTSDTRDSRRIDCDSG串口調(diào)制解調(diào)器計算機電話線注:若不通過交換式電話系統(tǒng),而使用專用線,則不用RI11.4.1RS-232C接口標準3.信號線的使用

(2)近程通信(15m以內(nèi))——零MODEM方式,微機通信中常用DTETxDRxDDTRDSRRTSCTSSGDTETxDRxDDTRDSRRTSCTSSGTxD與RxD交叉相連:可實現(xiàn)全雙工通信DTR與DSR反饋相連:只要終端準備好就認為DTE和DCE都準備好RTS與CTS反饋相連:隨時都可以發(fā)送11.4.1RS-232C接口標準4.電氣特性

(1)RS-232C標準對信號的邏輯定義(EIA邏輯)

邏輯1:-5V-15V,負載端要求小于-3V

邏輯0:+5V+15V,負載端要求大于+3V

(2)EIA與TTL之間的轉(zhuǎn)換EIA:電壓極性、負邏輯TTL:電壓幅值、正邏輯不兼容發(fā)送:TTLEIA,MC1488,SN75150接收:EIATTL,MC1489,SN75154MAX232可雙向轉(zhuǎn)換11.4.1RS-232C接口標準(續(xù))RXDTXDRTSCTSDSRSGDCD發(fā)送電流(+)發(fā)送電流(-)1314234567891120222518接收電流(-)接收電流(+)RIDTRRXDTXDRTSCTSDSRSGDCD43267891RIDTR55.機械特性(1)連接器DB-25型(還支持20MA電流環(huán)接口)DB-9型(2)通信電纜長度速率低于20kb/s,誤碼率<4%——15米

實際誤碼率允許10%~20%,15米——保守RS-232C缺點:單端發(fā)送和接收,易受共模干擾

直接傳輸距離短,速率低;只能單點對單點通信11.4.2RS-485接口標準1.RS-485接口標準的新概念與新定義(1)采用雙線平衡方式傳輸(2)采用電位差值定義信號邏輯邏輯1:AA電平比BB高200mV;邏輯0:AA電平比BB低200mV(3)允許多點對多點通信(4)采用4芯水晶頭連接器——更方便且便宜MAX491RS-485電平MAX491AA’B’B平衡發(fā)送器差動接收器11.4.2RS-485接口標準2.平衡發(fā)送器/差動接收器的作用MAX485——用于半雙工;MAX491——可用于全雙工(1)收發(fā)器芯片MAX485和MAX491的引腳功能引腳名稱功能MAX485MAX49112RO接收器輸出:當VA-VB+200mV時,RO=1;當VA-VB-200mV時,RO=023RE接收器輸出允許:當RE=0時,允許輸出;當RE=1時,輸出呈高阻(三態(tài))34DE驅(qū)動器輸出允許:當DE=1時,允許輸出;當DE=0時,輸出呈高阻(三態(tài))45DI驅(qū)動器輸入:當DI=0時,Y=0,Z=1;當DI=1時,Y=1,Z=056,7GND接地-9Y驅(qū)動器非反向輸出-10Z驅(qū)動器反向輸出6-A接收器非反向輸入和驅(qū)動器非反向輸出-12A接收器非反向輸入7-B接收器反向輸入和驅(qū)動器反向輸出-11B接收器反向輸入814VCC正電源:4.75VVCC5.25V-1,8,13NC不連接11.4.2RS-485接口標準2.平衡發(fā)送器/差動接收器的作用(2)信號的邏輯定義當差動輸入VA-VB+200mV時,輸出為邏輯1當差動輸入VA-VB-200mV時,輸出為邏輯0發(fā)送端(驅(qū)動器)接收端(接收器)輸入(DI)輸出輸入輸出(RO)Y(A)Z(B)VA-VB110+0.2V1001-0.2V011.4.2RS-485接口標準3.RS-485接口標準的特點①采用差動發(fā)送/接收和雙絞線——共模抑制比高,抗干擾能力強②傳輸速率高,可達10Mb/s(傳輸15m),傳輸信號擺幅小(200mV)③傳輸距離長,不使用MODEM,采用雙絞線,傳輸距離為1.2km(100kb/s)④能實現(xiàn)多點對多點通信4.RS-485接口標準在多點對多點通信中的應(yīng)用——在一對平衡傳輸線的兩端配置終端電阻后,最多可實現(xiàn)32個驅(qū)動器和32個接收器共用同一傳輸線的多點對多點通信11.4.3RS-232C與RS-485的轉(zhuǎn)換發(fā)送端:將TXD發(fā)出的數(shù)據(jù)經(jīng)MAX485/491轉(zhuǎn)換為差動信號通過雙絞線送出接收端:將雙絞線傳來的差動信號經(jīng)MAX485/491轉(zhuǎn)換為單根數(shù)據(jù)信號由RXD接收進來11.5串行通信接口電路11.5.1串行通信接口的基本任務(wù)(1)實現(xiàn)數(shù)據(jù)格式化——異步:起止位的處理;同步:SYN等的處理(2)進行串-并轉(zhuǎn)換——發(fā)送:并串;接收:串并(3)進行錯誤檢測(4)提供符合RS-232C接口標準的信號線——遠程9根,近程3根(5)進行TTL與EIA邏輯關(guān)系及邏輯電平的轉(zhuǎn)換(6)進行數(shù)據(jù)傳輸速率的控制——選擇和控制波特率11.5.2串行通信接口電路的組成——可編程串行通信接口芯片(同步收/發(fā)器、異步收/發(fā)器)、波特率時鐘發(fā)生器、EIA與TTL轉(zhuǎn)換器、地址譯碼電路

常用串行通信接口芯片:16450、8250、16550、8251A11.6用戶擴展的串行通信接口8251A——支持異步起止式和同步面向字符的數(shù)據(jù)格式11.6.18251A的外部特性(28引腳)1.面向CPU的引腳(13)D07、CS、RD、WRC/D:端口選擇;=0,數(shù)據(jù)口;=1命令口或狀態(tài)口RESET:復(fù)位,高有效,復(fù)位后等待接收方式字2.面向MODEM的引腳(6)6根RS-232C標準信號線:TXD、RXD、DTR、DSR、RTS、CTS3.狀態(tài)及時鐘信號(7)

TXRDY/RXRDY——發(fā)送/接收準備好,高有效,引發(fā)中斷或供CPU查詢TXEMPTY——發(fā)送器空,高有效,半雙工方式用于傳輸方向切換SYNDET——SYN檢出,同步通信中表示接收端已收到同步字符TXC/RXC——發(fā)送/接收時鐘; CLK——工作時鐘11.6.28251A的編程模型1.內(nèi)部結(jié)構(gòu)發(fā)送器和接收器:串-并轉(zhuǎn)換;格式化;奇偶校驗;接收/發(fā)送讀/寫控制邏輯:方式命令/工作命令/狀態(tài)字/數(shù)據(jù)擴展8251A的地址:數(shù)據(jù)口308H,控制口/狀態(tài)口309H讀/寫控制邏輯數(shù)據(jù)總線緩沖器D0~D7CLKRDWR調(diào)制控制CSC/DRESETDTRCTSDSRRTS發(fā)送緩沖器發(fā)送控制接收緩沖器接收控制發(fā)送器接收器TxDTxEMPTYTxRDYTxCRxDSYNDETRxRDYRxC11.6.28251A的編程模型2.通信方式命令——指定8251A的通信方式及數(shù)據(jù)幀格式S1S0EPPENL1L0B1B0停止位奇偶校驗字符長度波特率因子00:同步01:110:1611:64異步00:5位01:6位10:7位11:8位0:無校驗01:奇校驗

11:偶校驗00:不用01:1位10:1.5位11:2位異步:停止位0:內(nèi)同步1:外同步

0:雙同步1:單同步同步:同步方式MOVDX,309HMOVAL,0DAHOUTDX,AL例:①異步通信,7位數(shù)據(jù)位,奇校驗,2位停止位,波特率因子16

②同步通信,字符長度8位,雙同步字符,內(nèi)同步,奇校驗MOVDX,309HMOVAL,1CHOUTDX,AL11.6.28251A的編程模型3.工作命令——控制串口內(nèi)部復(fù)位、發(fā)送、接收、清除錯誤標志等EHIRRTSERSBRKRxENDTRTxEN進入搜索方式內(nèi)部復(fù)位1:復(fù)位發(fā)送請求錯誤標志復(fù)位1:復(fù)位發(fā)中止符接收允許DTE準備好發(fā)送允許異步通信,允許發(fā)送和接收MOVDX,309HMOVAL,05HOUTDX,AL利用IR=1,對芯片進行內(nèi)部復(fù)位MOVDX,309HMOVAL,40H ;只要IR=1即可實現(xiàn)復(fù)位OUTDX,AL11.6.28251A的編程模型4.狀態(tài)字——向CPU提供何時能發(fā)送/接收及接收是否有錯誤的信息FE=1,格式錯,只用于異步方式,即停止位接收錯OE=1,溢出錯,溢出的字符丟失PE=1,奇偶校驗錯由ER=1的工作命令字復(fù)位DSRSYNDETFEOEPETXERXRDYTXRDYDCE就緒同步字符檢出格式錯溢出錯奇偶錯發(fā)送器空接收準備好發(fā)送準備好;發(fā)送一個數(shù)據(jù)([SI])MOVDX,309HL:INAL,DXANDAL,01HJZL ;TXRDY=0等待

MOVDX,308H ;TXRDY=1發(fā)送

MOVAL,[SI]OUTDX,AL;接收一個數(shù)據(jù)(存入[DI])MOVDX,309HL:INAL,DXTESTAL,38HJNZERR ;出錯轉(zhuǎn)出錯處理

ANDAL,02HJZL ;RXRDY=0等待

MOVDX,308H ;RXRDY=1接收

INAL,DXMOV[DI],AL11.6.38251A的初始化1.初始化內(nèi)容(空操作)、內(nèi)部復(fù)位、方式命令、工作命令2.初始化順序8251A的方式命令和工作命令寫入同一端口,且無特征位區(qū)分方式:按規(guī)定的順序?qū)懭?,?fù)位方式命令字工作命令字1(D61)工作命令字2……注:同步方式的初始化還要設(shè)置同步字符復(fù)位操作方式命令字同步?雙同步?同步字符工作命令字D6=1?同步字符YNNYYN對C/D=1寫異步方式下命令字寫入流程復(fù)位操作方式命令字工作命令字D6=1?YN例:異步通信,7位數(shù)據(jù)位,奇校驗,2位停止位,波特因子16,寫入方式字的程序段MOVDX,309HMOVAL,01H ;方式命令或工作命令OUTDX,ALMOVAL,40H ;內(nèi)部復(fù)位命令OUTDX,ALMOVAL,0DAH ;方式命令OUTDX,AL11.6.4基于8251A的串行通信接口設(shè)計——RS-232C標準例8.4

甲向乙發(fā)送2DH個字節(jié),異步方式,8位數(shù)據(jù),2位停止位,無校驗,波特率因子64,波特率4800b/s;查詢方式,零MODEM連接,8251A地址308H、309H硬件設(shè)計:甲、乙機方式命令:0CFH甲機發(fā)送工作命令:37H;乙機接收工作命令:14H波特率發(fā)生器甲CPU乙CPUEIA/TTL轉(zhuǎn)換EIA/TTL轉(zhuǎn)換8251ATxDRxDSGRxCTxC8251ATxDRxDSGRxCTxC波特率發(fā)生器8251A應(yīng)用的軟件編程——甲機發(fā)送程序DATA SEGMENT BUF_TDB45DUP(?)DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATASTART: MOVAX,DATA MOVDS,AX MOVDX,309H MOVAL,01H ;空操作

OUTDX,AL MOVAL,40H ;內(nèi)部復(fù)位

OUTDX,AL NOP MOVAL,0CFH ;方式命令

OUTDX,AL MOVAL,37H ;工作命令

OUTDX,AL

MOVSI,OFFSETBUF_T MOVCX,2DHL1: MOVDX,309H INAL,DX ANDAL,01H JZL1 ;TXRDY=0等待

MOVDX,308H ;TXRDY=1發(fā)送

MOVAL,[SI] OUTDX,AL INCSI DECCX JNZL1 ;未發(fā)完繼續(xù)

MOVAX,4C00H INT21HCODE ENDS ENDSTART8251A應(yīng)用的軟件編程——乙機接收程序DATA SEGMENT BUF_RDB45DUP(?)DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATABEGIN: MOVAX,DATA MOVDS,AX MOVDX,309H MOVAL,01H ;空操作

OUTDX,AL MOVAL,40H ;內(nèi)部復(fù)位

OUTDX,AL NOP MOVAL,0CFH ;方式命令

OUTDX,AL MOVAL,14H ;工作命令

OUTDX,AL

MOVDI,OFFSETBUF_R MOVCX,2DHL2: MOVDX,309H INAL,DX TESTAL,38H ;是否有錯誤

JNZERR ;轉(zhuǎn)出錯處理

ANDAL,02H JZL2 ;RXRDY=0等待

MOVDX,308H ;RXRDY=1接收

INAL,DX MOV[DI],AL INCDI LOOPL2 ;未收完繼續(xù) JMPEXITERR:(略) EXIT: MOVAX,4C00H INT21HCODE ENDS ENDBEGIN8.6.4基于8251A的串行通信接口設(shè)計——RS-485標準(略)例8.5

甲乙全雙工方式異步通信,零MODEM連接,雙方將各自鍵盤上的按鍵發(fā)給對方,按ESC鍵退出,7位數(shù)據(jù)位,1位停止位,無校驗,波特率因子16,8251A地址308H、309H硬件設(shè)計:ZCPU總線插槽OSCRXD8251ATXDTXCRXC82C54AOUT2CLK2GATE282C55APC612MAX491RODEREDIVCCGNDABYBYZAREDIDERO<<<<>>>>TXDVCCGNDRXDMAX491接線盒BYZAREDIDERO<<<<>>>>TXDVCCGNDRXDMAX491三總線RS-485全雙工異步串行通信程序流程圖開始結(jié)束8251A初始化查鍵盤有鍵按下?是ESC鍵?顯示發(fā)送字符發(fā)送準備好?發(fā)送1個字符是ESC?接收1個字符接收準備好?顯示接收字符返回DOSTXRDY=1?YNYNYYYNRXRDY=1?NNRS-485全雙工異步串行通信匯編語言程序DATA SEGMENT DATA51 EQU308H CTRL51 EQU309H ERROR_MESSDB‘DATAISBAD!’,0DH,0AH,’$’DATA ENDSCODE SEGMENT ASSUMECS:CODE,DS:DATABEGIN: MOVAX,DATA MOVDS,AX MOVDX,CTRL51 ;8251A初始化

XORAX,AX ;空操作LL: CALLCHAR_OUT MOVAL,40H ;8251A內(nèi)部復(fù)位

OUTDX,AL MOVAL,4AH ;8251A方式命令

OUTDX,AL MOVAL,37H ;8251A工作命令

OUTDX,ALKB_TR: MOVAL,0BH INT21H ;有按鍵? CMPAL,0 JERECEIVE ;沒按鍵,判能否接收

MOVAH,1 INT21H CMPAL,1BH ;按下ESC鍵? JZOVERRS-485全雙工異步串行通信匯編語言程序(續(xù))ERROR: LEADX,ERROR_MESS MOVAH,09H INT21H ;出錯提示

JMPKB_TROVER: MOVAX,4C00H INT21HCHAR_OUT PROCNEAR ;輸出并延時子程序

OUTDX,AL PUSHCX MOVCX,100 ;延時GG: LOOPGG POPCX RETCHAR_OUT ENDPCODE ENDS ENDBEGIN

MOVBL,ALTRANSMIT: MOVDX,CTRL51 INAL,DX TESTAL,01H ;TXRDY=1? JZTRANSMIT MOVDX,DATA51 MOVAL,BL OUTDX,AL ;發(fā)送1個數(shù)

JMPKB_TRRECEIVE: MOVDX,CTRL51 INAL,DX TESTAL,38H ;是否有錯

JNZERROR TESTAL,02H ;RXRDY=1? JZKB_TR MOVDX,DATA51 INAL,DX MOVDL,AL MOVAH,02H INT21H ;顯示字符

JMPKB_TR11.7系統(tǒng)配置的串行通信接口(略)16550——支持RS-232C標準;可實現(xiàn)異步全雙工通信;更強的中斷控制能力;內(nèi)置波特率時鐘發(fā)生器和16B的FIFO數(shù)據(jù)存儲器11.7.116550的外部引腳特性(40引腳)引腳名稱方向功能說明D0D7雙向系統(tǒng)與16550傳輸數(shù)據(jù)、命令和狀態(tài)的數(shù)據(jù)線A0A2輸入16550內(nèi)部寄存器尋址信號,可尋址8個端口CS0

CS1

CS2輸入3個片選信號全部有效才選中16550TXRDY輸出發(fā)送器準備好,用于申請DMA方式發(fā)送數(shù)據(jù)RXRDY輸出接收器準備好,用于申請DMA方式接收數(shù)據(jù)ADS輸入地址選通,低有效可鎖存地址信號RDRD輸入讀,2個信號中只要1個有效即可進行讀操作WRWR輸入寫,2個信號中只要1個有效即可進行寫操作DDIS輸出驅(qū)動器禁止,高有效用于禁止外部驅(qū)動器對系統(tǒng)總線的驅(qū)動MR輸入主復(fù)位,高有效,迫使16550進入復(fù)位狀態(tài)INTR輸出中斷請求,高有效SIN輸入串行數(shù)據(jù)輸入SOUT輸出串行數(shù)據(jù)輸出XIN輸入16550工作的基準時鐘RCLK輸入接收時鐘XOUT輸出是XIN的輸出,可作為其他定時信號BAUDOUT輸出波特率輸出信號,是XIN分頻后的輸出,常與RCLK相連OUT1

OUT2輸出用于用戶自定義功能(如開放/禁止中斷)DTRDSRRTSCTSRIDCDRS-232C接口標準的同名引腳11.7.216550的編程模型1.16550的內(nèi)部寄存器——11個可訪問的寄存器2.內(nèi)部寄存器的端口地址共用問題波特率除數(shù)寄存器訪問位DL(LCR的D7位)讀/寫——RBR與THR;IIR與FCRDL被訪問的寄存器A2A1A0COM1端口COM2端口0接收緩沖寄存器RBR(讀)與發(fā)送保持寄存器THR(寫)0003F8H2F8H0中斷允許寄存器IER0013F9H2F9H1波特率除數(shù)寄存器低字節(jié)DLL0003F8H2F8H1波特率除數(shù)寄存器高字節(jié)DLM0013F9H2F9H中斷識別寄存器IIR(讀)與FIFO控制寄存器FCR(寫)0103FAH2FAH線路控制寄存器LCR0113FBH2FBHMODEM控制寄存器MCR1003FCH2FCH線路狀態(tài)寄存器LSR1013FDH2FDHMODEM狀態(tài)寄存器MSR1103FEH2FEH暫存Scratch1113FFH2FFH11.7.216550的編程模型3.16550內(nèi)部寄存器的格式(1)線路控制寄存器LCR例:8位數(shù)據(jù)位,2位停止位,偶校驗,無附加位,無間隔發(fā)送,禁除數(shù)鎖存

MOVDX,3FBH MOVAL,1FH OUTDX,AL(2)線路狀態(tài)寄存器LSRDLSBSTPPESL1L0允許除數(shù)鎖存1:允許發(fā)送間隔1:SOUT上發(fā)間隔附加位1:有校驗類型1:偶校驗校驗允許1:允許停止位0:1位;1:1.5或2位數(shù)據(jù)長度0011:58位ERTETHBIFEPEOEDR1:FIFO中至少一個錯誤1:發(fā)送器空1:發(fā)送器就緒1:接收間隔1:幀錯誤1:奇偶錯1:超限錯1:FIFO中有數(shù)據(jù)例:收發(fā)處理的程序段START: MOVDX,3FDH INAL,DX TESTAL,1EH;有錯? JNZERR TESTAL,01H;接收? JNZRECEIVE TESTAL,20H;發(fā)送? JNZTRANS JMPSTART11.7.216550的編程模型3.16550內(nèi)部寄存器的格式(3)中斷允許寄存器IER例如:只允許接收和發(fā)送中斷——01H(4)中斷識別寄存器IIRID2ID1ID0PN無效中斷識別碼0:有未決中斷例如:檢查是否有接收中斷

MOVDX,3FAH INAL,DX CMPAL,04H JERECV_INT ……0000EMELETER不用,寫01:允許MODEM中斷1:允許接收器錯誤中斷1:允許發(fā)送器中斷1:允許接收器中斷

16550的中斷類型及優(yōu)先級ID2ID1ID0PN優(yōu)先級類型復(fù)位控制0001沒有中斷01101接收器錯誤(奇偶校驗、幀、超限)通過讀線路寄存器復(fù)位01002接收器準備好通過讀數(shù)據(jù)復(fù)位11002字符超時通過讀數(shù)據(jù)復(fù)位00103發(fā)送器準備好通過寫發(fā)送器復(fù)位00004MODEM狀態(tài)中斷通過讀MODEM狀態(tài)復(fù)位11.7.216550的編程模型3.16550內(nèi)部寄存器的格式(5)FIFO控制寄存器FCR——是否允許使用FIFO及FIFO產(chǎn)生中斷的深度(6)波特率除數(shù)寄存器——16位分頻系數(shù),分高字節(jié)DLM和低字節(jié)DLL 除數(shù)=CLK(波特率16)例如:16550對1.8432MHz進行分頻,要求波特率為19200b/s,則除數(shù)=6 MOVDX,3FBH MOVAL,80H ;除數(shù)寄存器訪問位DL=1 OUTDX,AL MOVDX,3F8H MOVAL,06H ;寫除數(shù)低字節(jié)

OUTDX,AL MOVDX,3F9H MOVAL,0 ;寫除數(shù)高字節(jié)

OUTDX,ALRT1RT000DMAXMITRSTRECVRSTEN接收器觸發(fā)器值00:FIFO中有1B01:4B;10:8B;11:14BDMA方式控制0:奇校驗;1:偶校驗1:復(fù)位發(fā)送器FIFO1:復(fù)位接收器FIFO1:允許FIFO11.7.216550的編程模型3.16550內(nèi)部寄存器的格式(7)數(shù)據(jù)寄存器THR和RBR——共用端口,8位;讀/寫區(qū)分(8)MODEM控制寄存器——設(shè)置對MODEM的控制信號和芯片自檢例如:讓16550自發(fā)

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論