微機(jī)原理-第九章-可編程接口芯片綜述課件_第1頁(yè)
微機(jī)原理-第九章-可編程接口芯片綜述課件_第2頁(yè)
微機(jī)原理-第九章-可編程接口芯片綜述課件_第3頁(yè)
微機(jī)原理-第九章-可編程接口芯片綜述課件_第4頁(yè)
微機(jī)原理-第九章-可編程接口芯片綜述課件_第5頁(yè)
已閱讀5頁(yè),還剩80頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

第九章常用可編程接口芯片可編程并行接口8255可編程計(jì)數(shù)器/定時(shí)器8253串行通訊接口19.6可編程并行接口82551.并行接口的組成輸出緩沖寄存器輸入緩沖寄存器控制寄存器狀態(tài)寄存器CPU輸入設(shè)備輸出設(shè)備譯碼器片選數(shù)據(jù)總線讀信號(hào)寫信號(hào)復(fù)位信號(hào)準(zhǔn)備好中斷請(qǐng)求并行輸出數(shù)據(jù)輸出準(zhǔn)備好輸出回答并行輸入數(shù)據(jù)輸入準(zhǔn)備好輸入回答29.6可編程并行接口82551.并行接口的組成輸出緩沖寄存器輸入緩沖寄存器控制寄存器狀態(tài)寄存器CPU輸入設(shè)備輸出設(shè)備譯碼器片選數(shù)據(jù)總線讀信號(hào)寫信號(hào)復(fù)位信號(hào)準(zhǔn)備好中斷請(qǐng)求并行輸出數(shù)據(jù)輸出準(zhǔn)備好輸出回答并行輸入數(shù)據(jù)輸入準(zhǔn)備好輸入回答并行接口電路通常包括以下幾部分:具有緩沖能力的輸入和輸出數(shù)據(jù)寄存器可供CPU訪問(wèn)的控制及狀態(tài)寄存器片選和內(nèi)部控制邏輯電路與外設(shè)進(jìn)行數(shù)據(jù)交換的控制與聯(lián)絡(luò)信號(hào)線用中斷方式傳送數(shù)據(jù)的相關(guān)中斷控制電路39.6可編程并行接口82551.并行接口的組成輸出緩沖寄存器輸入緩沖寄存器控制寄存器狀態(tài)寄存器CPU輸入設(shè)備輸出設(shè)備譯碼器片選數(shù)據(jù)總線讀信號(hào)寫信號(hào)復(fù)位信號(hào)準(zhǔn)備好中斷請(qǐng)求并行輸出數(shù)據(jù)輸出準(zhǔn)備好輸出回答并行輸入數(shù)據(jù)輸入準(zhǔn)備好輸入回答并行接口電路通常包括以下幾部分:具有緩沖能力的輸入和輸出數(shù)據(jù)寄存器可供CPU訪問(wèn)的控制及狀態(tài)寄存器片選和內(nèi)部控制邏輯電路與外設(shè)進(jìn)行數(shù)據(jù)交換的控制與聯(lián)絡(luò)信號(hào)線用中斷方式傳送數(shù)據(jù)的相關(guān)中斷控制電路輸入過(guò)程:外設(shè)把數(shù)據(jù)傳送給接口,并發(fā)出“輸入準(zhǔn)備好”信號(hào);接口把數(shù)據(jù)接收到輸入緩沖寄存器,然后使“輸入回答”信號(hào)線成為高電平,作為對(duì)外設(shè)的響應(yīng),以阻止外設(shè)輸入新的數(shù)據(jù);外設(shè)接收到此信號(hào),便撤除數(shù)據(jù)和“輸入準(zhǔn)備好”信號(hào);同時(shí)接口在狀態(tài)寄存器中將“輸入緩沖器滿”狀態(tài)位置“1”,并向CPU發(fā)出中斷請(qǐng)求信號(hào);CPU查詢到接口的“輸入緩沖器滿”狀態(tài)或響應(yīng)接口的中斷后,用IN指令讀取接口中的數(shù)據(jù);CPU取走數(shù)據(jù)后,接口自動(dòng)將“輸入緩沖器滿”狀態(tài)位清“0”,同時(shí)將“輸入回答”信號(hào)線成為低電平,通知外設(shè)可輸入下一個(gè)數(shù)據(jù),開(kāi)始下一輸入過(guò)程。輸出過(guò)程當(dāng)外設(shè)從接口取走一個(gè)數(shù)據(jù)后,便向接口發(fā)一個(gè)“輸出回答”信號(hào);“輸出回答”信號(hào)將接口的狀態(tài)寄存器中“輸出緩沖器空”位置“1”,以供CPU查詢,或接口向CPU發(fā)中斷請(qǐng)求信號(hào);CPU查詢到“輸出緩沖器空”有效或接收到中斷請(qǐng)求后,便用OUT指令向接口輸出一個(gè)數(shù)據(jù);數(shù)據(jù)進(jìn)入接口的輸出緩沖器中后,接口自動(dòng)將“輸出緩沖器空”位清“0”,同時(shí)向外設(shè)發(fā)“輸出準(zhǔn)備好”信號(hào),通知外設(shè)取數(shù)據(jù);開(kāi)始下一個(gè)數(shù)據(jù)輸出過(guò)程。42.8255A的組成與接口信號(hào)數(shù)據(jù)總線緩沖器讀/寫控制邏輯A組控制B組控制D7~D0RDWRA1A0RESETCS與CPU接口8位內(nèi)部數(shù)據(jù)總線A組端口A(8)I/OPA7~PA0A組端口C上半部(4)I/OPC7~PC4B組端口C下半部(4)I/OPC3~PC0B組端口B(8)I/OPB7~PB0內(nèi)部邏輯外設(shè)接口結(jié)構(gòu)主要分四大部分52.8255A的組成與接口信號(hào)數(shù)據(jù)總線緩沖器讀/寫控制邏輯A組控制B組控制D7~D0RDWRA1A0RESETCS與CPU接口8位內(nèi)部數(shù)據(jù)總線A組端口A(8)I/OPA7~PA0A組端口C上半部(4)I/OPC7~PC4B組端口C下半部(4)I/OPC3~PC0B組端口B(8)I/OPB7~PB0內(nèi)部邏輯外設(shè)接口結(jié)構(gòu)主要分四大部分?jǐn)?shù)據(jù)總線緩沖器:雙向三態(tài)8位緩沖器,可直接與系統(tǒng)數(shù)據(jù)總線相連讀/寫控制邏輯:完成內(nèi)部端口選擇和讀寫控制62.8255A的組成與接口信號(hào)數(shù)據(jù)總線緩沖器讀/寫控制邏輯A組控制B組控制D7~D0RDWRA1A0RESETCS與CPU接口8位內(nèi)部數(shù)據(jù)總線A組端口A(8)I/OPA7~PA0A組端口C上半部(4)I/OPC7~PC4B組端口C下半部(4)I/OPC3~PC0B組端口B(8)I/OPB7~PB0內(nèi)部邏輯外設(shè)接口結(jié)構(gòu)主要分四大部分I/O端口:A口、B口、C口。它們都可編程設(shè)定為輸入/輸出,具有鎖存功能。通常A、B口作為I/O數(shù)據(jù)端口;C口分成兩個(gè)四位端口,分別與A、B配合,用作控制或狀態(tài)信號(hào)A組和B組控制模塊:8255A有三個(gè)8位I/O端口,即A口,B口,C口,他們分成A、B兩組進(jìn)行控制。A組控制模塊:管理A口和C口的高4位(PC7~PC4)B組控制模塊:管理B口和C口的低4位(PC3~PC0)78255A的外部引腳PA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB28255A4039383736353433323130292827262524232221PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB31234567891011121314151617181920面向I/O設(shè)備的信號(hào)線PA7~PA0

:A口輸入/輸出數(shù)據(jù)線;PB7~PB0:B口輸入/輸出數(shù)據(jù)線;PC7~PC0:C口輸入/輸出數(shù)據(jù)線。88255A的外部引腳PA3PA2PA1PA0RDCSGNDA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB28255A4039383736353433323130292827262524232221PA4PA5PA6PA7WRRESETD0D1D2D3D4D5D6D7VCCPB7PB6PB5PB4PB31234567891011121314151617181920面向I/O設(shè)備的信號(hào)線PA7~PA0

:A口輸入/輸出數(shù)據(jù)線;PB7~PB0:B口輸入/輸出數(shù)據(jù)線;PC7~PC0:C口輸入/輸出數(shù)據(jù)線。面向系統(tǒng)的信號(hào)線D7~D0

:雙向數(shù)據(jù)線,與CPU交換信息(數(shù)據(jù)、命令)CS:

片選信號(hào),當(dāng)CS=0,選中該8255AA1、A0

:端口選擇信號(hào)RD:讀信號(hào),低電平有效WR:寫信號(hào),低電平有效RESET:復(fù)位信號(hào),高電平有效輸入有效時(shí),使內(nèi)部寄存器清0,3個(gè)數(shù)據(jù)端口自動(dòng)設(shè)為輸入98255A端口編址與讀寫操作A1A0RDWRCS操作00010從A口讀取數(shù)據(jù)01010從B口讀取數(shù)據(jù)10010從C口讀取數(shù)據(jù)00100向A口寫入數(shù)據(jù)01100向B口寫入數(shù)據(jù)10100向C口寫入數(shù)據(jù)11100向控制口寫入命令字11010非法條件××110總線懸浮××××1總線懸浮8255A共有四個(gè)端口地址:A、B、C和控制口103.8255A的控制字方式選擇控制字C口I/O(下半部)1-輸入0-輸出00-方式001-方式11×-方式21-有效B口I/OB組工作方式C口I/O(上半部)A口I/OA組工作方式特征D0D1D2D3D4D5D6D70-方式01-方式11-輸入0-輸出有三種工作方式:方式0-基本輸入輸出方式1-選通輸入輸出方式2-雙向傳送端口A有方式0、1、2三種端口B有方式0和1端口C只能工作于方式011C口按位置0/置1控制字寫入內(nèi)容寫入位編碼×××0D0D1D2D3D4D5D6D7D3D2D1C口000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC71-置10-置0特征位0有效12C口按位置0/置1控制字寫入內(nèi)容寫入位編碼×××0D0D1D2D3D4D5D6D7D3D2D1C口000PC0001PC1010PC2011PC3100PC4101PC5110PC6111PC71-置10-置0特征位0有效端口C8位中的任一位,可用一條輸出指令來(lái)置位或復(fù)位(其它位不變)。C端口的按位置位/復(fù)位控制字須跟在方式選擇控制字之后,即使僅使用該功能,也應(yīng)先選送一方式控制字。13例:要求設(shè)定8255A的A口為方式1,輸入,C口高4位為輸出;B口指定為0方式,輸出,

C口低4位為輸入,寫出初始化程序段。

(8255A的端口地址300H,301H,302H,303H)

程序段:MOVDX,303H;8255A的控制口地址MOVAL,0B1H;工作方式控制字OUTDX,AL;送到控制口14例:要求把C口的PC2引腳置‘1’(高電平)。

程序段為:MOVDX,303H;8255A控制口地址MOVAL,05H;使PC2=1控制字OUTDX,AL;送控制口C口的按位置位/復(fù)位控制字雖然是對(duì)C口進(jìn)行操作,但控制字必須寫入控制口。154.8255A的工作方式方式0工作特點(diǎn):無(wú)條件輸入/輸出,端口與外設(shè)之間不需要聯(lián)絡(luò)信號(hào),A口、B口和C口的高4位與低4位可分別設(shè)置成輸入或輸出;不能提供中斷信號(hào);方式0也可作為查詢式輸入或輸出的接口電路,此時(shí)端口A和B可分別作為一個(gè)數(shù)據(jù)端口,而取C端口的某些位作為這兩個(gè)數(shù)據(jù)端口的控制和狀態(tài)信息。16例:為某系統(tǒng)配置一并行打印機(jī)接口,通過(guò)接口,CPU用查詢方式,把存放在200H單元開(kāi)始的256個(gè)字符(ASCII碼)送去打印。CPUPA0~7PC7PC2GNDDATA1~8STBBUSYGND8255A打印機(jī)PA口輸出,用作8位打印數(shù)據(jù),工作于0方式;PC7輸出,它產(chǎn)生一個(gè)負(fù)脈沖,作為數(shù)據(jù)選通信號(hào)STB,將數(shù)據(jù)打入打印機(jī)緩沖器;PC2輸入,接收打印機(jī)的忙信號(hào)(BUSY)。工作過(guò)程:CPU查詢BUSY,若BUSY=1,表示打印機(jī)忙,則等待,當(dāng)BUSY=0(空閑),CPU輸出數(shù)據(jù)到接口;CPU發(fā)出數(shù)據(jù)選通信號(hào)STB,將數(shù)據(jù)送入打印機(jī)緩沖器;打印機(jī)接收到數(shù)據(jù)后,發(fā)出忙信號(hào)(BUSY=1),并處理數(shù)據(jù),處理完畢后,撤銷忙信號(hào)(BUSY=0)。17驅(qū)動(dòng)程序:MOVDX,303H;8255A命令口地址MOVAL,10000001B;工作方式字,0方式,;A口輸出,C口高4位輸出,C口低4位輸入OUTDX,AL;

送入控制口MOVAL,00001111B;PC7位為高,STB=1OUTDX,AL;送入控制口MOVSI,200H;打印字符的內(nèi)存首地址MOVCX,0FFH;打印字符個(gè)數(shù),F(xiàn)FH=25518L:MOVDX,302H;C口地址INAL,DX;查BUSY=0?(PC2=0)ANDAL,04HJNZL;忙(PC2=1),等待MOVDX,300H;A口地址MOVAL,[SI];從內(nèi)存取數(shù)OUTDX,AL;從A口輸出一個(gè)數(shù)據(jù)MOVDX,303H;8255命令口MOVAL,00001110B;置STB為低(PC7=0)19OUTDX,ALNOP;負(fù)脈沖寬度(延時(shí))NOPMOVAL,00001111B;置STB為高(PC7=1)OUTDX,ALINCSI;修改指針DECCX;修改計(jì)數(shù)JNZL;未傳完,繼續(xù)HLT;已完,暫停20方式1工作特點(diǎn):選通型輸入/輸出,設(shè)置了聯(lián)絡(luò)信號(hào)線和中斷請(qǐng)求信號(hào);A口、B口為數(shù)據(jù)口,由程序設(shè)定為輸入或輸出;C口作為聯(lián)絡(luò)口,PC3~PC5或PC3、PC6、PC7與A為一組,PC0~PC2與B為一組,其余兩位由程序設(shè)定為輸入或輸出;各聯(lián)絡(luò)信號(hào)之間有固定時(shí)序關(guān)系;可用查詢方式或中斷方式傳送數(shù)據(jù)。21方式1輸入引腳功能定義端口A方式1端口A輸入PC7,6I/O控制0輸出1輸入A組方式1的控制字×××1/01101D0D1D2D3D4D5D6D7INTRASTBA方式1輸入(A口)PC4PC5PC3(PC4)PA7~0PC7,6IBFAI/ORDINTEA222方式1輸入引腳功能定義端口A方式1端口A輸入PC7,6I/O控制0輸出1輸入A組方式1的控制字×××1/01101D0D1D2D3D4D5D6D7INTRASTBA方式1輸入(A口)PC4PC5PC3(PC4)PA7~0PC7,6IBFAI/ORDINTEA2A組工作在方式1的輸入:PA7~PA0:輸入數(shù)據(jù)線;PC4:輸入,作選通信號(hào)線STBA;PC5:輸出,作輸入緩沖器滿信號(hào)IBFA;PC3:輸出,作中斷請(qǐng)求信號(hào)線INTRA;PC7,PC6:空閑,可定義為輸入或輸出。23INTRBSTBB方式1輸入(B口)PC2PC1PC0(PC2)PB7~0IBFBRDINTEB端口B方式1端口B輸入B組方式1的控制字×11××××1D0D1D2D3D4D5D6D7B組工作在方式1的輸入:PB7~PB0:輸入數(shù)據(jù)線;PC2:輸入,作選通信號(hào)線STBB;PC1:輸出,作輸入緩沖器滿信號(hào)IBFB;PC0:輸出,作中斷請(qǐng)求信號(hào)線INTRB;24INTRBSTBB方式1輸入(B口)PC2PC1PC0(PC2)PB7~0IBFBRDINTEB端口B方式1端口B輸入B組方式1的控制字×11××××1D0D1D2D3D4D5D6D7B組工作在方式1的輸入:PB7~PB0:輸入數(shù)據(jù)線;PC2:輸入,作選通信號(hào)線STBB;PC1:輸出,作輸入緩沖器滿信號(hào)IBFB;PC0:輸出,作中斷請(qǐng)求信號(hào)線INTRB;STB(Strobe):選通信號(hào),低電平有效,輸入。STB有效時(shí)將外設(shè)數(shù)據(jù)輸入8255A的相應(yīng)的輸入緩沖器中鎖存;IBF(InputBufferFull):輸入緩沖器滿信號(hào),高電平有效,輸出。IBF=1,通知外設(shè)暫緩輸入下一數(shù)據(jù)。當(dāng)CPU查詢IBF=1時(shí),才能從A口或B口讀取輸入的數(shù)據(jù);INTR(InterruptRequest):中斷請(qǐng)求信號(hào),高電平有效,輸出,在中斷允許(INTE=1)條件下,當(dāng)8255A接收到一個(gè)端口數(shù)據(jù)(IBF=1)后,發(fā)出中斷請(qǐng)求;INTE(InterruptEnable):中斷允許。INTE=1,允許中斷;INTE=0,禁止中斷。INTE受C口復(fù)位/置位字控制:當(dāng)PC4=1時(shí),INTEA=1,A口允許中斷;當(dāng)PC2=1時(shí),INTEB=1,B口允許中斷。25方式1輸入的工作時(shí)序tSTIBFRDINTR來(lái)自外設(shè)的輸入數(shù)據(jù)tSIBtSITtRIBtPHtRITSTBtPS26方式1輸入的工作時(shí)序tSTIBFRDINTR來(lái)自外設(shè)的輸入數(shù)據(jù)tSIBtSITtRIBtPHtRITSTBtPS外設(shè)輸入數(shù)據(jù),并發(fā)出選通信號(hào)STB(低電平),將數(shù)據(jù)送入輸入緩沖器中鎖存;8255A接收數(shù)據(jù),IBF變成高電平,表示輸入緩沖器滿,禁止輸入新的數(shù)據(jù);在STB的上升沿之后,若中斷允許(INTE=1),INTR信號(hào)有效,向CPU發(fā)出中斷請(qǐng)求;CPU響應(yīng)中斷請(qǐng)求,用IN指令讀入數(shù)據(jù);若CPU采用查詢方式,則查詢INTR位或IBF位來(lái)控制讀數(shù)據(jù);CPU執(zhí)行讀操作,RD的下降沿使INTR復(fù)位,RD的上升沿使IBF變低,為輸入下一個(gè)數(shù)據(jù)作準(zhǔn)備。27端口A方式1端口A輸出PC5,4I/O控制0輸出1輸入A組方式1的控制字×××1/00101D0D1D2D3D4D5D6D7INTRAOBFA方式1輸出(A口)PC7PC6PC3(PC6)PA7~0PC5,4ACKAI/OWRINTEA2方式1的輸出引腳的定義A組工作在方式1的輸出:PA7~PA0:輸出數(shù)據(jù)線;PC7:輸出,輸出緩沖器滿信號(hào)OBFA;PC6:輸入,外設(shè)應(yīng)答信號(hào)ACKA;PC3:輸出,作中斷請(qǐng)求信號(hào)線INTRA;PC5,PC4:空閑,可定義為輸入或輸出。28INTRBOBFB方式1輸出(B口)PC1PC2PC0(PC2)PB7~0ACKBWRINTEB端口B方式1端口B輸出B組方式1的控制字×01××××1D0D1D2D3D4D5D6D7B組工作在方式1的輸出:PB7~PB0:輸出數(shù)據(jù)線;PC1:輸出,輸出緩沖器滿信號(hào)OBFB;PC2:輸入,外設(shè)應(yīng)答信號(hào)ACKB;PC0:輸出,作中斷請(qǐng)求信號(hào)線INTRB。29INTRBOBFB方式1輸出(B口)PC1PC2PC0(PC2)PB7~0ACKBWRINTEB端口B方式1端口B輸出B組方式1的控制字×01××××1D0D1D2D3D4D5D6D7B組工作在方式1的輸出:PB7~PB0:輸出數(shù)據(jù)線;PC1:輸出,輸出緩沖器滿信號(hào)OBFB;PC2:輸入,外設(shè)應(yīng)答信號(hào)ACKB;PC0:輸出,作中斷請(qǐng)求信號(hào)線INTRB。OBF(OutputBufferFull)輸出緩沖器滿信號(hào)。輸出,低電平有效,它有效表示輸出緩沖內(nèi)有數(shù)據(jù),通知外設(shè)取走數(shù)據(jù)ACK(Acknowledge)外設(shè)應(yīng)答信號(hào)。輸入,低電平有效。當(dāng)ACK有效時(shí),表示數(shù)據(jù)已被外設(shè)取走,并清OBF,使之為高;INTR中斷請(qǐng)求信號(hào),當(dāng)滿足INTE=1,且OBF=1條件時(shí),發(fā)中斷請(qǐng)求;INTE中斷允許位,受C口的置0/置1命令字控制;PC6=1時(shí),INTEA=1,A口允許中斷PC2=1時(shí),INTEB=1,B口允許中斷30方式1的輸出時(shí)序tAOBtWOBtWITtAITtAKtWB輸出ACKINTROBFWRCPU向8255A寫一個(gè)數(shù)據(jù)時(shí),WR的上升沿使OBF有效,表示輸出緩沖器滿,告之外設(shè)可取數(shù)據(jù)。WR還使INTR變低,封鎖中斷請(qǐng)求;外設(shè)取走數(shù)據(jù)后,用ACK回答8255A,表示數(shù)據(jù)已收到;ACK的下降沿使OBF成為高電平。在中斷允許(INTE=1)條件下,ACK的上升沿使INTR成為高電平,產(chǎn)生中斷請(qǐng)求;CPU響應(yīng)中斷,執(zhí)行OUT指令,向8255A輸出下一個(gè)數(shù)據(jù)。CPU也可查詢INTR或OBF位來(lái)控制輸出數(shù)據(jù)。31方式1的狀態(tài)字狀態(tài)字的意義8255A狀態(tài)字為查詢方式提供了狀態(tài)標(biāo)志位:IBF、OBF、INTR的狀況。8255A不能直接提供中斷矢量,在采用中斷方式時(shí),CPU可通過(guò)讀狀態(tài)字來(lái)確定中斷源。32方式1狀態(tài)字的格式B組狀態(tài)A組狀態(tài)INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7方式1輸入狀態(tài)字方式1輸出狀態(tài)字B組狀態(tài)A組狀態(tài)INTRBOBFBINTEBINTRAI/OI/OINTEAOBFAD0D1D2D3D4D5D6D733方式1狀態(tài)字的格式B組狀態(tài)A組狀態(tài)INTRBIBFBINTEBINTRAINTEAIBFAI/OI/OD0D1D2D3D4D5D6D7方式1輸入狀態(tài)字方式1輸出狀態(tài)字B組狀態(tài)A組狀態(tài)INTRBOBFBINTEBINTRAI/OI/OINTEAOBFAD0D1D2D3D4D5D6D7注意:狀態(tài)字通過(guò)讀C口獲得;狀態(tài)字的各位與其C口引腳定義不完全一樣;查詢狀態(tài)字時(shí),一般查詢INTR是否置位,也可查詢IBF和OBF位。34例:雙機(jī)并行接口設(shè)計(jì)要求:甲、乙兩機(jī)之間傳送1K字節(jié)數(shù)據(jù),甲發(fā),乙收,甲機(jī)的8255A采用方式1工作,乙機(jī)一側(cè)的8255A采用0方式工作,兩機(jī)的CPU與接口之間都采用查詢方式交換數(shù)據(jù)。8255APA7~0PC7PC6PC3PC5~0PB7~08255APA7~0PC4PC0PC7~5PC3~1PB7~0未用CPUCPU乙機(jī)(接收)0方式甲機(jī)(發(fā)送)1方式OBFACK甲機(jī)8255A是方式1,A口輸出,作發(fā)送數(shù)據(jù)用;PC7和PC6固定作聯(lián)絡(luò)線OBF和ACK;乙機(jī)的8255A為方式0接收,定義A口輸入,接收數(shù)據(jù);選PC4輸入,接收OBF信號(hào);PC0輸出,用作發(fā)送ACK信號(hào)。35編程甲機(jī)發(fā)送程序: MOVDX,303H;8255A命令口 MOVAL,10100000B;A口方式1,輸出 OUTDX,ALMOVAL,00001101B;置中斷允許INTEA=1OUTDX,AL;PC6=1MOVAX,030H;發(fā)送數(shù)據(jù)內(nèi)存首址MOVES,AXMOVBX,00HMOVCX,3FFH;發(fā)送字節(jié)數(shù)1KMOVAL,ES:[BX]

;取第一個(gè)數(shù)

MOVDX,300H

;A口地址OUTDX,AL

;向A口寫一個(gè)數(shù)36INCBX;修改指針,指向下一單元DECCX;字節(jié)數(shù)減1L:MOVDX,302H;8255A的C口(狀態(tài)口)INAL,DX;查發(fā)送請(qǐng)求INTRA=1?ANDAL,08H

;PC3=1?JZL;若無(wú)中斷請(qǐng)求,則等待MOVDX,300H;A口地址MOVAL,ES:[BX];從內(nèi)存取數(shù)OUTDX,AL;從A口輸出數(shù)據(jù)37INCBX;修改指針DECCX;計(jì)數(shù)器減1JNZL;未傳送完,繼續(xù)MOVAX,4C00H;傳送完,退出INT21H;返回DOS程序中,也可查詢OBFA(PC7)的狀態(tài)INAL,DX

;查OBFA=1?ANDAL,80H

;PC7=1?JZL

;若OBFA=0,則等待38乙機(jī)接收程序:MOVDX,303H;命令口MOVAL,10011000B;方式0,C口高4位輸入OUTDX,AL;C口低4位輸出MOVAL,00000001B;置ACK=1(PC0=1)OUTDX,ALMOVAX,040H;接收數(shù)據(jù)內(nèi)存區(qū)首址MOVES,AXMOVBX,00H39MOVCX,3FFH;接收字節(jié)數(shù)L1:MOVDX,302H;C口地址INAL,DX;查甲機(jī)的OBF=0?(PC4=0)ANDAL,10H;取PC4位值JNZL1;無(wú)數(shù)據(jù)來(lái),等待MOVDX,300H;A口地址INAL,DX;從A口讀入一個(gè)數(shù)MOVES:[BX],AL;存入內(nèi)存40MOVDX,303H;命令口MOVAL,0;產(chǎn)生ACK信號(hào),OUTDX,AL;發(fā)給甲機(jī)NOP;延時(shí),NOP;形成一定寬度負(fù)脈沖MOVAL,01H;使PC0置1,OUTDX,AL;形成ACK的上升沿INCBXDECCXJNZL1;未接收完,繼續(xù)MOVAX,4C00H;完畢,返回DOSINT21H41方式2特點(diǎn):方式2為雙向選通輸入/輸出方式;只有A口可工作在方式2;一次初始化可指定PA口既作輸出口又作輸入口;在方式2下可采用中斷方式和查詢方式與CPU交換數(shù)據(jù);A口在方式2時(shí),B組(PB7~PB0,PC2~PC0)可選擇為方式0和方式1工作。該工作方式,使外設(shè)可在單一的8位數(shù)據(jù)總線上既能發(fā)送,又能接收數(shù)據(jù)(雙向總線I/O)。42引腳定義B組方式0-方式01-方式1A口雙向方式B口I/O0-輸出1-輸入PC2~0I/O0-輸出1-輸入1/01/01/0×××11D0D1D2D3D4D5D6D7PC3PC7PC5PC4PC6INTE1(PC6)INTE2(PC4)PA7~0STBIBFINTROBFACKWRRD8PC2~PC03I/O各引腳的意義與方式1相同,A口方式2的I/O共用一個(gè)INTR信號(hào),它由PC3提供,既為可作為輸入中斷請(qǐng)求,也可作輸出中斷請(qǐng)求;INTE1:輸出中斷允許,由PC6設(shè)定,INTE2:輸入中斷允許,由PC4設(shè)定。43方式2的工作時(shí)序數(shù)據(jù)從CPU到8255AtOBtWOBtSTtSIBtKDtADtPStPHtRIB數(shù)據(jù)從8255A到CPU數(shù)據(jù)從8255A到外設(shè)數(shù)據(jù)從外設(shè)到8255A外設(shè)數(shù)據(jù)線WROBFINTRACKSTBIBFRD輸出過(guò)程:由CPU執(zhí)行對(duì)A口的輸出指令而引發(fā)。WR信號(hào)使INTR信號(hào)無(wú)效,WR的上升沿使OBF有效,通知外設(shè)取數(shù)據(jù),外設(shè)取走數(shù)據(jù)后向8255A發(fā)應(yīng)答信號(hào)ACK,ACK有效使OBF復(fù)位,可開(kāi)始下一個(gè)數(shù)據(jù)的輸出。由外設(shè)發(fā)選通信號(hào)STB引發(fā),它將輸入數(shù)據(jù)鎖存到A口的輸入鎖存器中,IBF變?yōu)楦唠娖健TB信號(hào)結(jié)束時(shí),中斷請(qǐng)求信號(hào)INTR變?yōu)楦唠娖?。CPU響應(yīng)中斷進(jìn)行讀操作,RD有效,將數(shù)據(jù)從A口讀到CPU中,IBF和INTR變?yōu)榈碗娖?結(jié)束一次數(shù)據(jù)輸入過(guò)程。44方式2的狀態(tài)字方式2的狀態(tài)字通過(guò)讀C口得到,格式為:D7~D3屬于A組,反映A口的工作狀態(tài);D2~D0屬于B組,反映B口的工作狀態(tài)。INTRAINTE2IBFAINTE1OBFAD0D1D2D3D4D5D6D745應(yīng)用舉例-中斷方式的雙機(jī)并行接口設(shè)計(jì)要求:主從兩個(gè)微機(jī)進(jìn)行并行傳送,共傳送256個(gè)字節(jié)。主機(jī)的8255A采用方式2,并且用中斷方式傳送數(shù)據(jù)。從機(jī)的8255A工作在0方式,采用查詢方式傳送數(shù)據(jù)。PA7~0PC3

PC7PC4PC6PC5PB7~0PC2~0PA7~0

PB7~0PC1PC7PC6PC5PC2~0IR0INTAIR2INTIR7OBFSTBACKIBF未用到從機(jī)系統(tǒng)總線到主機(jī)8259A

主機(jī)8255A

從機(jī)8255A方式2的接口框圖INTR主機(jī)的8255A,PA口作雙向傳送,它的INTR接到8259A的IR2上。從機(jī)的8255A,PA口輸出,PB口輸入46軟件設(shè)計(jì):;8255A的初始化movdx,303h;8255A的控制口moval,c0h;方式字,A口為方式2outdx,almoval,09h;置位PC4,設(shè)置INTE2=1outdx,al;輸入中斷允許moval,0dh;置位PC0,設(shè)置INTE1=1outdx,al;輸出中斷允許movsi,300h;發(fā)送數(shù)據(jù)區(qū)首地址movdi,410h;接收數(shù)據(jù)區(qū)首地址47movcx,0ffh;發(fā)送與接收的字節(jié)數(shù)Again:sti;開(kāi)中斷Hlt;等待中斷cli;關(guān)中斷deccx;字節(jié)數(shù)-1jnzagain;未完,繼續(xù);中斷服務(wù)程序t-rprocfarmovdx,303h;8255A的口地址moval,08h;復(fù)位PC4,使INTE2=0,outdx,al;禁止輸入中斷48moval,0ch;復(fù)位PC6,使INTE1=0,

outdx,al;禁止輸出中斷cli;關(guān)中斷movdx,302h;8255A的狀態(tài)口inal,dx;查中斷源,讀狀態(tài)字movah,al;保存狀態(tài)字andal,20h;檢查狀態(tài)位IBF=1,是輸入?jzoutp;不是,則跳到程序段outpinp:movdx,300h;是,則從A口讀數(shù)據(jù)mov[di],al;存入內(nèi)存區(qū)49incdi;內(nèi)存地址+1jmpreturn;跳至returnoutp:movdx,300h;A口地址,向A口寫數(shù)moval,[si];從內(nèi)存取數(shù)outdx,al;輸出incsi;內(nèi)存地址+1return:movdx,303h;8255A的控制口地址moval,0dh;允許輸出中斷outdx,al50moval,09h;允許輸入中斷outdx,almoval,62h;向8259A發(fā)中斷結(jié)束字OCW3out20h,aliret;中斷返回t-pendp519.7可編程定時(shí)器/計(jì)數(shù)器8253/8254實(shí)現(xiàn)定時(shí)或延時(shí)的三種主要方法:軟件定時(shí)、不可編程的硬件定時(shí)、可編程的硬件定時(shí)器 軟件定時(shí)是讓機(jī)器執(zhí)行一個(gè)程序段,這個(gè)程序段本身沒(méi)有具體的目的,通過(guò)挑選指令和安排循環(huán)次數(shù)可準(zhǔn)確實(shí)現(xiàn)。該方法占用CPU的時(shí)間。 不可編程的硬件定時(shí)可采用小規(guī)模集成電路器件(如:555),外接定時(shí)部件(電阻和電容)構(gòu)成。定時(shí)值及定時(shí)范圍不能由軟件控制。 可編程的硬件定時(shí)的定時(shí)值及定時(shí)范圍不能由軟件控制,能夠滿足不同的定時(shí)和計(jì)數(shù)要求。521.8254的內(nèi)部結(jié)構(gòu)與工作原理圖8254的內(nèi)部結(jié)構(gòu)計(jì)數(shù)器0計(jì)數(shù)器1讀/寫邏輯控制字寄存器數(shù)據(jù)總線緩沖器計(jì)數(shù)器2CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2內(nèi)部總線531.8254的內(nèi)部結(jié)構(gòu)與工作原理圖8254的內(nèi)部結(jié)構(gòu)計(jì)數(shù)器0計(jì)數(shù)器1讀/寫邏輯控制字寄存器數(shù)據(jù)總線緩沖器計(jì)數(shù)器2CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2內(nèi)部總線讀/寫邏輯接受系統(tǒng)總線的輸入信號(hào),轉(zhuǎn)換成8253內(nèi)部操作的多種控制信號(hào);選擇讀/寫操作的計(jì)數(shù)器或控制寄存器;決定內(nèi)部總線上數(shù)據(jù)傳送方向;541.8254的內(nèi)部結(jié)構(gòu)與工作原理圖8254的內(nèi)部結(jié)構(gòu)計(jì)數(shù)器0計(jì)數(shù)器1讀/寫邏輯控制字寄存器數(shù)據(jù)總線緩沖器計(jì)數(shù)器2CLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT2內(nèi)部總線數(shù)據(jù)總線緩沖器三態(tài),雙向8位寄存器,它有三個(gè)基本功能:CPU通過(guò)它向8253/8254寫入工作命令字;向某一計(jì)數(shù)器寫入初值;從某一計(jì)數(shù)器讀取當(dāng)前計(jì)數(shù)值;控制字寄存器 由CPU寫入控制字,決定計(jì)數(shù)器的工作方式,規(guī)定讀/寫方法??刂萍拇嫫髦荒軐懭耄荒茏x出。計(jì)數(shù)器8253/4有三個(gè)獨(dú)立且結(jié)構(gòu)一樣的計(jì)數(shù)器,每個(gè)計(jì)數(shù)器對(duì)外有三個(gè)引腳:GATE:門控信號(hào)輸入端CLK:計(jì)數(shù)脈沖輸入端OUT:信號(hào)輸出端55GATEiCLKi內(nèi)部總線計(jì)數(shù)初值寄存器16位減1計(jì)數(shù)器輸出鎖存器OUTi計(jì)數(shù)器結(jié)構(gòu)示意圖56GATEiCLKi內(nèi)部總線計(jì)數(shù)初值寄存器16位減1計(jì)數(shù)器輸出鎖存器OUTi計(jì)數(shù)器結(jié)構(gòu)示意圖計(jì)數(shù)器的工作原理程序員向初值寄存器寫入計(jì)數(shù)值初值寄存器中的初值送入減1計(jì)數(shù)器減1計(jì)數(shù)器被啟動(dòng)開(kāi)始減1計(jì)數(shù),每一個(gè)CLKi脈沖使計(jì)數(shù)器減1當(dāng)計(jì)數(shù)值減到零時(shí),OUTi端產(chǎn)生輸出信號(hào)(脈沖或電平)GATEi信號(hào)可控制允許或禁止減1計(jì)數(shù)當(dāng)前計(jì)數(shù)值被鎖存至輸出鎖存器中,可被讀出CLKi信號(hào)可以是周期性信號(hào),也可以是隨機(jī)脈沖信號(hào)計(jì)數(shù)初值N的計(jì)算公式:N=fCLKi/fOUTi57D1D2D3D4D5D6D7數(shù)據(jù)線A0A1VccGNDCLK0GATE0OUT0CLK1GATE1OUT1CLK2GATE2OUT20號(hào)計(jì)數(shù)器1號(hào)計(jì)數(shù)器2號(hào)計(jì)數(shù)器控制線82538254的外部引腳圖28253/4的引腳功能D0D7~D0:8位雙向數(shù)據(jù)線,接CPU數(shù)據(jù)總線;CS為片選信號(hào)輸入端;A1,A0內(nèi)部寄存器選擇信號(hào)線,接CPU地址總線;RD讀命令輸入端;WR寫命令輸入端,接CPU的控制總線;GATE0~GATE2,CLK0~CLK2,OUT0~OUT2是三個(gè)計(jì)數(shù)器的外部引腳。588253端口選擇和讀/寫操作CSRDWRA1A0端口選擇和操作01000寫入計(jì)數(shù)器001001寫入計(jì)數(shù)器101010寫入計(jì)數(shù)器201011寫方式控制字到控制字寄存器00100讀計(jì)數(shù)器000101讀計(jì)數(shù)器100110讀計(jì)數(shù)器200111無(wú)操作,數(shù)據(jù)總線緩沖器三態(tài)011××無(wú)操作,數(shù)據(jù)總線緩沖器三態(tài)1××××禁止,數(shù)據(jù)總線緩沖器三態(tài)5938253的工作方式8253有6種工作方式,區(qū)別在于:輸出波形不同;啟動(dòng)計(jì)數(shù)器的觸發(fā)方式不同;GATE信號(hào)對(duì)計(jì)數(shù)過(guò)程的影響不同60方式0——計(jì)數(shù)結(jié)束輸出正躍變信號(hào)(產(chǎn)生中斷)工作特點(diǎn):寫入控制字后,OUT端輸出低電平;寫入初值后,OUT端保持低電平,計(jì)數(shù)器開(kāi)始對(duì)CLK脈沖進(jìn)行減1計(jì)數(shù);當(dāng)計(jì)數(shù)值減至0時(shí),OUT端輸出變?yōu)楦唠娖?,它可用作中斷?qǐng)求信號(hào);方式0不具備“初值自動(dòng)重裝功能”;僅當(dāng)寫入新的初值才能觸發(fā)計(jì)數(shù);在計(jì)數(shù)過(guò)程中,若寫入新的計(jì)數(shù)初值,則初值寫入后將按新的初值重新開(kāi)始減1計(jì)數(shù);GATE=1時(shí),允許計(jì)數(shù);GATE=0時(shí),停止計(jì)數(shù)。61CH=10HN=4CH=10HN=4N=5CLKGATEGATEGATEOUTOUTOUT方式0波形圖4321-1-204322210-142354321-2062方式1——外觸發(fā)的單穩(wěn)脈沖發(fā)生器工作特點(diǎn):寫入控制字后,OUT輸出高電平;寫入初值后,OUT保持高電平;計(jì)數(shù)器由GATE的上升沿啟動(dòng),開(kāi)始對(duì)CLK脈沖進(jìn)行減1計(jì)數(shù),啟動(dòng)后,OUT變?yōu)榈碗娖?;?dāng)計(jì)數(shù)值減到0時(shí),OUT輸出高電平,從而在OUT端輸出一個(gè)負(fù)脈沖,脈沖寬度=計(jì)數(shù)初值×CLK的脈沖周期;方式1無(wú)“初值自動(dòng)重裝”功能,僅GATE的上升沿能啟動(dòng)計(jì)數(shù)器計(jì)數(shù)。63只要GATE信號(hào)出現(xiàn)了正脈沖,計(jì)數(shù)初值將重新裝入計(jì)數(shù)器,并啟動(dòng)計(jì)數(shù)器按新的初值重新減1計(jì)數(shù)。在計(jì)數(shù)過(guò)程中裝入了新的計(jì)數(shù)初值,計(jì)數(shù)過(guò)程不受影響,僅當(dāng)GATE再次出現(xiàn)0—1的正躍變,該計(jì)數(shù)器才按新的計(jì)數(shù)初值做減1計(jì)數(shù)。64CH=12HN=3CH=12HN=2N=4CLKGATEGATEGATEOUTOUTOUT方式1波形圖3210-1323213120201-1-24365方式2——分頻器(計(jì)數(shù)分頻工作方式)工作特點(diǎn):寫入控制字后,OUT輸出高電平;寫入初值后,計(jì)數(shù)器啟動(dòng)減1計(jì)數(shù),當(dāng)計(jì)數(shù)器減到1時(shí),OUT輸出低電平,維持一個(gè)CLK周期,OUT又變?yōu)楦?;?jì)數(shù)初值自動(dòng)重新裝入,計(jì)數(shù)器開(kāi)始重新計(jì)數(shù),OUT輸出周期負(fù)脈沖信號(hào)。脈沖周期TOUt=初值×TCLK脈沖寬度=1×TCLK66在計(jì)數(shù)過(guò)程中,GATE變低,暫停計(jì)數(shù),GATE的上升沿使計(jì)數(shù)器恢復(fù)初值,并從初值開(kāi)始計(jì)數(shù);在計(jì)數(shù)過(guò)程中,當(dāng)GATE為高電平,若寫入初值,不影響計(jì)數(shù);僅當(dāng)計(jì)數(shù)器減到1后,計(jì)數(shù)器才裝入新的初值,按新初值減1計(jì)數(shù)。7/20/202367CH=14HN=3CH=14HN=4N=5CLKGATEGATEGATEOUTOUTOUT方式2波形圖32132132132232132142315432168方式3——方波發(fā)生器方式3具有自動(dòng)重新裝入初值的功能。當(dāng)初值為偶數(shù)時(shí),從OUT輸出1:1的方波,TOUT=N×TCLK

脈沖寬度=N/2×TCLK當(dāng)初值為奇數(shù)時(shí),OUT輸出周期脈沖波形,TOUT=N×TCLK正脈沖寬度=TCLK×(N+1)/2負(fù)脈沖寬度=TCLK×(N-1)/269CH=16HN=4CH=16HN=5CLKGATEGATEOUTOUT方式3波形圖4242424242042424070方式4——軟件觸發(fā)的單脈沖發(fā)生器工作特點(diǎn):寫入控制字后,OUT輸出高電平;寫入初值后,開(kāi)始減1計(jì)數(shù),減到0時(shí),OUT變低;方式4無(wú)初值自動(dòng)重裝功能,OUT輸出一負(fù)脈沖,脈沖寬度=1×TCLKGATE=1,允許計(jì)數(shù);GATE=0,停止計(jì)數(shù);計(jì)數(shù)過(guò)程鐘,若改變初值,則按新的初值重新開(kāi)始計(jì)數(shù)71CH=18HN=3CH=18HN=3N=2CLKGATEGATEGATEOUTOUTOUT方式4波形圖3210-1-2321-13122100-1-272方式5——硬件觸發(fā)的單脈沖發(fā)生器工作特點(diǎn):寫入控制字后,OUT輸出高電平;寫入初值后,僅當(dāng)GATE端出現(xiàn)0到1的躍變時(shí),啟動(dòng)計(jì)數(shù)減1計(jì)數(shù);當(dāng)計(jì)數(shù)值減到0時(shí),OUT輸出一個(gè)CLK周期的負(fù)脈沖;在計(jì)數(shù)過(guò)程中,若GATE端出現(xiàn)0—1的躍變,初值重新裝入計(jì)數(shù)器,并重新減1計(jì)數(shù);在計(jì)數(shù)過(guò)程中,若改變計(jì)數(shù)初值,僅當(dāng)GATE的上升沿觸發(fā),則立即按新的初值重新開(kāi)始計(jì)數(shù)。73CH=1AHN=3CH=1AHN=3N=5CLKGATEGATEGATEOUTOUTOUT方式5波形圖321032312310254-1-20-1-174

D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD計(jì)數(shù)器選擇操作選擇工作方式選擇碼制00=計(jì)數(shù)器000=鎖存操作000=方式0,001=方式10=二進(jìn)制01=計(jì)數(shù)器101=讀寫低字節(jié)010=方式2,011=方式31=BCD碼10=計(jì)數(shù)器210=讀寫高字節(jié)100=方式4,101=方式511=16位讀/寫48254的控制字與編程方式控制字8254的控制字75

D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD計(jì)數(shù)器選擇操作選擇工作方式選擇碼制00=計(jì)數(shù)器000=鎖存操作000=方式0,001=方式10=二進(jìn)制01=計(jì)數(shù)器101=讀寫低字節(jié)010=方式2,011=方式31=BCD碼10=計(jì)數(shù)器210=讀寫高字節(jié)100=方式4,101=方式511=16位讀/寫48254的控制字與編程方式控制字8254的控制字D7D6(SC1SC0):計(jì)數(shù)器選擇D7D6=00選擇0號(hào)計(jì)數(shù)器;D7D6=01選擇1號(hào)計(jì)數(shù)器;D7D6=10選擇2號(hào)計(jì)數(shù)器;D7D6=11讀出控制字標(biāo)志之一D5D4(RL1RL0)讀出方式選擇D5D4=00鎖存計(jì)數(shù)器當(dāng)前計(jì)數(shù)值,以便讀出檢查D5D4=01只讀/寫低8位計(jì)數(shù)初值,高8位置0D5D

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論