微機原理與接口技術習題集二_第1頁
微機原理與接口技術習題集二_第2頁
微機原理與接口技術習題集二_第3頁
微機原理與接口技術習題集二_第4頁
微機原理與接口技術習題集二_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

編寫8255A的A口和B口都工作在方程式1,采用中斷方式輸入數(shù)據(jù)的程序【參考答案】P83例77設8255A的口地址為:40H~43H,C口的PC6、PC7為輸入,因A口、B口工作在方式1,故工作方式控制字為:10111110B,其中D0可為0或1,這里選為0。A口允許中斷,PC4置1,控制字為09H。B口允許中斷,PC2置“1”,控制字為05H。故初始化程序段如下:MOVAL,10111110B;寫入工作方程式控制字OUT43H,ALMOVAL,09HOUT43H,AL;PC4置“1”,A口允許中斷MOVAL,05HOUT43H,AL;PC2置“1”,B口允許中斷8255A的方式0的應用實例【參考答案】P83例78設8255A的A口和B口工作在方式0,A口為輸入端口,接有4個開關;B口為輸出端口,接有一個七段發(fā)光二極管,其硬件連接電路如圖46所示。試編一程序要求七段發(fā)光二極管顯示開關所撥通的數(shù)字。本例中8255A的端口地址由兩部分電路組成:由CPU地址線A15~A3通過74LS138譯碼器產(chǎn)生片選信號;CPU的地址線A2、A1分別組成4個端口地址,而CPU的A0與譯碼器輸出端通過邏輯組合,保證8255A的四個端口地址為偶地址,這樣8位的8255A與16位的8086CPU可以通過數(shù)據(jù)總線D7~D0傳送8位信息,具體端口地址分配為:A口地址為8020H,B口地址為8022H,C口地址為8024H,控制口地址為8026H。從圖可知,七段發(fā)光二極管為共陽極LED器件,要讓a段亮點,要求從PB0段輸出高電平“1”;要讓b段熄滅,要求從PB1段輸出低電平“0”,其余各段依次類推。8255A的A口接有開關,4位開關的組合可為0~FH。為此,我們可將在LED上顯示0~FH的各字符代碼列表見表2。表2顯示字符代碼表顯示字符123456789ABCDEF0七段代碼(H)065B4F666D7D077F6F777C395E79313F程序如下:APORTEQU8020HBPORTEQU8022HCONTREQU8026HDATASEGMENTTAB1DB3FH,06H,5BH,4FH.…DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAMOVDS,AXMOVAL,90H;設定8255A工作方式MOVDX,CONTROUTDX,ALADDR1:MOVDX,APORT;取開關值INAL,DXANDAL,0FH;屏蔽高4位MOVBX,OFFSETTAB1;取代碼表首址XLAT;找到字符代碼MOVDX,BPORT;輸出顯示OUTDX,ALMOVCX,0400H;顯示延時ADDR2:DECCXJNZADDR2JMPADDR1CODEENDSENDSTART編寫8255A用于LED顯示器接口程序【參考答案】P85例798086CPU通過8255A同開關K與7段LED顯示器的接口如圖47所示。開關設置的二進制信息由8255A的B口輸入,經(jīng)程序轉(zhuǎn)換為對應的七段LED的段選碼(字形碼)后,通過A口輸出。由七段LED顯示二進制狀態(tài)值,試編寫其控制程序。設8255A得端口地址為:端口A:0FFF8H端口B:0FFFAH端口C:0FFFCH控制口:0FFFEH為增加8255A的負載能力,所以A口經(jīng)驅(qū)動器同七段LED顯示器相連。由圖47可見,8255A的地址線A1、A0分別同地址鎖存器輸出的A2、A1相連,故每個端口可有二個端口地址,如A口為0FFF8H和0FFF9H,可認為未參加譯碼的地址線A0為0的地址,所以通常使用0FFF8H地址。假設B口用輸入,則8255A工作方式控制字為82H。程序如下:ORG2000H;從2000H開始存放數(shù)據(jù)MOVAL,82H;只工作方式控制字MOVDX,0FFFEHOUTDX,ALRDPORTB:MOVDL,0FAH;讀入B口信息INAL,DXANDAL,0FH;屏蔽AL高四位,B口讀入的信息只低四位有效MOVBX,OFFFSETSSEGCODE;地址指針BX指向段選碼表首地址XLAT;[BX+AL]→ALMOVDL,0F8H;段選碼→A口,由七段LED顯示器顯示OUTDX,ALMOVAX,56CH;延時,使讀入的信息保持顯示一段時間DELAY:DECAXJNZDELAYJMPRDPORTB;進入新一輪的操作HLTORG2500H;從2500H開始為段選碼表如果要求LED顯示器循環(huán)顯示0-F十六個數(shù)字,每個數(shù)字顯示10s,顯示100遍。則控制程序為:ORG2000HMOVAL,82HMOVDX,0FFFEHOUTDX,ALMOVBX,100;循環(huán)100次DISFLOP:LEADI,SSEGCODE;指向段選碼表MOVCX,16;顯示字符個數(shù)LOPMOVAL,[DI];取顯示字符送A口MOVDL,0F8HOUTDX,ALINCDI;修改顯示指針CALLDELAY10s;延時10s字程序LOOPLOP;每遍循環(huán)16次DECBX;修改大循環(huán)指針JNZDISFLOPHLTORG2500HSEEGCODE:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,DB98H,88H,83H,DB0C6H,0A1H,86H,8EH編寫用8255A按位置位/復位控制字控制發(fā)光二級管依次顯示亮滅的程序【參考答案】P87例80利用8244A端口C的8根I/O線接8只發(fā)光二級管的正極(8個負極均接地),用按位置位/復位控制字編寫使這8只發(fā)光二級管依次亮、滅的程序。設8255A的端口地址為480~483H。本例要使用8255A的兩個控制字:方式控制字和按位置位/復位控制字。這兩個控制字都寫入到8255A的控制字寄存器,由它的D7位為1或0來區(qū)分寫入的控制字是方式控制字還是按位置位/復位控制字。方式控制字只寫入一次,其后寫入的都是按位置位/復位控制字。首先用置位字01H點亮PC0所連接的發(fā)光二極管,然后將置位字01H改為復位字00H,熄滅該發(fā)光二極管。再將復位字00H改為置位字03H,點亮PC1所連接的發(fā)光二極管,又將置位字03H改為復位字02H,熄滅該發(fā)光二極管。置位和復位自己就這樣交替變化如下:01H→00H→03H→02H→05H→04H→……→0FH→0EH→01H→……置位字和復位字周而復始地不斷循環(huán),即可使8只連接在PC端口的發(fā)光二極管依次亮滅。每一位的置位字改為復位字僅需將D0為由1變?yōu)?,這可用屏蔽D0為的邏輯與指令完成。把PCi的復位字改為PCi+1的置位字,要將D0位由0變?yōu)?,同時還要將D3~D13位加1,即要將D3~D0的4位加3,這可用加3的指令實現(xiàn)。這樣不斷地加3,其進位一定會使D7也變?yōu)?,致使置位字變成方式字,為了避免出現(xiàn)此情況,所以加3后還要將置位字的D7位或高4位清零,即和0FH邏輯與,該程序的流程圖如圖48所示。程序如下:MOVDX,383H;383H為控制字寄存器的端口地址MOVAL,80H;方式選擇字OUTDX,ALMOVAL,1;PC0的置位控制字AGAIN:OUTDX,AL;點亮一只發(fā)光的二極管LOOP$;延時LOOP$ANDAL,0FEH;置位字改為復位字OUTDX,AL;熄滅點亮的發(fā)光二極管ADDAL,3;PCi→PCi+1,復位字改為下一位的置位字ANDAL,0FH;保持D7為0PUSHAXMOVAH,11;檢查按鍵有無輸入IVT21H;無,0送AL,有,-1送ALINCALPOPAXJNZAGAIN編寫8255A工作在方式0、方式1和方式2等不同形式的初始化程序【參考答案】P88例81假設8255A端口A地址為0500H,是編寫8255A工作在以下方式:將A組和B組置成方式0,端口A和C作為輸入端口,端口B作為輸出端口;將A組置成方式2,B組置成方式1,端口B作為一個輸出端口;將A組置成方式1,且端口A作為輸入端口,可PC6和PC7作為輸出;B組置成方式1,且端口B作為輸入端口。以下為8255A工作在上述三種情況下的方式控制字及程序。方式控制字為:10011001B即99H程序為:MOVDX,0506H;控制端口地址0506H送DXMOVAL,99HOUTDX,AL方式控制字為:11XXX10XB,其中X為0或1任意,將X設為0則方式控制字為11000100B,即C4H程序為:MOVDX,0506HMOVAL,0C4HOUTDX,AL方式控制字為:1011011XB或10110110B即B6H。因為B口設定為方式1輸入,所以PC2~PC0已自動確定了輸入/輸出;端口A被設定為方式1輸入,所以PC3自動作為中斷請求線,因此PC3~PC0不受D0位控制。程序為:MOVDX,0506HMOVAL,0B6HOUTDX,AL發(fā)光二級管(L0~L7)不斷顯示對應開關(S0~S7)的通斷狀態(tài)應用實例8086CPU通過8255A同發(fā)光二極管L0~L7一級開關S0~S7的接口電路如圖49所示。要求:S0~S7的狀態(tài)每隔半分鐘改變一次,把每次變化的狀態(tài)記錄在從2000H:1000H開始的內(nèi)存單元中;S接通時,對應的L熄滅,S斷開時,對應的L發(fā)亮(即S0斷開,L0發(fā)亮;S0接通,L0熄滅);連續(xù)工作24h結束。用匯編語言編寫的控制程序如下,請?zhí)钌铣绦蛑械目杖钡牟糠郑òㄖ噶?,操作?shù)或標號,初始化時無關項置“0”)。START:MOVAL,______;初始化MOVDX,____________DX,ALMOVAX,______MOVDS,AXLOP:MOVCX,______;工作24hLOP1:MOVBX,______LOP2:MOVDX,______;讀PA口______AL,DXMOV[BX],AL;存S0~S7INC______XORAL,;寫PB口MOVDX,______DX,AL____________________________CALLDELAY30s____________________________LOOP___________HLT【參考答案】P89例828255A端口地址計算:A8A7A6A5A4A3A2A1A01100100××端口地址為190H~193H8255A初始化MOVAL,10010000B;PA口工作于方式0,輸入MOVDX,193H;PB口工作于方式0,輸出OUTDX,AL開關狀態(tài)記錄存放在內(nèi)存2000H:1000H開始的內(nèi)存單元中,必須對DS賦值,指令為:MOVAX,2000HMOVDS,AX開關狀態(tài)每隔半分鐘(30s)改變一次,控制電路連續(xù)工作24h,則采樣次數(shù)為24h/30s=24×60×60s/30s=2880次。要求開關S接通,對應燈熄滅,開關S接通時輸入“0”,而燈熄滅要輸出“1”,因此必須將PA口讀入內(nèi)容取反后輸出到PB口。調(diào)用子程序前必須保護現(xiàn)場,返回子程序前必須恢復現(xiàn)場。這里的現(xiàn)場即子程序中所用到的寄存器。程序中空缺部分的答案為:90H193HOUT2000H28801000H190HINBX0FFH191HOUTPUSHBXPUSHCXPOPCXPOPBXLOP2[注] 延時30s子程序DELAY30SPROCMOVBX,3000DELAY:MOVCX,2801WAIT:LOOPWAITDECBXJNZDELAYRETDELAY30sENDP編寫8255A以查詢方式作為打印機接口的程序【參考答案】P92例83圖50是用8255A的PA口作為輸出打印數(shù)據(jù)口,工作方式0,PC口高4位工作于輸出方式,PC6產(chǎn)生信號;PC口低4位工作于輸入方式,PC2接收打印機的BUSY信號。設打印字符存放在數(shù)據(jù)段中有效地址為2000H的內(nèi)存單元,8255A的端口地址為80H~83H。8255A的初始化程序:MOVAL,81HOUT83H,ALMOVAL,0DHOUT83H,ALTESBY:INAL,82HTESTAL,04HJNZTESBYMOVAL,[2000H]OUT80H,ALMOVAL,0CHOUT83H,ALINCALOUT83H,ALRET主程序:MOVAL,15HOUT43H,ALMOVAL,50HOUT40H,ALSTILOP:HLTJMPLOP中斷服務程序為:MOVAL,01HOUT80H,ALMOVAL,77HOUT43H,ALMOVAL,50HOUT41H,ALMOVAL,72HOUT41H,ALCALLDLSSMOVAL,00HOUT80H,ALIRET編寫8255A以中斷方式作為打印機接口的程序【參考答案】P93例848255A工作方式1,其電路如圖51所示,這中斷向量為2000H:3000H,在2CH、2DH、2EH、2FH中端口地址設為E0H、E2H、E4H、E6H,控制程序如下:START:MOVAL,84HOUT0E6H,ALMOVAL,0BHOUT0E6H,ALXORAX,AXMOVDS,AXMOVAX,3000HMOVWORDPTRDS:[002CH],AXMOVAX,2000HMOVWORDPTRDS:[002EH],AXMOVAL,05HOUT0E6H,ALSTI…ROUTINI1R:MOVAL,[DI]OUT0E0H,ALMOVAL,0AHOUT0E6H,ALINCALOUT0E6H,AL…LRET通過8255A接口控制8個發(fā)光二極管亮、暗的應用實例【參考答案】P94例85通過8255A端口A輸出控制8個發(fā)光二極管的亮和暗,接口連接如圖52所示,8255A的端口地址為80H~83H。要求L7~L0每隔3s點亮1次,點亮的順序為:L7→L6→L5→L4→L3→L2→L1→L0→L7……周而復始。寫出8255A的方式控制字和初始程序,并加以注釋。寫出題意要求的程序。根據(jù)圖52可知:設置端口A為方式0輸出,其余任意,方式控制字為:1000000即80H--------------------------------標志位A口方式0輸出任意初始化程序如下:MOVAL,80H;設置8255A方式控制字OUT83H,AL根據(jù)題意可知:8個發(fā)光二極管L7~L0為共陽極接法,當PAi輸出為“0”時,發(fā)光二極管亮;輸出為“1”時,發(fā)光二極管滅。當L7亮時,其余LED都為暗,所以端口A的控制字為:01111111B,即7FH.因為顯示順序是L7→L6→L5→L4→L3→L2→L1→L0→L7……因此每隔3s,是控制字右移一位,即“0”往右移,程序如下:MOVAH,7FHLOOP:MOVAL,AHOUT80H,AL;使L7亮控制字輸出CALLDELAY3s;延遲3sRORAH,1;控制字小循環(huán)右移1位JMPLOOP利用8255A作為兩機并行通信接口的應用實例【參考答案】P95例86兩臺PC機通過8255A構成的借口實現(xiàn)并行傳送數(shù)據(jù),A機發(fā)送數(shù)據(jù),B機接收數(shù)據(jù)。A機一側(cè)的8255A工作于方式1輸出,B機一側(cè)的8255A工作于方式0輸入。兩機的CPU與8255A之間均采用查詢方式交換數(shù)據(jù)。假設兩臺機傳送1KB數(shù)據(jù),發(fā)送緩沖區(qū)為0300:0000H,接收緩沖區(qū)為0400:0000H。硬件連接如圖53所示A機是發(fā)送,所以把A機一側(cè)8255的A口設定為方式1輸出,從PA7~PA0引腳上發(fā)送由CPU寫入A口的數(shù)據(jù),而PA7和PA6引腳作為聯(lián)絡線和。B機是接收數(shù)據(jù),將B機一側(cè)的A口設定為方式0輸入,由PA7~PA0接收A機送來的數(shù)據(jù),而選用PA4和PA0作為聯(lián)絡線。假定A、B兩機的通信接口8255的A端口地址均為300H~303H,驅(qū)動程序如下:A機的發(fā)送程序段:…MOVAX,0300HMOVES,AX;設A機發(fā)送緩沖區(qū)段基址MOVBX,0;設A機發(fā)送緩沖區(qū)偏移量MOVCX,3FFH;置發(fā)送字節(jié)計數(shù)器;對8255A初始化MOVDX,303H;指向8255A控制口MOVAL,10100000H;設A口為方式1輸出OUTDX,ALMOVAL,00001101B;這發(fā)送中斷允許INTEA=1OUTDX,AL;發(fā)送第一個數(shù)據(jù)MOVDX,300H;向A口寫第一個數(shù)據(jù),產(chǎn)生第一個信號,送給對方以便獲取對方的MOVAL,ES:[BX]OUTDX,ALINCBX;緩沖區(qū)指針+1DECCX;計數(shù)器減1LOOP0:MOVDX,302H;指向8255A狀態(tài)LOOP1:INAL,DX;查詢發(fā)送中斷請求INTRA=1?ANDAL,08H;PC3=INTRA=1?JZLOOP1;若無中斷請求則等待MOVDX,300H;有請求向A發(fā)送數(shù)據(jù)MOVAL,ES:[BX];從緩沖區(qū)取數(shù)據(jù)OUTDX,AL;通過A口送第二個數(shù)據(jù)INCBX;緩沖區(qū)指針加1DECCX;字節(jié)計數(shù)器減1JNZLOOP0;字節(jié)未發(fā)送完繼續(xù)MOVAX,4C00H;功能調(diào)用號INT21H;已完,返回DOSB機接收程序段:…MOVAX,0400H;接收緩沖區(qū)段基地址MOVES,AXMOVBX,0;接收緩沖區(qū)偏移量MOVCX,3FFH;接收字節(jié)計數(shù)器;8255A初始化MOVDX,303H;8255A控制口MOVAL,10011000B;A口和C口高4位為方式0輸入,C口低4位為方式0輸出OUTDX,ALMOVAL,00000001B;置PC0==1,表示尚未接收數(shù)據(jù)OUTDX,ALLOOP0:MOVDX,302H;指向C口LOOP1:INAL,DX;查A機的(PC4)=0?ANDAL,10H;即查A機是否發(fā)來數(shù)據(jù)?JNZLOOP1;若為發(fā)來數(shù)據(jù),則等待MOVDX,300H;發(fā)來數(shù)據(jù)從A口讀數(shù)據(jù)INAL,DXMOVES:[BX],AL;存入接收緩沖區(qū)MOVDX,303H;產(chǎn)生信號,并發(fā)回B機MOVAL,0;PC0置“0”O(jiān)UTDX,ALNOP;負脈沖寬度NOPMOVAL,01H;PC0=1OUTDX,ALINCBX;緩沖區(qū)指針加1DECCX;計數(shù)器減1JNZLOOP0MOVAX,4COOHINT21H;送完返回DOS8255A通過開關控制紅、綠、黃燈的亮、暗的應用實例用8255A控制一組紅、綠、黃燈(見圖54),反復檢測K1、K2,要求由K1、K2的閉合和斷開,控制紅、綠、黃三燈的點亮。當K1合,K2合時,黃燈亮;K1合,K2斷時,紅燈亮;K1斷,K2合時,綠燈亮;K1斷,K2斷時,黃燈亮;已知8255A的端口地址為60H~63H,試編寫初始化程序及控制程序?!緟⒖即鸢浮縋97例87初始化程序如下:MOVAL,90H;初始化OUT63H,ALLOP:INAL,80HANDAL,03HJZL3;K1、K2全合CMPAL,03HJEL3;K1、K2全斷CMPAL,02HJEL2;K1合、K2斷CMPAL,01HJEL1;K1斷、K2合JMPLOPL1:MOVAL,02H;亮綠燈OUT62H,ALJMPLOPL2:MOVAL,01H;亮紅燈OUT62H,ALJMPLOPL3:MOVAL,04H;亮黃燈OUT62H,ALJMPLOP編寫8255A的端口C的PC7上產(chǎn)生一個窄的正脈沖程序【參考答案】P98例88設控制口地址為00FE。只要用對端口C的置位/復位命令,先使PC7置位,然后再使它復位即可。程序如下:MOVDX,00FEH;8255A的控制端口地址送DXMOVAL,0EH;對PC7置0的控制字OUTDX,AL;輸出對PC7置0的控制字MOVAL,0FH;對PC7置1的控制字OUTDX,AL;輸出對PC7置1的控制字MOVAL,0EH;對PC7置0的控制字OUTDX,AL;輸出對PC7置0的控制字編寫8255A工作于方式0,端口A和一個字符打印機相連,端口B和一個紙帶輸入機相連的初始化和驅(qū)動程序端口C作為聯(lián)絡信號,PC6作為打印機的選通信號,PC2作為打印機的忙信號,PC4作為紙帶輸入機的應答信號,PC0作為紙帶輸入機的準備好信號(見圖55)。端口地址為0E4H~0E7H,試列寫初始化程序和驅(qū)動程序。【參考答案】P98例89方式選擇和初始化端口A:方式0,輸出。端口C:高4位方式0,輸出。端口B:方式0,輸入。端口C:低4位方式0,輸入。INITCPROCMOVAL,83H;送控制字OUT0E7H,ALMOVAL,0DH;PC6置1、啟動字符打印機OUT0E7H,ALMOVAL,09H;PC4置1OUT0E7H,ALRETINITCENDP打印機驅(qū)動程序LESTPROCLP1:INAL,0E6H;讀PC2狀態(tài),忙,等待ANDAL,04HJNZLP1MOVAL,X;不忙,送字符到打印機OUT0E4H,ALMOVAL,0CH;PC6置0OUT0E7H,ALMOVAL,0DH;PC6置1,重新啟動OUT0E7H,ALRETLPSTENDP紙帶輸入機驅(qū)動程序RDSTPROCRD1:MOVAL,04H;PC4置0OUT0E7H,ALBLP:INAL,OE6H;讀PC0狀態(tài)沒準備好,等待ANDAL,01HJNZRLPINAL,0E5H;準備好,從端口讀入一個字符MOVX,ALMOVAL,09H;PC4置1,通知輸入機已取走數(shù)據(jù)OUT0E7H,ALRETRDSTENDP8255A工作在方式1控制微型打印機的應用實例在某一8086系統(tǒng)中接有一個μ80微型打印機,8255A作為輸出接口,工作在方式1選通方式,試編寫一程序?qū)⒕彌_區(qū)BUFF內(nèi)的200HB的ASCII碼送打印機,其接口電路如圖56所示。當打印機的信號為低電平有效信號時,數(shù)據(jù)線D7~D0上的數(shù)據(jù)被鎖入μ80打印機內(nèi)待打印,同時,打印機輸出低電平信號通知8255A,數(shù)據(jù)已取走。由于打印機的速度遠低于CPU的執(zhí)行速度。因而,打印機在打印某數(shù)據(jù)時,會發(fā)出BUSY“忙”信號,此時,CPU不能向8255A輸出數(shù)據(jù),一定要等待BUSY信號為低電平無效信號,CPU才能再次輸出數(shù)據(jù)到8255A。在此例中,利用查詢BUSY信號完成CPU與μ80打印的數(shù)據(jù)交換?!緟⒖即鸢浮縋100例90APORTEQU0FFF8HCPORTEQU0FFFCHCONTREQU0FFFEHDATASEGMENTBUFFDB200HDUP(?)DATAENDSCODESEGMENTASSUMECS:CODE,DS:DATASTART:MOVAX,DATAOUTDS,AXMOVCX,200H;字節(jié)長度MOVAL,0A8H;8255A控制字MOVDX,COUNTROUTDX,ALMOVDI,OFFSETBUFFABC1:MOVAL,[DI];ASCII碼輸出MOVDX,APORTOUTDX,ALMOVDX,CPORTABC2:INAL,DX;查信號ANDAL,80H;變高了嗎JZABC2;否,再查ABC3:INAL,DX;查BUSY信號ANDAL,10H;BUSY變低了嗎?ANZABC3;否,再查INCDI;是,傳送下一個數(shù)LOOPABC1HLT編寫8255A作為中斷方式的打印機接口的程序【參考答案】P101例91把8086CPU給出的字符送到打印機上打印,接口與打印機的連接如圖57所示。8255A的端口A工作在方式1的輸出。PC7為信號輸出端(此例未用),PC6則為信號輸入端,PC3位INTRA信號輸出端。打印機需要一個數(shù)據(jù)選通信號,用CPU控制PC0來產(chǎn)生選通脈沖(用軟件實現(xiàn)單脈沖發(fā)生器功能)。PC3接到8259A的中斷請求信號IR3輸入端。對應的中斷類型號為0BH,中斷向量(中斷服務程序入口的段址和偏移地址),為1000H:2000,存放在0000H段從0BH×4開始的連續(xù)4個字節(jié)單元,即2CH、2DH、2EH、2FH中。設8255A端口A、B、C及控制口的地址分別為C0H、C2H、C4H和C6H。根據(jù)以上要求,方式控制字設計為A0H,即A組方式1,端口A輸出,端口C的低4位輸出(只用PC0),控制字的D3~D1為可任選(為000)。字符打印程序分成主程序和中斷服務程序兩部分。主程序完成對8255A的初始化、開放CPU可屏蔽中斷和8255A端口A的中斷,并將要打印的第一個字符送打印機。主程序段:MAIN:MOVAL,0A0H;設置8255A的控制字OUT0C6H,ALMOVAL,01;使PC0為1,選通無效OUT0C6H,ALPUSHDSXORAX,AX;設置中斷向量MOVDS,AXMOVAX,2000HMOV[002CH],AXMOVAX,1000HMOV[002EH],AXPOPDSMOVAL,0DH;使PV6=1,允許端口A中斷OUT0C6H,ALSTI;開放CPU中斷INT0BH;輸出第一個字符中斷向量的裝入過程也可以由AH=25H的系統(tǒng)功能調(diào)用實現(xiàn)。中斷服務程序完成對字符的輸出。中斷服務主要程序段:MOVDI,POINTER;裝入指針MOVAL,[DI];取字符送端口AOUT0C0H,ALMOVAL,00;使PC0=0,產(chǎn)生選通信號OUT0C6H,ALINCAL;使PC0=1,選通無效OUT0C6H,ALINCDI;修改指針并保存MOVPIONTER,DI…;后續(xù)處理ITET設定字符已存放在輸出緩沖區(qū)。在中斷服務程序中,輸出字符時,CPU對端口C的相應位PC0設置為0,發(fā)出選通信號,從而將數(shù)據(jù)送到打印機。當打印機接受并打印字符后,發(fā)出應答信號,由此清除8255A的“輸出緩沖器滿”信號,并使8255A產(chǎn)生新的中斷請求。如果中斷是開放的,CPU便響應中斷,再次進入中斷服務程序,向打印機輸出字符。8255A工作在方式0和方式1下分別與打印機接口的例子8255A與打印機的連接如圖58所示,利用8255A工作在方式0(見圖58a)實現(xiàn)打印機接口,將字符A送打印機,試編寫出初始化程序和打印程序。如果采用8255A方式1(見圖68b)與打印機相連,再編寫初始化程序。【參考答案】P103例928255A工作于方式0:MOVAL,83HMOVDX,0383HOUTDX,AL;設方式0A口輸出上C口輸出下C口輸入DEXDXWAIT:INAL,DXANDAL,04HJNZWAIT;測PC2,檢查打印機忙閑MOVAL,‘A’MOVDX,0380HOUTDX,AL;若閑,輸出字符“A”MOVAL,40HADDDX,2OUTDX,ALMOVAL,0OUTDX,AL;利用負脈沖將數(shù)據(jù)所存于打印機,進行處理8255A工作于方式1:MOVDX,0383HMOVAL,0A0HOUTDX,AL;設A口為方式1輸出MOV0DHOUTDX,AL;PC6置1編寫8255A作為打印機接口打印出26個小寫英文字母的程序用8255A作接口芯片,傳送數(shù)據(jù)給打印機,8255A工作在方式1,中斷申請線連接到8259A的IR3端,打印出26個小寫英文字母。程序流程如圖59所示。【參考答案】P104例93DATASEGMENTTAB:DB41H,42H,43H…;英文26個字母的代碼DATA:ENDSCODESEGMENTASSUMECS:CODE,DS:DATE主程序初始化:START:PROCFARPUSHDS;保存DOS初始化數(shù)據(jù)SUBAX,AXPUSHAXMOVDX,D2F6H;8255A控制口地址送DXMOVAL,A0H;設置8255A工作方式控制字OUTDX,ALMOVAL,01H;使PC0置1,選通無效,關閉打印機OUTDX,ALMOVAL,0CH;使PC6置1,使INTE=0,不允許端口A輸出中斷OUTDX,ALMOVAX,2000H;設置中斷服務程序如口地址偏移量MOVWORDPRT[002CH],AX;設置存入中斷矢量表中MOVAX,1000H;設置中斷服務程序所在段地址MOVWORDPTR[002EH],AX;存入中斷矢量表中MOVAL,0BH;設置ICW1控制字MOVDX,0020H;設置8259A偶地址MOVDX,ALMOVAL,0BH;設置ICW2,產(chǎn)生中斷類型號MOVDX,0021H;設置8259A奇地址OUTDX,ALMOVAL,0FH;設置ICW4控制字OUTDX,ALMOVDS,DATA;取數(shù)據(jù)區(qū)所在段段地址LEADI,TAB;取數(shù)據(jù)區(qū)所在段的偏移地址MOVAH,1AH;設置計數(shù)器(取數(shù)次數(shù))MOVDX,02F6H;設置8255A控制口地址MOVAL,0DH;設置端口A為中斷允許OUTDX,ALSTI;開中斷AA:CMPAH,00HJNZAAAA1;JMPAA1中斷服務程序:ORG12000HCLI;關中斷MOVAL,[DI]MOVDX,02F0HOUTDX,AL;送數(shù)據(jù)到A口MOVAL,00H;使PC0置0,選通打印機MOVDX,02F6HOUTDX,AL;啟動打印機MOVAL,01H;使PC0置1OUTDX,AL;關打印機INCDIDECAHSTI;開中斷IRET編寫8086CPU用查詢方式通過8255A并行接口控制一臺控制臺打印機的程序8255A的端口A作為打印機接口工作方式1,輸出方式;端口B作為鍵盤輸入端口,工作與方式1,輸出方式;端口C作為控制和狀態(tài)端口,其控制信號和狀態(tài)信號為:PC7自動作為,PC6自動作為ACKA,PC2自動作為;PC1自動作為;PC3和PC0分別自動作為INTRA和INTRB。設定PC4作為8255A送給打印機的輸出選通信號,由對端口C的PC4置位/復位控制字來設定,如圖60所示。要求從控制臺打印機鍵盤鍵入100H個ASCII碼,通過8255A的端口B送入CPU,并轉(zhuǎn)入首地址為2000H開始的存儲區(qū),接著再通過8255A的端口A將它們送至打印機打印輸出?!緟⒖即鸢浮縋106例94根據(jù)8255A端口A工作于方式1,輸出;端口B工作于方式1,輸出;端口C各位功能已定,D0、D3已不起作用,寫成0。故方式控制字為A6H。設8255A個端口地址如下:端口A FFF8H端口B FFFAH端口C FFFCH控制端口 FFFEH控制臺打印機程序流程圖如圖61所示。源程序如下:MOVSI,2000H;SI←200HMOVDI,SI;DI←SIMOVCX,100H;CX←100HMOVAL,0A6H;方式控制字A6H送ALMOVDX,0FFFEH;控制端口地址送DXOUTDX,AL;A6H送控制寄存器MOVDL,0FEH;控制端口低8位地址送DLMOVAL,09H;端口C置位/復位控制字送ALOUTDX,AL;PC4置1MOVDL,0FCH;端口C低8位地址送DLONEINAL,DX;讀端口C狀態(tài)字ANDAL,01H;測試IBFB(PC1)=1嗎?JZONE;若IBFB=0,轉(zhuǎn)至07CBH單元MOVDL3,0FAH;否則,端口B低8位地址送DLINAL,DX;讀端口B的內(nèi)容STOSB;[DI]←ALTWO:MOVDL,0FCH;DL←FCHINAL,DX;讀端口C狀態(tài)ANDAL,80H;測試(PC7)=1否?JZTWO;若=0。轉(zhuǎn)至TWOLODSB;否則,AL←[SI]MOVDL,0F8H;端口A低8位地址送DLOUTDX,AL;AL的內(nèi)容送端口AMOVDL,0FEH;DL←FEHMOVAL,08;對PC4置0的控制字送ALOUTDX,AL;PC4置0MOVAL,09;對PC4置1的控制字送ALOUTDX,AL;PC4置1LOOPONE;若CX-1≠0轉(zhuǎn)至07CBH單元HLT;否則,暫停編寫利用8255A組成鍵盤掃描接口的程序利用8255A作為微處理器組成的非編碼鍵盤矩陣結構如圖62所示。圖62中8255A的端口A工作在方式0,為輸出接口,端口B工作在方式0,為輸入接口。在按下一個鍵時,與之對應的行和列短接形成通路,通過查找閉合鍵所在的行和列的位置,程序就能決定被按下鍵所代表的代碼。程序按四個功能編寫:從8255A的A口輸出代碼,選通鍵盤陣列的各行(設各行為低電平‘D’),從8255A的B端口輸入各列狀態(tài),哪根列線上為“0”,則哪列線上有鍵按下。有鍵按下,延時以消除抖動,無鍵壓下則等待按鍵。有鍵按下,消抖動后再進行逐行掃描,即先選通第0行,檢查各列有無鍵壓下,在選通第1行,檢查各列有無鍵按下,直到各行選通一次,無鍵壓下,再等待按鍵,在掃描過程中,可以確定被按下鍵的行值和列值。將鍵的行值和列值轉(zhuǎn)換成十六進制鍵號,并轉(zhuǎn)去完成各種鍵的功能程序?!緟⒖即鸢浮縋108例95程序如下:PORTAEQU0FF8HPORTBEQU0FFAHPORTCEQU0FFCHCONTREQU0FFEH…MOVDX,CONTRMOVAL,10000011B;8255A控制字OUTDX,ALWAIT:MOVDX,PORTAMOVAL,0FFH;選通各行OUTDX,ALMOVDX,PORTBINAL,DX;檢查各行CMPAL,0FFH;有鍵壓下嗎?JEWAIT;否,等待按鍵MOVBL,0;BL中置鍵號初值MOVBH,01H;逐行掃描MOVCX,8;設置行計數(shù)器FNDROW:MOVAL,BHMOVDX,PORTAOUTDX,ALROLBH,1;選通下一行MOVDX,PORTBINAL,DX;取列值CMPAL,0FFH;有鍵壓下嗎?JNZFNDCOL;有,轉(zhuǎn)找鍵值ADDBL,8;無,則選通下行,鍵號增加LOOPFNDROW;循環(huán)掃描8行JMPDONE;轉(zhuǎn)無鍵按下處理FNDCOL:RORAL,1;處理方法按鍵的列值JNCRIGHT;找到對應該列的鍵號INCBL;BL中鍵號加1JMPFNDCOLRIGHT:MOVAL,BL;找到鍵號送AL中…DONE:轉(zhuǎn)顯示程序等待按鍵8255A在PC機中的應用【參考答案】P110例968255A在PC機中,A口用于輸入,讀取鍵盤掃描碼;B口用于輸出,輸出一些控制信號,其控制信號作用見表3;C口用于輸入,主要用來讀取系統(tǒng)配置開關DIP的情況,也用來讀取一些存儲器和外設的狀態(tài)(表4)。82545A在PC機中應用的連接電路如圖63所示。表3 8255A在PC機中B口各位作用表B口管腳作用PB0為8253提供門控信號GATE2PB1揚聲器發(fā)音時間控制PB2備用PB3讀取系統(tǒng)配置開關DIP狀態(tài)控制PB4允許讀/寫存儲器PB5允許I/O通道控制信號PB6提供鍵盤發(fā)送控制信號PB7提供鍵盤發(fā)送控制信號表4 8255A在PC機中C口各位的用途C口管腳用途PC0接收DIP開關1的狀態(tài)PC1接收DIP開關2的狀態(tài)PC2接收DIP開關3的狀態(tài)PC3接收DIP開關4的狀態(tài)PC4輸入,檢查揚聲器狀態(tài)PC5接收8253通道2的輸出PC6用于I/O通道檢查PC7讀/寫存儲器PCK由圖62可知,8255A的C口的低4位用來讀取外設配置開關,開關DIP有8位,由PC3來控制分兩次讀入,當PC3為“0”,選通74LS244讀取DIP的低4位開關值;PC3為“1”,禁止74LS244,可讀取DIP的高4位開關值。系統(tǒng)配置情況和DIP開關狀態(tài)如下:開關1:OFF——8255A的A口工作在普通方式 ON——在上電時,系統(tǒng)循環(huán)自檢方式開關2:OFF——系統(tǒng)中有些處理器8087 ON——系統(tǒng)中無些處理器8087開關4和開關3的組合狀態(tài)對應系統(tǒng)板上的RAM容量開關4開關3RAM容量ONON64KBONOFF128KBOFFON192KBOFFOFF256KB開關6和開關5的組合狀態(tài)對應顯示器適配板的類型開關6開關4類型ONON未插顯示器適配板ONOFF40×25彩色適配板OFFON80×25彩色適配板OFFOFF單色顯示器適配板開關8和開關7的組合狀態(tài)對應于軟盤驅(qū)動器的個數(shù)開關8開關7驅(qū)動器個數(shù)ONON1ONOFF2OFFON3OFFOFF4用戶可根據(jù)具體配置情況,將DIP的對應位置插到相應的狀態(tài)。編寫8255A用作2764EPROM編程接口程序【參考答案】P112例97如圖64所示,2764是8KB×8位可用紫外線擦除,可編程的EPROM存儲芯片。對該芯片寫入(編程)時,需要在Vpp上加上21~25V的變成電壓,在上提供寬度在25ms以上的編程脈沖。CPU采用8086微處理器,8255A的A1,A0分別接地址總線的A2、A1。8255A的4個端口地址均為偶地址,編程數(shù)據(jù)由端口B輸出。由于2764有13位地址,所以其編程地址必須用8255A的兩個端口分兩次傳送給2764。本例用端口A的PA7~PA0和端口C的PC4~PC0共13位編程地址。另外,用PC5和PC6作為2764的片選信號和編程脈沖輸入信號,用PC7作為2764的編程電壓的控制信號,它經(jīng)反相器和晶體管將所需的編程電壓加到2764的Vpp引腳。于是PC7、PC6、PC5為010時,實施對2764的編程寫入。設8255A的端口地址為0F8H~0FEH,編程數(shù)據(jù)放在8000H開始的8KB緩沖器內(nèi)。對2764編程程序如下:START:MOVBX,0000H;置2764初始地址MOVDL,8000H;置編程內(nèi)存數(shù)據(jù)源地址MOVCX,2000H;置編程數(shù)據(jù)字節(jié)數(shù)(8KB)MOVAL,80H;8255A方式控制字,A、B、C口為方式0輸出OUT0FEH,AL;輸出8255A方式控制字LOP:MOVAL,BLOUT0F8H,AL;A口輸出低8位編程地址MOVAL,[DI]OUT0F8H,AL;B口輸出編程數(shù)據(jù)字節(jié)MOVAL,BH;取高5位編輯地址ORAL,40H;使PC6置1,發(fā)編程脈沖OUT0FCH,AL;C口輸出高5位編程地址和編程控制信號CALLDL50MS;調(diào)用50ms延時子程序MOVAL,BH;取高5位編程地址ORAL,40H;D7置1,D6保持0OUT0FCH,AL;PC7置1撤消編程電壓,PC6清0,撤消編程脈沖INCBX;2764編程地址加1INCDI;編程數(shù)據(jù)源地址加1LOOPLOP…DL50MS:PROC;臨時子程序PUSHCXMOVCX,9CT:MOVAX,0560HBT:DECAXJNZBTLOOPCTPOPCXRETDL50MSENDP編寫系統(tǒng)配置開關DIP狀態(tài)測試程序圖65為8255A在PC機系統(tǒng)上的部分電路圖,其中8255A中的B口為輸出,C口為輸入,C口的高4位為一些狀態(tài)測試位,低4位與系統(tǒng)板上的DIP系統(tǒng)配置開關相連接?,F(xiàn)要讀取8個DIP開關的狀態(tài),放入DIP-STATE內(nèi)存單元。已知8255A的地址空間為060H~063H,試按要求編寫程序?!緟⒖即鸢浮縋114例98根據(jù)題意要求,程序如下:MOVAL,89H;設置方式控制字;方式0,B口輸出,C口輸入OUT63,ALMOVAL,0A5HOUT61H,ALINAL,62HANDAL,0FHMOVAH,ALMOVAL,0ADHOUT61H,ALNOPINAL,62HMOVCL,4ROLAL,CLANDAL,0F0HORAL,0AHMOVDIP_STATE,AL……編寫報警系統(tǒng)模型程序圖66所示為一報警系統(tǒng)模型,如果微型導線被碰斷,則揚聲器發(fā)出報警聲(連續(xù)的脈沖)。已知8255A的端口地址為20H~23H,A口和B口到工作于方式0,輸出?!緟⒖即鸢浮縋115例99該報警系統(tǒng)工作原理是:平時PC7為0,程序不斷檢測PC7,當PC7一旦變成高電平,就說明微型導線被碰斷,這時,從PC0輸出連續(xù)的脈沖揚聲器發(fā)生警報,頻率可通過DLAY(延時)子程序來調(diào)整。程序段如下:MOVAL,88HOUT23H,AL;寫控制字MOVAL,00OUT23H,AL;使PC0置0,放大器不工作WAIT:INAL,22HTESTAL,80HJZWAIT;測試PC7=0?LOP:MOVAL,01OUT23H,AL;PC7=0,輸出PC0=1,揚聲器發(fā)聲CALLDLAY;控制發(fā)聲頻率MOVAL,00OUT23H,ALCALLDLAYJMPLOP編寫8255A作為連接A/D接口的程序(一)圖67中,82555A作為連接A/D轉(zhuǎn)換器的借口,工作于方式0,設8255A的端口地址為:0F0H~0F3H?!緟⒖即鸢浮縋116例100MOVAL,9AH;控制字→ALOUT0F3H,AL;輸出控制字MOVAL,01HOUT0F3H,AL;設PC0,啟動ADCMOVAL,00HOUT0F3H,AL;復位PC0LP:INAL,0F2H;取EOC信號ANDAL,10HJZLP;如果ECO=0,循環(huán)INAL,0F0H;讀采樣結果MOV[BX],AL;保存INCBX;修改指針編寫8255A作為連接A/D接口的程序(二)如圖68所示,8255A的A口工作于方式1,為輸入口,端口C的PC7位設定為輸出端,與A/D轉(zhuǎn)換器的變換啟動信號相連,由PC7端產(chǎn)生正脈沖信號以啟動A/D轉(zhuǎn)換。A/D的忙端經(jīng)反向后作為采樣保持電路的控制信號,并且忙端經(jīng)下降沿觸發(fā)單穩(wěn)態(tài)電路,再經(jīng)反向輸出一個負方波到PC4端,作為端口A的數(shù)據(jù)輸入所存信號,將A/D轉(zhuǎn)換結果存入A的數(shù)據(jù)輸入鎖存信號,將A/D轉(zhuǎn)換結果存入A口的數(shù)據(jù)輸入寄存器。設8255A、B、C和控制寄存器的I/O地址分別為:300H、301H、302H和303H。試寫出8255A的初始化程序及啟動A/D轉(zhuǎn)換的程序。【參考答案】P116例1018255A的初始化程序MOVDX,303HMOVAL,0B0HOUTDX,AL啟動A/D變換及讀取轉(zhuǎn)換數(shù)據(jù)MOVDX,303HMOVAL,0FHOUTDX,ALMOVAL,0EHOUTDX,AL;送置位/復位空控制字,在PC7上產(chǎn)生一個正方波輸出,啟動ADCMOVDX,302HAGAIN:INAL,DXTESTAL,10HJZAGAIN;等待A/D轉(zhuǎn)換結果MOVDX,300HINAL,DX;從A口讀取轉(zhuǎn)換數(shù)據(jù)8255A用作A/D和D/A轉(zhuǎn)換子系統(tǒng)得接口,試編寫程序如圖69所示,要求如下:A/D轉(zhuǎn)換器能將輸入的模擬電壓信號轉(zhuǎn)換成數(shù)字量,它的工作由8255A的PC7線輸出的正脈沖啟動,轉(zhuǎn)換出來的8位數(shù)字量由8255A的端口A輸入。采樣保持其能使在A/D轉(zhuǎn)換期間,輸入的模擬電壓信號保持穩(wěn)定不變。A口工作于方式1輸入,不采用中斷方式。即PC4是它的選通輸入控制信號信號端,PC3是它的輸入緩沖器滿指示信號IBFA信號端,PC5的狀態(tài)供CPU查詢用。A/D轉(zhuǎn)換器收到PC7送來的轉(zhuǎn)換命令信號后,轉(zhuǎn)換過程開始。此間,“忙”信號變成1,“忙”信號一方面經(jīng)反相器送至采樣保持器的S/H端,在“忙”信號高電平時,使輸入的模擬電壓信號保持穩(wěn)定。另一方面,“忙”信號也送至一個負沿觸發(fā)的單穩(wěn)電路。當A/D轉(zhuǎn)換結束時,“忙”信號變低,此負沿信號觸發(fā)單穩(wěn)電路,給PC4線上送一負脈沖,從而將轉(zhuǎn)換好的數(shù)據(jù)所入A口的數(shù)據(jù)緩沖器,并使PC5(IBFA)變高。CPU不斷查詢IBFA的狀態(tài),當其為1時,表示A口輸入緩沖器滿,于是CPU將此數(shù)據(jù)輸入,從而完成一次A/D轉(zhuǎn)換輸入過程。B口工作于方式0輸出。D/A轉(zhuǎn)換器能將數(shù)字量轉(zhuǎn)換成模擬量送給外設。CPU向D/A轉(zhuǎn)換器輸出一個字節(jié)的數(shù)據(jù),就會立即被轉(zhuǎn)換成一個模擬信號。設此8255A的端口地址為:端口A:01F8H端口B:01F9H端口C:01FAH控制口:01FBH8255A的工作方式控制字為:D7D6D5D4D3D2D1D010110000方式標志A口方式1A口輸入C口高4位輸出B口方式0B口輸出C口低4位輸出【參考答案】P117例102程序如下:MOVDX,01FBHMOVAL,0B0H;置8255A工作方式控制字OUTDX,ALMOVAL,00001111B;啟動A/D轉(zhuǎn)換器OUTDX,ALDECALOUTDX,ALMOVDX,01FAHAGAIN:INAL,DXTESTAL,00100000B;轉(zhuǎn)換完否JZAGAIN;沒轉(zhuǎn)換完,則等待MOVDX,01F8H;否則將數(shù)據(jù)輸入INAL,DX…從寄存器AL向D/A轉(zhuǎn)換器輸出一個字節(jié)的數(shù)據(jù)MOVDX,01F9HOUTDX,AL簡述16位系統(tǒng)中并行接口的特點【參考答案】P119例10316位微機系統(tǒng)的輸入與輸出接口需要用2片8255A芯片構成,一片為偶地址端口,另一片為奇地址端口。偶地址端口的8255A芯片由CPU的地址線A0參與片選擇碼。其8位數(shù)據(jù)線同CPU的低8位數(shù)據(jù)線D0~D7相連;奇地址端口的8255A由CPU的總線高允許,參與片選譯碼,其8位數(shù)據(jù)線同CPU的高8位數(shù)據(jù)線D8~D15相連。8086CPU可以對一個8255A的各端口進行8位字節(jié)信息傳送,也可以對2個8255A的對應2個端口(兩個PA口,或兩個PB口,或兩個PC口)用一個總線周期實現(xiàn)偶地址字的傳送。編寫8255A作主、從兩個CPU系統(tǒng)的接口的程序使用兩臺CPU系統(tǒng),傳送100個數(shù)據(jù),一臺為主機CPU,相應的接口稱為主側(cè),另一臺為從CPU,其相應得借口稱為從側(cè)。主機CPU以中斷方式輸入輸出數(shù)據(jù),主側(cè)8255A工作在方式2,從機CPU采用查詢式輸入輸出數(shù)據(jù)。從側(cè)8255A工作在方式0(兩側(cè)8255A地址都是04A0H~04A6H)?!緟⒖即鸢浮縋119例104表5列出了主系統(tǒng)和從系統(tǒng)工作關系。硬件電路設計如圖70所示。程序流程圖如圖71所示。表5 主、從系統(tǒng)工作關系狀態(tài)口意義主系統(tǒng)從系統(tǒng)IBF=1輸入緩沖內(nèi)有數(shù)據(jù)主CPU可執(zhí)行輸入指令從CPU不能輸出數(shù)據(jù)IBF=0輸入緩沖內(nèi)無數(shù)據(jù)主CPU不可輸入數(shù)據(jù)從CPU執(zhí)行輸出指令OBF=1輸出緩沖器內(nèi)無數(shù)據(jù)主CPU可執(zhí)行輸出指令從CPU不能取數(shù)據(jù)OBF=0輸出緩沖器內(nèi)有數(shù)據(jù)主CPU不可輸出數(shù)據(jù)從CPU執(zhí)行輸入指令MOVBL,64H;輸入100個數(shù)計數(shù)器MOVCL,64H;輸出100個數(shù)計數(shù)器MOVSI,0100H;輸出數(shù)據(jù)所在內(nèi)存單元首址送SIMOVDI,0200H;輸入數(shù)據(jù)所在內(nèi)存單元首址送DIMOVDX,04A6H;8255A控制口地址送DXMOVAL,0C0H;工作方式2控制字寫入A口MOVDX,ALMOVAL,09H;PC4=1,允許輸入中斷MOVDX,ALMOVAL,0DH;PC6=1,允許輸出中斷STI;開中斷AA5:CMPBL,00HJNZAA5CMPCA,00HJNZAA5CLI;關中斷HALT…中斷服務程序INT:MOVDX,04A4H;8255A狀態(tài)口地址(C口)送DXINAL,DX;采集8255A狀態(tài)口的狀態(tài)值MOVAH,AL;保存狀態(tài)ANDAL,20H;判斷輸入緩沖器是否滿(PC5)JZAA1;IBF=0,無數(shù)據(jù),轉(zhuǎn)走MOVDX,04A0H;A口地址送DXINAL,DX;輸入緩沖器滿IBF=1,取數(shù)據(jù)MOV[DI],AL;保存數(shù)據(jù)INCDI;修改地址指針DECBLJMPAA2AA1:MOVAL,AHANDAL,80H;判斷輸出緩沖器是否滿JZAA2;OBF=0,滿,有數(shù)據(jù),轉(zhuǎn)向AA2MOVDX,04A0H;A口地址送入DXMOVAL,[SI];OBF=1,輸入緩沖器空,取數(shù)據(jù)OUTDX,AL;輸出數(shù)據(jù)INCSI;修改地址指針DECCLAA2:STIIBET從機程序MOVSI,0100H;源數(shù)所在的存儲單元首地址送SIMOVDI,0200H;目標數(shù)所在的存儲單元首地址送DIMOVBL,64H;設置輸入數(shù)據(jù)個數(shù)計數(shù)器MOVCL,64H;設置輸出數(shù)據(jù)個數(shù)計數(shù)器MOVDX,04A6H;8255A控制口地址送DXMOVAL,83H;寫工作方式選擇控制字(A口輸出,B口輸入)OUTDX,ALAA4:MOVDX,04A4H;C口地址送DXMOVAL,0F0H;初始化C口高4位OUTDX,ALINAL,DX;檢測C口低4位狀態(tài)MOVAH,ALANDAL,01H;檢測主系統(tǒng)IBF狀態(tài)JNZAA1;主側(cè)8255A輸入緩沖器滿轉(zhuǎn)走到AA1MOVAL,[SI];主側(cè)8255A輸入緩沖器空,可以取數(shù),向主CPU傳送數(shù)據(jù)MOVDX,04A0H;A口地址送DXOUTDX,AL;輸出數(shù)據(jù)給主側(cè)8255AMOVDX,04A4H;C口地址送DXMOVAL,0D0H;選通主側(cè)8255AOUTDX,ALMOVAL,0F0H;關閉選通信號OUTDX,ALINCSI;修改數(shù)據(jù)區(qū)地址指針DECCLJNCAA4CMPBL,00HJNZAA4AJMPAA3AA1:MOVAL,AHANDAL,02H;檢測主側(cè)8255A狀態(tài)JNZAA4;=1,主側(cè)8255A輸出緩沖器無數(shù)據(jù),轉(zhuǎn)向AA4MOVDX,04A4HMOVAL,0E0H;從側(cè)8255A發(fā)信號、啟動主側(cè)8255A輸出緩沖器OUTDX,ALMOVDX,04A2H;B口地址選DXINAL,DX;從主側(cè)8255A取數(shù)MOV[DI],AL;保存數(shù)據(jù)MOVDX,04A4HMOVAL,0E0H;從側(cè)8255A信號無效OUTDX,ALINCDI;修改數(shù)據(jù)區(qū)地址指針DECBLJNZAA4CMPCL,00HJNZAA4AA3:HALT簡述8255A并行接口的數(shù)據(jù)輸入過程【參考答案】124例105并行接口的數(shù)據(jù)輸入過程是:當外設準備好數(shù)據(jù)傳送(輸入)時,首先把數(shù)據(jù)送到接口的數(shù)據(jù)寄存器輸入端,當接收到接口的輸入緩沖區(qū)空信號(IBF=0)后,設備往接口發(fā)出輸入選通信號。該選通信號一方面把輸入數(shù)據(jù)送入接口的數(shù)據(jù)寄存器,另一方面把接口的準備好Ready位置。接口把數(shù)據(jù)送到內(nèi)部的輸入緩沖寄存器或緩沖區(qū),同時使IBF=1,即向設備發(fā)響應回答信號,通知設備輸入緩沖區(qū)已滿,暫緩送入新的數(shù)據(jù)。CPU接到接口要求輸入數(shù)據(jù)的中斷請求信號或查詢到接口準備好Ready=1,狀態(tài)位有效后,就從并行接口的輸入緩沖寄存器中讀取數(shù)據(jù),并清除接口中狀態(tài)寄存器相應的準備好Ready標態(tài)位,結束一次輸入傳送過程。ADC0809通過8255A同PC總線的接口舉例如圖72所示,地址譯碼器給出的地址范圍為80H~83H,的地址范圍為84H~87H,8255A設定為方式0工作,從輸入通道IN5輸入一個模擬量。問:寫出經(jīng)ADC0809轉(zhuǎn)換后的數(shù)字量讀入8086的AL的控制程序。說明圖71電路如何改動。【參考答案】P125例106程序如下:MOVAL,88HOUT106H,ALMOVAL,05HOUT102H,ALADDAL,10HOUT102H,ALSUBAL,10HOUT102H,ALLOP:INAL,104HTESTAL,80HJZLOPINAL,108HHLT根據(jù)題目給定條件,由于微處理器為8086,由它組成的系統(tǒng)中要注意地址奇/偶問題,所以8255A的A1、A0應與8086系統(tǒng)地址總線A2A1相連,并以此確定D地址,所以與8255A相連口地址為100H~106H與ADC0809地址為108H~10EH,其中A0懸空設為0,如圖73所示。編寫奇數(shù)地址中的數(shù)據(jù)依次輸出給1#設備,偶數(shù)地址中的數(shù)據(jù)依次輸出給2#設備的程序【參考答案】P126例107設1#和2#設備地址分別為50H和52H,在數(shù)據(jù)段中以2040H為首地址存儲區(qū)中存有100個字節(jié)數(shù)。程序如下:MOVCX,100MOVSI,2040HAGAIN:MOVAL,[SI]OUT52H,ALINCSIMOVAL,[SI]OUT50H,ALLOOPAGAINHLTADC0809通過8255A同8086CPU連接,8個通道,每個通道采樣24個數(shù)據(jù),試編寫程序ADC轉(zhuǎn)換電路如圖74所示,要求從模擬通道IN0開始轉(zhuǎn)換,連續(xù)采樣24個數(shù)據(jù)。然后采樣下一個通道,同樣采樣24個數(shù)據(jù),直至IN7。采樣后的數(shù)據(jù)存放在數(shù)據(jù)段中2000H開始的數(shù)據(jù)區(qū)中。【參考答案】P126例108其控制程序如下:DATA1SEGMENTORG2000HAREADB200DUP(?)…DATA1ENDSSTACK1SEGMENTDB50DUP(?)…STACK1ENDSCODEISEGMENTASSUMEDS:DATA1,SS:STACK1,CS:CODE1START:MOVAL,92HMOVDX,1C3HOUTDX,ALMOVAX,DATA1MOSDS,AXMOVSI,2000HMOVBL,8MOVDX,1C8HLOP1:MOVCX,18HLOP2:INAL,DXPUSHDXMOV-DX,1C11HLOP3:INAL,DXTESTAL,01HJZPOP3MOVDX,1C0HINAL,DXMOV[SI],ALINCSIPOPDXLOOPLOP2INCDXDELBLJN2LOP1HLT試述定時器/計數(shù)器8253的特點【參考答案】P159例1378253是一種可編程的定時器/計數(shù)器。有三個16位計數(shù)器,稱為三個計數(shù)通道。每個通道有三個引腳:CLK——計數(shù)輸入,用作計時基準輸入或計數(shù)脈沖輸入。GATE——選通(門控)輸入,用作啟動或禁止計數(shù)器工作。OUT——輸出信號,以相應的電平或脈沖波形指示計數(shù)的完成。8253有六種工作方式:方式0——減1計數(shù)到零時發(fā)中斷請求。方式1——可編程單脈沖輸出(硬件再觸發(fā)單脈沖輸出或稱程序可控單穩(wěn))。方式2——周期性時間間隔計時器(頻率發(fā)生器或稱速率發(fā)生器)。方式3——方波發(fā)生器。方式4——軟件觸發(fā)選通。方式5——硬件觸發(fā)選通。不同的工作方式可以由工作方式控制字選擇。8253有兩種計數(shù)方式:二進制計數(shù),計數(shù)范圍1~65536(寫入計數(shù)初值0時為65536)。十進制計數(shù),計數(shù)范圍1~10000(寫入計數(shù)初值0時為10000)。在六種工作方式中,只有方式2和方式3輸出波形時連續(xù)波形,寫入一次計數(shù)初值后,當計數(shù)通道減1,技術寄存器到零時,一方面輸出端OUT輸出一指定波形,另一方面自動地將計數(shù)值寄存器中的處置減1,裝入計數(shù)寄存器,開始新一輪的減1計數(shù)。這樣,就可得到連續(xù)的輸出波形,直到GATE變低為止。8253A有哪6種工作方式【參考答案】P160例1388253A具有6種工作方式,在任何一種方式下,都必須先向8253寫入控制字??刂谱诌€起復位作用,它使OUT端變?yōu)楣ぷ鞣绞街幸?guī)定的狀態(tài)和對計數(shù)初值寄存器清零,然后再寫入初值到計數(shù)器。0是計數(shù)器所能容納的最大初值。二進制計數(shù)時,16位計數(shù)器中,0相當于216=0000H,用BCD碼計數(shù)時,0相當于104。方式0——計數(shù)結束產(chǎn)生中斷特點:計數(shù)過程有軟件啟動。每寫入一次計數(shù)初值,就啟動一次計數(shù)過程。門控信號GATE的作用是開放計數(shù)或禁止計數(shù),高電平是開放,低電平是禁止。輸出信號OUT由低變高表示計數(shù)過程結束,若計數(shù)初值為N,則OUT低電平的時間為N+1個CLK(時鐘)周期的時間。方式0主要用于事件計數(shù),OUT信號可作為中斷請求信號。方式1——硬件可充觸發(fā)單穩(wěn)態(tài)方式特點:計數(shù)器的啟動只能由門控脈沖GATE的上升沿產(chǎn)生,即只能用硬件啟動計數(shù)器,不能用軟件啟動計數(shù)器。OUT輸出為一個單穩(wěn)態(tài)脈沖,其負脈沖的寬度為計數(shù)數(shù)值N個CLK時鐘脈沖的周期之和。在形成單穩(wěn)態(tài)脈沖過程中,可以重觸發(fā),使Out輸出的負脈沖加寬。改變計數(shù)初值N即可產(chǎn)生不同寬度的負脈沖,從而可獲取變寬脈沖信號。方式2——速率發(fā)生器特點:計數(shù)初值可自動、重復地裝入減1計數(shù)器中,所以只要CLK是周期性的脈沖序列,在OUT端上就能連續(xù)地輸出周期性分頻信號。計數(shù)器的啟動,即可用軟件,又可用硬件。對于某個頻率CLK脈沖信號的前提下,改變計數(shù)初值N,即可獲得不同速率的OUT輸出信號,這就是速率發(fā)生器名稱的來歷。若計數(shù)初值為N,則OUT輸出的正脈沖寬度為(N-1)個CLK脈沖周期之和,而負脈沖寬度均為一個CLK脈沖的周期。方式2主要應用作為分頻器和時基信號,它可方便地從系統(tǒng)時鐘PCLK中獲得符合某種頻率要求的標準信號,供系統(tǒng)使用。方式3——方波方式特點:計數(shù)初值N能自動裝入減法計數(shù)器中,所以只要CLK是周期性脈沖序列,則OUT端將連續(xù)輸出方波信號。計數(shù)器啟動過程有軟件啟動和硬件啟動兩種。改變計數(shù)初值N,OUT端將輸出不同頻率的方波,從而實現(xiàn)一個方波發(fā)生器的輸出要求。方式3主要應用作為方波脈沖發(fā)生器和波特率發(fā)生器。在串行通信中所需的時鐘信號可用8253的方式3來提供,由于它是決定數(shù)據(jù)傳送速率之一的波特率的高低,所以方式3又稱為波特率發(fā)生器。當計數(shù)初值N為偶數(shù)時,方波的高電平時間等于低電平時間均等于N/2個CLK周期。當N為奇數(shù)時,OUT保持高電平的時間為[(N-1)/2+1]個CLK脈沖周期之和,低電平的時間為(N-1)/2個CLK脈沖周期和。方式4——軟件觸發(fā)選通方式特點:與方式0比較,主要區(qū)別是OUT端輸出負脈沖的寬度不同,在方式0種是N+1個CLK脈沖周期之和,但在方式4種是一個CLK脈沖周期。其次是計數(shù)期間的輸出極性相反。方式0時低電平輸出,方式4時高電平輸出。方式5——硬件觸發(fā)選通方式特點:與方式1相比,兩者均為硬件觸發(fā)啟動計數(shù)器工作的方式,但OUT端輸出的負脈沖寬度不一樣,方式1的負脈沖寬度為計數(shù)初值N個CLK脈沖周期之和,而方式5的輸出負脈沖寬度僅為一個CLK脈沖周期。試述8253的工作方式控制字的格式【參考答案】P161例139在8253初始化時,由CPU向8253的控制寄存器寫入一個工作方式控制字,它規(guī)定了8253的工作方式,其格式如圖97所示。BCD為用來設置計數(shù)值格式,這位為1時,計數(shù)值為BCD碼格式,這位為0時,計數(shù)值為二進制格式。由于初值寄存器是16位的,在采用二進制計數(shù)時,寫入的初值范圍為0000H~FFFFH,其中0000H是最大值,代表65536。在BCD碼計數(shù)時,寫入的范圍為0000~9999,其中0000是最大值,代表104=10000。寫計數(shù)初值是,若RL1RL0=01時,則計數(shù)初值只有8位,并送入計數(shù)初值寄存器的低8位,而高8位自動清零。若RL1RL0=10時,只寫高8位,低8位自動清零(適合于數(shù)值較大且低8位為零的場合)。D7D6D5D4D3D2D1D0SC1SC0RL1RL0M2M1M0BCD計數(shù)器選擇讀寫格式工作方式0=二進制1=BCD碼00=計數(shù)器001=計數(shù)器110=計數(shù)器211=非法00=計數(shù)器鎖存01=只寫低8位10=只寫高8位11=先寫低8位后寫高8位000=方式0001=方式1010=方式2011=方式3100=方式4101=方式50=二進制1=BCD碼圖978253工作方式控制字如何對8253A進行初始化編程【參考答案】P162例1408255A的初始化編程包括向控制寄存器寫控制字和向計數(shù)初值寄存器寫計數(shù)初值。對每個計數(shù)器初始化時,必須先寫控制字,然后寫計數(shù)初值。寫計數(shù)初值時,必須遵照控制字RW1和RW0規(guī)定的格式寫入計數(shù)初值。即當RW1、RW2為01時,則只寫低位字節(jié),高位字節(jié)自動清‘0’;若RW1、RW0為01匙,則只寫高位字節(jié),低位字節(jié)自動清‘0’;若RW1、RW0為11時,則寫低位字節(jié),再寫高位字節(jié)。在8086微機系統(tǒng)中,8253A占用的端口地址為:00E0H,00E2H,00E4H和00E6H。8253A共有6種工作方式,分別敘述如下:假定8253A的計數(shù)器工作在方式0,僅用8位二進制計數(shù),其計數(shù)初值為4,初始化程序如下:MOVAL,50H;設置控制字OUT00E6H,AL;寫入計數(shù)器1控制寄存器MOVAL,4;設置計數(shù)初值OUT00E2H,AL;初始寫入計數(shù)器1的計數(shù)初值寄存器設定計數(shù)器0工作與方式1,計數(shù)初值為4,按二進制計數(shù),初始化程序為:MOVAL,12H;設置計數(shù)器0的控制字OUT00E6H,ALMOVAL,4;設置計數(shù)初值OUT00E0H,AL設定8253的計數(shù)器2工作與方式2,按二進制計數(shù),計數(shù)初值為4,初始化程序為:MOVAL,94H;設置控制字OUT00E6H,ALMOVAL,4;設置計數(shù)初值OUT00E4H,AL設定8253的計數(shù)器2工作與方式3,按二進制計數(shù),計數(shù)初值為4,初始化程序為:MOVAL,96H;設置控制字OUT00E6H,ALMOVAL,4;設置計數(shù)初值OUT00E4H,AL設定8253的計數(shù)器1工作與方式4,按二進制計數(shù),計數(shù)初值為4,初始化程序為:MOVAL,58H;設置控制字OUT00E6H,ALMOVAL,4;設置計數(shù)初值OUT00E2H,AL設定8253的計數(shù)器0工作與方式5,按二進制計數(shù),計數(shù)初值為4,初始化程序為:MOVAL,1AH;設置控制字OUT00E6H,ALMOVAL,4;設置計數(shù)初值OUT00E0H,AL設定8253的計數(shù)器2工作與方式2,按二進制計數(shù),計數(shù)初值為0304,初始化程序為:MOVAL,0304H;設控制字OUT00E6H,AL;控制字寫入計數(shù)器2控制寄存器MOVAL,04H;計數(shù)器低字節(jié)OUT00E6H,AL;低字節(jié)寫入計數(shù)器2的CRMOVAL,03H;計數(shù)器高字節(jié)OUT00E4H,AL;高字節(jié)寫入計數(shù)器2的CR設定8253的計數(shù)器1工作與方式1,按BCD碼計數(shù),計數(shù)初值為4000,初始化程序為:MOVAL,63H;設置控制字OUT00E6H,ALMOVAL,40;設置計數(shù)器初值4000OUT00E2H,AL8253方式0的初始化、GATE的作用及計數(shù)初值修改等的波形圖【參考答案】P164例141設定8253計數(shù)器通道0工作于方式0,僅用8位二進制計數(shù),其計數(shù)值為4。設8253端口地址為:40H~43H初始化程序為:MOVAL,10H;設置控制字OUT43H,AL;寫入控制字寄存器MOVAL,4;設置計數(shù)初始值OUT40H,AL;初始值寫入通道0的CR若門控制信號GATE為高電平;則執(zhí)行完初始化程序后,OUT引腳輸出的波形如圖98所示。門控信號GATE的作用在方式0計數(shù)過程中,GATE信號的作用如圖99所示,當GATE為低電平時,計數(shù)器停止對CLK脈沖的計數(shù),只有當GATE恢復為高電平時,計數(shù)器才能重新恢復對CLK脈沖的計數(shù)。計數(shù)初值的修改在方式0計數(shù)過程中,修改計數(shù)值時的計波形如圖100所示。執(zhí)行改變計數(shù)值的指令,在上升沿后的第一個CLK下跳沿處,新計數(shù)值裝入CE,并按新計數(shù)值繼續(xù)計數(shù)。8253方式1的初始化、GATE的作用及計數(shù)初值修改等的波形圖【參考答案】P164例142設定8253計數(shù)器通道1工作于方式1,僅用8位二進制計數(shù),其計數(shù)初值為3。設8253端口地址為:40H~43H初始化程序為:MOVAL,52HOUT43H,ALMOVAL,3OUT41H,AL在方式1中,OUT引腳輸出的波形如圖101所示。寫入控制字后,OUT引腳輸出立即變?yōu)楦唠娖?、但并不開始計數(shù),只有當GATE出現(xiàn)正跳變后的第1個CLK下降沿,OUT引腳輸出才變?yōu)榈碗娖?,同時CR計數(shù)值裝入CE,隨后的CLK下降沿使計數(shù)器減1,在第3個CLK下降沿,計數(shù)器減到0,OUT輸出立即變?yōu)楦唠娖?。所以OUT出現(xiàn)低電平的持續(xù)時間為3個CLK周期的時間,只有再次出現(xiàn)GATE正跳變信號后的第一個CLK下降沿,才會使OUT輸出立即變?yōu)榈碗娖?,計?shù)器又重新開始計數(shù)。門控信號GATE的作用及波形8253方式計數(shù)過程中,出現(xiàn)GATE正跳變在出發(fā)信號的波形,如圖102所示,不改變OUT輸出狀況,到再觸發(fā)信號到達后的第一個CLK的下降沿有從初值開始重新計數(shù),而不管原來減1計數(shù)到多少值。計數(shù)初值的修改在方式1計數(shù)過程中,修改計數(shù)值時的計波形如圖103所示。新修改值并不影響計數(shù)過程,計數(shù)器減到0,OUT輸出變?yōu)楦唠娖?。一直等到下一次GATE正跳變觸發(fā)信號到來,才將新初值裝入CE,并使OUT輸出變?yōu)榈碗娖?,又從新的初始值重新開始計數(shù)。8253方式2的初始化、GATE的作用及計數(shù)初值修改等的波形圖【參考答案】P166例143設定8253計數(shù)器通道2工作于方式2,按二進制計數(shù),其計數(shù)值為3。設8253端口地址為:80H~83H初始化程序為:MOVAL,94HOUT43H,ALMOVAL,3OUT42H,AL若門控制信號GATE為高電平;則執(zhí)行完初始化程序后,OUT引腳輸出的波形如圖104所示。設初始值為3,OUT引腳經(jīng)過3個CLK周就有一個寬度為CLK周期寬度的負脈沖輸出。GATE的作用及波形圖在方式2中,GATE信號的變化,對計數(shù)過程和OUT引腳輸出的影響如圖105所示,當GATE變低時,立即暫?,F(xiàn)行計數(shù),當GATE信號變高后第一個CLK下降沿將初始值重新裝入CE,并從初始值起重新開始計數(shù)。計數(shù)初值的修改在方式2計數(shù)過程中,修改計數(shù)初始值,對OUT引腳輸出波形的影響如圖106所示。在計數(shù)過程中,CPU重新寫入初始值時,對于現(xiàn)行計數(shù)過程無影響,只有當減1計數(shù)到0,OUT引腳輸出一個負脈沖后,再變?yōu)楦唠娖?,計?shù)器便將更改后的初始值裝入CE,并按新值開始計數(shù)。8253方式3的初始化、GATE的作用及計數(shù)初值修改等的波形圖【參考答案】P166例144設定8253計數(shù)器通道0工作于方式3,按二進制計數(shù),其計數(shù)值為4。設8253端口地址為:80H~83H初始化程序為:MOVAL,94H;設置控制字OUT43H,ALMOVAL,4;設置初始值OUT42H,AL在方式3中,當初始值為4(偶數(shù))時,波形圖如圖107所示。寫入控制字后,OUT輸出引腳立即變?yōu)楦唠娖健懭氤跏贾岛蟮牡谝粋€CLK下降沿,初始值從CR裝入CE。每個CLK的下降沿,都使計數(shù)單元減2。當減2計數(shù)到0時,OUT輸出變?yōu)榈碗娖剑瑫r又重新裝入初始值。然后從初始值開始,每來一個CLK下降沿,使計數(shù)器單元減2,直至減到0,OUT輸出又變?yōu)楦唠娖剑谥貜蜕鲜鲞^程。所以當初始值為4(偶數(shù))時,OUT輸出時周期為4,占空度為50%的方波,就是說OUT輸出時2個CLK周期寬的高電平,2個CLK周期寬的低電平。在方式3中,當初始值為5(奇數(shù))時,波形如圖108所示。OUT引腳輸出波形是這樣的方波

溫馨提示

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

評論

0/150

提交評論