15年嘉定微機(jī)實(shí)驗(yàn)指導(dǎo)書DOC_第1頁
15年嘉定微機(jī)實(shí)驗(yàn)指導(dǎo)書DOC_第2頁
15年嘉定微機(jī)實(shí)驗(yàn)指導(dǎo)書DOC_第3頁
15年嘉定微機(jī)實(shí)驗(yàn)指導(dǎo)書DOC_第4頁
15年嘉定微機(jī)實(shí)驗(yàn)指導(dǎo)書DOC_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、微機(jī)原理實(shí)驗(yàn)指導(dǎo)書同濟(jì)大學(xué)電子與信息工程學(xué)院2015年 5 月實(shí)驗(yàn)一顯示程序?qū)嶒?yàn)1. 實(shí)驗(yàn)?zāi)康?1) 掌握在PC機(jī)上以十六進(jìn)制形式顯示數(shù)據(jù)的方法。(2) 掌握部分DOS功能調(diào)用使用方法。(3) 熟悉Tddebug調(diào)試環(huán)境和 Turbo Debugger的使用。2. 實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)。3. 實(shí)驗(yàn)內(nèi)容及說明一般來說,有很多程序需要顯示輸出提示運(yùn)行的狀況和結(jié)果,有的還需要將數(shù)據(jù)區(qū)中的內(nèi)容顯示在屏幕上。 本實(shí)驗(yàn)要求將指定數(shù)據(jù)區(qū)的數(shù)據(jù)以十六進(jìn)制數(shù)形式顯示在屏幕上,并通過DOS功能調(diào)用完成一些提示信息的顯示。實(shí)驗(yàn)中使用DOS功能調(diào)用INT 21H。(1) 顯示單個(gè)字符輸出(2) 顯示字符串:(3) 返

2、回DOS系統(tǒng):4. 實(shí)驗(yàn)步驟運(yùn)行Tddebug軟件,選擇Edit菜單,根據(jù)實(shí)驗(yàn)內(nèi)容的描述編寫實(shí)驗(yàn)程序,本實(shí)驗(yàn) 顯示部分參考實(shí)驗(yàn)流程如圖1所示。使用Compile菜單中的Compile和Link對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。使用Rmrun菜單中的Run,運(yùn)行程序,觀察運(yùn)行結(jié)果。使用Rmrun菜單中的Debug,調(diào)試程序,觀察調(diào)試過程中,數(shù)據(jù)傳輸指令執(zhí)行后, 各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。:入口:入口:入口:AH=02H ,調(diào)用參數(shù)AH=09H ,調(diào)用參數(shù)AH=4CH,調(diào)用參數(shù)DL出字符DS:DX=|地址, $'為結(jié)束字符AL=返回碼(1)職宇卞r的高弓創(chuàng)圖1顯

3、示程序?qū)嶒?yàn)流程圖5.參考程序清單;顯示程序?qū)嶒?yàn)STACK1 SEGMENT STACK3STACK1DW 256 DUP ( ? )ENDSDATAMESMES1SDDATASEGMENTDBDBDBENDS'Press any key to exit!',0AH,0DH,0AH,0DH,'$' ; 0AH 為換行、 0DH 為回車。 'Show a as hex:',0AH,0DH,'$''a'CODESTART:SEGMENTASSUME CS:CODE,DS:DATA MOV AX , DATA MOV MO

4、V MOV INT MOV MOV INT MOV MOV AND SHR CMPDS,DX, AH, 21HDX, AH, 21H SI,AL, AL, AL, AL,AXOFFSET MES09HOFFSET MES109HOFFSET SD SI 0F0H4 0AH顯示退出提示show message取高 4 位,并顯示。是否是 A 以上的數(shù)JB C2 ADDC2:ADD AL ,30HMOVDL,AL; show characterMOVAH,02HINT 21HMOVAL,SIANDAL,0FH;取低 4 位,并顯示。CMPAL,0AHJB C3ADDAL,07HC3:ADDAL,3

5、0HMOVDL,ALMOVAH,02HINT21HKEY:MOVAH ,1; 判斷是否有按鍵按下?INT 16H; BIOS 調(diào)用,讀鍵盤緩沖區(qū)字符JZ KEY; ZF=1 緩沖區(qū)空,無鍵盤輸入MOVAX,4C00H; go back to dosINT 21HCODEENDSENDSTARTAL,07H實(shí)驗(yàn)二 數(shù)碼轉(zhuǎn)換程序?qū)嶒?yàn) 1. 實(shí)驗(yàn)?zāi)康?掌握不同進(jìn)制數(shù)及編碼相互轉(zhuǎn)換的程序設(shè)計(jì)方法。2. 實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)。53. 實(shí)驗(yàn)內(nèi)容及說明計(jì)算機(jī)輸入設(shè)備輸入的信息一般是由ASCII碼或BCD碼表示的數(shù)據(jù)或字符,CPU 般均用二進(jìn)制數(shù)進(jìn)行計(jì)算,處理結(jié)果的輸出又必須依照外設(shè)的要求變?yōu)锳SCII碼、

6、BCD碼或七段顯示碼等。因此,在應(yīng)用軟件中,各類數(shù)制的轉(zhuǎn)換和代碼的轉(zhuǎn)換是必不可少的。計(jì)算機(jī) 與外設(shè)間的數(shù)碼轉(zhuǎn)換關(guān)系如圖2所示。 要求編寫顯示子程序。二進(jìn)制圖2計(jì)算機(jī)與外設(shè)間的數(shù)碼轉(zhuǎn)換關(guān)系(1) 將ASCII碼表示的十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)n十進(jìn)制數(shù)可以表示為:Di 10 Dn 10n Dn10nD0 100,其中Dii =0代表十進(jìn)制數(shù)1、2、39、0。n上式可轉(zhuǎn)換為:' Di 10 -川Dn x10 + Dn_, )X10+Dn/N10川+D<! <10+D0i =0由上式可歸納十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制的方法:從十進(jìn)制數(shù)的 最高位Dn開始作乘10加次位的操作,依次迭代類推,則可

7、求出二進(jìn)制數(shù)結(jié)果。本實(shí)驗(yàn)要求將緩沖區(qū)中的一個(gè)五位十進(jìn)制數(shù)00012的ASCII碼轉(zhuǎn)換成二進(jìn)制數(shù),并將轉(zhuǎn)換結(jié)果按位顯示在屏幕上。轉(zhuǎn)換過程的參考流程如圖3所示。恥第一位Ascmt:Z1C丄 特骰丸否T. 丄y圖3十進(jìn)制ASCII轉(zhuǎn)換為二進(jìn)制數(shù)參考流程;將ASCII碼十進(jìn)制數(shù)轉(zhuǎn)換為二進(jìn)制數(shù)STACK1 SEGMENT STACKDW 256 DUP ( ?)STACK1 ENDSDDATA SEGMENTMES1DB'The ascii code of decimal code are:$'BUFDB30H,30H,30H,31H,32HDB10H DUP ( 0 )DDATAEND

8、SCODE SEGMENTASSUME CS:CODE,DS:DDATASTART: MOV AX ,DDATAMOV DS, AX8#MOVSI,OFFSETBUFMOVBX,000AHMOVCX,0004HMOVAH ,00HMOVAL,SISUBAL,30HA1:MULBXADDAL,SI+01SUBAL,30HINCSILOOPA1MOVSI,AXMOVDX,OFFSETMES1MOVAH ,09HINT21HINCSICALL SHOWDECSICALL SHOWMOVAX,4C00HINT21H;顯示高字節(jié);顯示低字節(jié)9;編寫顯示子程序54321的ASC n碼存放在數(shù)據(jù)區(qū)中,轉(zhuǎn)換S

9、HOW PROC NEARSHOW ENDPCODE ENDS END START(2) 將十進(jìn)制數(shù)的 ASCII 碼轉(zhuǎn)換為 BCD 碼 本實(shí)驗(yàn)要求將鍵盤輸入的一個(gè)五位十進(jìn)制數(shù)為BCD碼后,并將轉(zhuǎn)換結(jié)果按位分別顯示于屏幕上。若輸入的不是十進(jìn)制數(shù)的 ASC n碼,則輸出“ FF”。提示:一字節(jié) ASC n碼取其低四位即變?yōu)?BCD碼。轉(zhuǎn)換部分的實(shí)驗(yàn)流#程參見圖4。10#I'iASC7i.B? =ASCIl-iOHXI:丄轉(zhuǎn)我宣杏?塔霹-顯云圖4十進(jìn)制ASCII轉(zhuǎn)換為BCD碼數(shù)參考流程;將十進(jìn)制數(shù)的 ASCII碼轉(zhuǎn)換為BCD碼STACK1 SEGMENT STACKDW 256 DUP (

10、 ?)STACK1 ENDSDDATA SEGMENTMES1DB 'The BCD code of decimal are:$'BUFDB 31H,32H,33H,34H,35HDB 10H DUP ( 0 )DDATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DDA TA#MOVMOVMOVDS,AXCX,0005HDI,OFFSETBUFA1:MOVBL,OFFHMOVAL, DICMPAL,3AH;比較START: MOVAX , DDATAAL中的數(shù)是否是 09的ASCII碼11JNB A2 SUB AL,30HJB A2MOV BL ,A

11、LA2: MOV AL ,BLMOV DI+05H , ALINC DI LOOP A1 MOV SI , DI MOV CX , 05H MOV DX , OFFSET MES1 MOV AH , 09H INT 21HA3: CALL SHOWMOV DL , 20HMOV AH , 02HINT 21HINC SI LOOP A3 MOV AX , 4C00H INT 21HSHOW PROC NEAR ;編寫顯示子程序SHOW ENDP CODE ENDSEND START4. 實(shí)驗(yàn)步驟(1) 運(yùn)行 Tddebug 軟件,選擇 Edit 菜單,根據(jù)實(shí)驗(yàn)內(nèi)容描述的數(shù)碼轉(zhuǎn)換內(nèi)容分別編寫 實(shí)

12、驗(yàn)程序。(2) 利用 Compile 菜單中的 Compile 和 Link 對(duì)實(shí)驗(yàn)程序進(jìn)行匯編、連接。(3) 利用Rmrun菜單中的Run,運(yùn)行程序,觀察運(yùn)行結(jié)果。(4) 使用Rmrun菜單中的Debug,調(diào)試程序,觀察調(diào)試過程中,數(shù)據(jù)傳輸指令執(zhí)行后,各寄存器及數(shù)據(jù)區(qū)的內(nèi)容。(5) 編寫顯示子程序,并更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。實(shí)驗(yàn)三 循環(huán)程序設(shè)計(jì)實(shí)驗(yàn)1. 實(shí)驗(yàn)?zāi)康?掌握循環(huán)程序的設(shè)計(jì)方法。2. 實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)。3. 實(shí)驗(yàn)內(nèi)容及說明一個(gè)循環(huán)程序通常由以下幾個(gè)部分組成:1) 循環(huán)初始化部分:用于對(duì)相關(guān)內(nèi)存單元及寄存器設(shè)置初始值,如設(shè)置地址指針、循環(huán)次數(shù)、某些標(biāo)志位等。只有正確

13、地進(jìn)行了初始化設(shè)置,循環(huán)程序才能正確運(yùn)行并及時(shí)停止。2)循環(huán)體:對(duì)要求重復(fù)執(zhí)行的程序段部分,對(duì)應(yīng)于要求重復(fù)執(zhí)行的操作。3)循環(huán)控制部分:為下一輪處理修正地址指針及循環(huán)次數(shù)等,并判斷循環(huán)結(jié)束的條件是否滿足,若滿足則退出循環(huán)。4)循環(huán)結(jié)束部分:用于保存循環(huán)運(yùn)行的結(jié)果等。5)編寫顯示子程序,并更改數(shù)據(jù)區(qū)中的數(shù)據(jù),考察程序的正確性。4. 編寫程序完成對(duì) 10個(gè)數(shù)的求和 并顯示(P101)10SUM =df = Qj. + 2 + + 肛 io i=l分析:需分配空間保存和數(shù)( SUM),在循環(huán)體中進(jìn)行求和操作。參考程序清單:DATA SEGMENTBUFFER DW 1,2, 3, 4, 5, 6,

14、7, 8, 9, 10;原始 10 個(gè)數(shù)據(jù);存放和數(shù)'STACK'SUMDW ?DATAENDSSTACSEGMENT STACKDB100 DUP ( ?)STACENDSCODESEGMENTASSUME CS:CODE,START:MOVAX , DATAMOVD S, AXMOVAX , 0MOVDI , OFFSETMOVBX , OFFSETMOVCX , 10LOOP1:ADDAX , BXINCBXINCBXDECCXJNZLOOP1MOVDI , AXMOVAX , 4C00HINT21HDS:DATASUMBUFFER;AX中為和數(shù),初始為 0;存放結(jié)果地址

15、送 DI;數(shù)據(jù)緩沖區(qū)首地址,送 BX;循環(huán)次數(shù)送CX;累加;修改數(shù)據(jù)緩沖區(qū)地址;次數(shù)減1;至 10次了嗎?不到,;轉(zhuǎn)L00P1;到10次,存放結(jié)果;填寫調(diào)用指令: 返回DOSSHOW;編寫顯示子程序CODE ENDSEND START實(shí)驗(yàn)四子程序設(shè)計(jì)實(shí)驗(yàn)1. 實(shí)驗(yàn)?zāi)康模?)掌握子程序的定義調(diào)用方法。(2)掌握系統(tǒng)功能調(diào)用程序的使用和編寫方法。2. 實(shí)驗(yàn)設(shè)備PC微機(jī)一臺(tái)。3. 實(shí)驗(yàn)內(nèi)容及說明將內(nèi)存中的一串1位十六進(jìn)制數(shù)轉(zhuǎn)換為其對(duì)應(yīng)的ASCII碼并顯示(P105)。例如:十六進(jìn)制2所對(duì)應(yīng)的ASCII碼為32H,而十六進(jìn)制數(shù) C所對(duì)應(yīng)ASCII碼為C'(即43H)。分析:將一個(gè)十六進(jìn)制數(shù)轉(zhuǎn)化

16、為其對(duì)應(yīng)的ASCII碼的功能設(shè)計(jì)為子程序。主程序分若干次調(diào)用該子程序,但每次調(diào)用的參數(shù)為不同的待轉(zhuǎn)換的十六進(jìn)制數(shù)。4. 程序清單如下:DATASEGMENTHEXBUFDB 02H, 08H, 0AH, 09H, 0FH;待轉(zhuǎn)換的一串 1位十六進(jìn)制數(shù)COUNTEQU $ - HEXBUF; COUNT的值為這一串十六進(jìn)制數(shù)的個(gè)數(shù)DATAENDSSTACSEGMENT STACK 'STACK'DB 100 DUP ( ?)STACENDSCODESEGMENTASSUME CS: CODE, DS: DATA,SS: STAC;子程序HEXD :將1位十六進(jìn)制數(shù)轉(zhuǎn)換為其對(duì)應(yīng)的A

17、SCII碼;入口參數(shù):AL含待轉(zhuǎn)換的1位十六進(jìn)制數(shù);出口參數(shù):AL含轉(zhuǎn)換完的結(jié)果(ASCII碼)HEXD PROC NEARCMP AL, 0AHJL ADDZADD AL,7H ; ' A ' - ' O' -0AHADDZ:ADD AL,30H ;填寫指令 ;填寫指令 ;填寫指令RETHEXD ENDP;以下為主程序BEGIN:MOVAX,DATAMOVDS,AXMOVBX, OFFSET HEXBUFMOV CX ,COUNTREPEAT0: MOV AL ,BXCALL HEXDMOV BX , AL INC BXLOOP REPEAT0MOV AX ,

18、 4C00H INT 21HCODE ENDSEND BEGIN實(shí)驗(yàn)五 8259 中斷控制器應(yīng)用實(shí)驗(yàn)1 實(shí)驗(yàn)?zāi)康?1) 學(xué)習(xí)中斷控制器 8259 的工作原理。(2) 掌握可編程控制器 8259 的應(yīng)用編程方法。2 實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)、 TD-PIT+ 實(shí)驗(yàn)系統(tǒng)一套。3 實(shí)驗(yàn)內(nèi)容(1) 利用 PC 機(jī)給實(shí)驗(yàn)系統(tǒng)分配的中斷線,設(shè)計(jì)一個(gè)單中斷應(yīng)用。使用單次脈沖模擬中 斷產(chǎn)生。編寫中斷處理程序,在顯示器屏幕上顯示一個(gè)字符。(2)利用實(shí)驗(yàn)平臺(tái)上 8259 控制器對(duì)擴(kuò)展系統(tǒng)總線上的中斷線 INTR 進(jìn)行擴(kuò)展。編寫程 序?qū)?8259 控制器的 IR0 和 IR1 中斷請(qǐng)求進(jìn)行處理。4 實(shí)驗(yàn)原理(1) 8

19、259 控制器的介紹中斷控制器 8259A 是 Intel 公司專為控制優(yōu)先級(jí)中斷而設(shè)計(jì)開發(fā)的芯片。它將中斷源優(yōu) 先級(jí)排隊(duì)及提供中斷矢量的電路集于一片中,因此無需附加任何電路,只需對(duì) 8259A 進(jìn)行 編程,就可以管理 8 級(jí)中斷,中斷結(jié)構(gòu)可以由用戶編程來設(shè)定。同時(shí), 在不需增加其他電路 的情況下, 通過多片 8259A 的級(jí)連,能構(gòu)成多達(dá) 64 級(jí)的矢量中斷系統(tǒng)。 它的管理功能包括:a) 記錄各級(jí)中斷源請(qǐng)求;b) 判別優(yōu)先級(jí),確定是否響應(yīng)和響應(yīng)哪一級(jí)中斷;c) 響應(yīng)中斷時(shí),向 CPU 傳送中斷類型號(hào)。8259A 的命令共有 7 個(gè),一類是初始化命令字, 另一類是操作命令。 8259A 的編程

20、就是 根據(jù)應(yīng)用需要將初始化命令字 ICW1-ICW4 和操作命令字 OCW1- OCW3 分別寫入初始化命 令寄存器組和操作命令寄存器組。(2) 8259 寄存器及命令的控制訪問在硬件系統(tǒng)中, 8259 僅占用兩個(gè)外設(shè)接口地址,在片選有效的情況下,利用 A0 來尋 址不同的寄存器和命令字。對(duì)寄存器和命令的訪問控制如表1 所示。表18259寄存器及命令的控制訪問AllD4D3讀信號(hào)寫信號(hào)片遺操作0010讀出ISR.IRR的內(nèi)容10L0讀出的內(nèi)容000100寫扎OCW2001100寫入OCW301X100寫 MCW11XX100寫入 OCW1, ICW2, ICW3, l:CW4(3) PC微機(jī)系

21、統(tǒng)中的8259在80x86系列PC微機(jī)系統(tǒng)中,系統(tǒng)中包含了兩片 8259A中斷控制器,經(jīng)級(jí)連可以管理 15級(jí)硬件中斷,但其中部分中斷號(hào)已經(jīng)被系統(tǒng)硬件占用,具體使用情況如表2示。兩片8259A的端口地址為:主片8259使用020H和021H兩個(gè)端口;從片使用0A0H和0A1H兩個(gè)端口。 系統(tǒng)初始化兩片8259的中斷請(qǐng)求信號(hào)均采用上升沿觸發(fā),采用全嵌套方式,優(yōu)先級(jí)的排列 次序?yàn)?級(jí)最高,依次為1級(jí)、8級(jí)15級(jí),然后是3級(jí)7級(jí)。在擴(kuò)展系統(tǒng)總線上的INTR對(duì)應(yīng)的中斷線就是 PC機(jī)保留中斷其中的一個(gè)。對(duì)INTR中斷的初始化PC機(jī)已經(jīng)完成,在使用時(shí)主要是將其中斷屏蔽打開,修改中斷向量。表2 PC微機(jī)系統(tǒng)中

22、的硬件中斷中斷號(hào)功能中斷向量號(hào)中斷向量地址主 8259 1RQO曰吋鐘計(jì)救歸0D8HOD2OH-0023H主 S259 1R.Q1璉盤O9H002-OO27H主 S259 IRQ2按從片82590AH0D28fi002BH主 8259 IRQ3申行口 2OBH-002FH主 8259 IRQ斗申行口 1OCH0030H-0033H主 8259 IRQ5并行口 20DH0034H “主 8259 IRQ6軟盤OEH003-DOSBH主IRQ7井行口 1OFH0O3CH-OO3FHJA 8259 IRQ8實(shí)時(shí)神70H01C0H-01C3H從 8259 IRQ971H01C4H-01C7Hhk 82

23、59 IRQ 10保閔72HOlCSH-01CBH從 S259 1R.Q L 1保留73HO 1CC HO1UFH從 S259 IRQ I 2保SJ74HSIXTH?Y1D3TI從 8259 IRQ13悔處理翻中斷75H01 EMH-01D7H從 8259 IRQ1476H01DSH-01DBH從 S159 IRQ 15僚留77H01DCHCHDFH5. 實(shí)驗(yàn)說明及步驟(1)中斷查詢方式應(yīng)用實(shí)驗(yàn)8259支持查詢方式檢測中斷請(qǐng)求, 具體過程為:設(shè)置8259 OCW3中的P位為1即可執(zhí) 行查詢命令,8259將下一個(gè)I/O讀命令視作一次中斷響應(yīng)。如果有中斷請(qǐng)求,則置ISR中的相應(yīng)位并讀優(yōu)先級(jí)。 從O

24、CW3寫操作到I/O讀操作期間禁止中斷, 讀出字節(jié)的最高位為 1 表示有中斷,最低3位(D0-D2)為最高優(yōu)先級(jí)中斷請(qǐng)求源的編碼 。查詢字格式如圖5所示。D7D6D5L>4DJD2DIDOI-111-W2wiWO10:無中斷諸玻W2W1W0I誨求申斷中1有中斷請(qǐng)求優(yōu)先級(jí)圮髙的中斷源編碼圖5 8259 OCW3查詢字格式本實(shí)驗(yàn)要求使用這種方法編寫程序處理實(shí)驗(yàn)單元 在屏幕上顯示字符“0” IRO請(qǐng)求則在屏幕上顯示字符8259 IR0和IR1請(qǐng)求的中斷,IR0請(qǐng)求“ 1以示中斷到來。IR0和IR1分別用6所示,參考實(shí)驗(yàn)接線圖如圖7所示。一個(gè)單次脈沖的上升沿模擬中斷產(chǎn)生。參考流程如圖19圖6實(shí)驗(yàn)

25、參考流程圖注意:P=1的0CW3可作為向8259A發(fā)出的查詢命令,表明用查詢方式?jīng)Q定中斷優(yōu)先級(jí)的 次序。具體步驟:向8259A發(fā)P=1的0CW3命令(A0=0);同一地址(A0=0 )讀指令(查詢字格式,圖5),將起中斷識(shí)別作用。XD7 廠、XD6X XXD5XD4XD3XD2XD1XD05< xXIOWXIORIOYOI- ' .XA27 6 5 4 $210 DDDDDDDW9528B.OWRRD;單次脈沖單兒圖7參考實(shí)驗(yàn)接線圖實(shí)驗(yàn)步驟如下:a) 確認(rèn)從 PC 機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。b) 運(yùn)行 Tdpit 集成操作軟件,查看系統(tǒng)資源分配情況,記錄與所用片選

26、信號(hào)對(duì)應(yīng)的 I/O 端口始地址。c) 參考實(shí)驗(yàn)流程圖編寫程序,注意使用正確的端口地址,然后編譯鏈接。d) 參考實(shí)驗(yàn)接線圖連接實(shí)驗(yàn)線路。e) 運(yùn)行程序,按動(dòng) KK1+ 、 KK1+ 按鍵,觀察中斷響應(yīng)是否正常。8259 中斷查詢方式應(yīng)用實(shí)驗(yàn)代碼* *J根據(jù)查看端口資源修改下列符號(hào)值 *IOY0EQU 9C00H ;片選 IOY0 對(duì)應(yīng)的端口始地址* *MY8259_ICW1EQUIOY0+00H;實(shí)驗(yàn)系統(tǒng)中8259 的 ICW1 端口地址MY8259_ICW2EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259 的 ICW2 端口地址MY8259_ICW3EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259 的 I

27、CW3 端口地址MY8259_ICW4EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259 的 ICW4 端口地址MY8259_OCW1EQUIOY0+04H;實(shí)驗(yàn)系統(tǒng)中8259 的 OCW1 端口地址MY8259_OCW2EQUIOY0+00H;實(shí)驗(yàn)系統(tǒng)中8259 的 OCW2 端口地址MY8259_OCW3EQUIOY0+00H;實(shí)驗(yàn)系統(tǒng)中8259 的 OCW3 端口地址STACK1 SEGMENT STACKDW 256 DUP ( ? )STACK1 ENDSCODESEGMENTASSUME CS : CODESTART: MOV DX , MY8259_ICW1;; 初始化實(shí)驗(yàn)系統(tǒng)中 825

28、9 的 ICW1MOV AL , 13HOUT DX , AL;邊沿觸發(fā)、單片 8259、需要 ICW4MOV DX , MY8259_ICW2MOV AL , 08HOUT DX , AL;初始化實(shí)驗(yàn)系統(tǒng)中 8259 的 ICW2MOV DX , MY8259_ICW4;初始化實(shí)驗(yàn)系統(tǒng)中 8259 的 ICW4MOV AL , 01HOUT DX , AL;非自動(dòng)結(jié)束 EOIMOV DX , MY8259_OCW1;初始化實(shí)驗(yàn)系統(tǒng)中 8259 的 OCW1MOV AL , 0FCHOUT DX , AL;打開 IR0 和 IR1 的屏蔽位QUERY: MOV AH , 1;判斷是否有按鍵按下

29、INT 16H; BIOS 調(diào)用JNZ QUIT; ZF=0 ,有按鍵則退出MOV DX , MY8259_OCW3MOV AL , 0CHOUT DX , AL;向 8259 的 OCW3 發(fā)送查詢命令, P=1IN AL , DX;讀出查詢字(查詢字格式,圖 5)TEST AL , 80H;判斷中斷是否已響應(yīng)JZ QUERY;沒有響應(yīng)則繼續(xù)查詢CMP AL , 00HJE IR0ISRJNE IR1ISR JMP QUERY;若為 IR0 請(qǐng)求,跳到 IR0 處理程序;若為 IR1 請(qǐng)求,跳到 IR1 處理程序;中斷源請(qǐng)求編碼,AND AL , 03HIR0ISR:MOV AL ,30HM

30、OV AH , 0EHINT 10HMOV AL , 20HINT 10HJMP EOIIR1ISR:MOV AL ,31HMOV AH , 0EHINT 10HMOV AL , 20HINT 10HMOV AL , 20HOUT DX , ALJMP QUERYQUIT:MOV AX , 4C00HINT 21HCODEENDSEND START實(shí)驗(yàn)六EOI: MOV DX , MY8259_OCW2; IR0 處理,顯示字符 0; IR1 處理,顯示字符 1; BIOS 調(diào)用,顯示字符(功能號(hào) AH=0EH );向?qū)嶒?yàn)系統(tǒng)中 8259 發(fā)送中斷結(jié)束命令;結(jié)束程序退出8255 并行控制器應(yīng)用

31、實(shí)驗(yàn) 1 1. 實(shí)驗(yàn)?zāi)康模?) 掌握 8255 的工作方式及應(yīng)用編程。(2) 掌握 8255 的典型應(yīng)用電路接法。2. 實(shí)驗(yàn)設(shè)備PC 微機(jī)一臺(tái)、 TD-PIT+ 實(shí)驗(yàn)系統(tǒng)一套。3. 實(shí)驗(yàn)內(nèi)容(1) 基本輸入輸出實(shí)驗(yàn)。編寫程序,使 8255 的 A 口為輸出, B 口為輸入,完成撥動(dòng)開 關(guān)到數(shù)據(jù)燈的數(shù)據(jù)傳輸。要求只要開關(guān)撥動(dòng),數(shù)據(jù)燈的顯示就改變。(2) 流水燈顯示實(shí)驗(yàn)。編寫程序,使 8255 的 A 口和 B 口均為輸出,實(shí)現(xiàn) 16 位數(shù)據(jù)燈的 相對(duì)循環(huán)顯示。( 2) 實(shí)驗(yàn)原理 并行接口是以數(shù)據(jù)的字節(jié)為單位與 I/O 設(shè)備或被控制對(duì)象之間傳遞信息。 CPU 和接口之 間的數(shù)據(jù)傳送總是并行的,即可

32、以同時(shí)傳遞8位、16位、32 位等。8255可編程外圍接口芯片具有 A、B、C 三個(gè)并行接口,能在以下三種方式下工作:方式 0-基本輸入 /出方式、方式 1- 選通輸入 /出方式、方式 2-雙向選通工作方式。 8255 工作方式控制字和 C 口按位置位 /復(fù)位控制字格式如圖 8 所示。D7 I Dfi I D5 I L>4 D3D2 I 01 I E>007D-6 I D5 I D4 D3 I D2 I O1 DO丹犬即軒 00方心 Oi Zr式 1 Lx.心 Zu I0伽叫 1冊(cè)入BL J &輸出1輸入ZT蟲難枠O 7/jV;o1/j'.l< I i打4位O

33、 WffH1埼兀A I Io逢Hi1輸入u 口的住進(jìn)卄 也 E>AT52L>1O1zQ 1 1 o o 1 1 0-0 o o 1111O.1G1OIC1Ti' :;. iJ I ?, o圖8 8255控制字格式5.實(shí)驗(yàn)說明及步驟本實(shí)驗(yàn)使8255端口 A工作在方式0并作為輸出口,端口 B工作在方式0并作為輸入口。 用一組開關(guān)信號(hào)接入端口 B,端口 A輸出線接至一組數(shù)據(jù)燈上,然后通過對(duì) 8255芯片編程 來實(shí)現(xiàn)輸入輸出功能。參考程序流程如圖9所示。|開始I仞始化血門控制寄存器I| :.'i325> LBI停止附退出TO?圖9 8255參考程序流程圖XD6XD5X

34、D4XD3XD1*/XD1XDOXA3XA2X KXIOWXIORIOYO7 6 $ 4 3 2 1 O DDDDDDDD1 O A APPPp p p p PPPPPPPFP=-圖108255參考接線圖實(shí)驗(yàn)步驟:a)確認(rèn)從PC機(jī)引出的兩根扁平電纜已經(jīng)連接在實(shí)驗(yàn)平臺(tái)上。b)參考圖10所示連接實(shí)驗(yàn)線路。c)首先運(yùn)行CHECK程序,查看I/O空間始地址。d)利用查出的地址編寫程序,然后編譯鏈接。e)運(yùn)行程序,撥動(dòng)開關(guān),看數(shù)據(jù)燈顯示是否正確。;8255基本輸入輸出實(shí)驗(yàn)代碼;*根據(jù)查看端口資源修改下列符號(hào)值*IOY0EQU 9C00H;片選IOYO對(duì)應(yīng)的端口始地址 *MY8255_AEQUIOY0+0

35、0H*4;8255的A 口地址MY8255_BEQUIOY0+01H*4;8255的B 口地址MY8255_CEQUIOY0+02H*4;8255的C 口地址MY8255_MODEEQUIOY0+03H*4;8255的控制寄存器地址STACK1 SEGMENT STACKDW 256 DUP ( ?)STACK1 ENDSCODE SEGMENTASSUME CS : CODESTART: MOV DX,MY8255_MODEMOV AL,82HOUT DX,ALLOOP1: MOV DX ,MY8255_BIN AL,DXMOV DX,MY8255_AOUT DX,ALMOVAH , 1INT 16HJZ LOOP1QUIT:MOV AX,4C00HINT 21H; 初始化8255工作方式; 工作方式0, A 口輸出,B 口輸入;讀B 口;寫A 口;判斷是否有按鍵按下;ZF=1,無按鍵則跳回繼續(xù)循環(huán),有則退出;結(jié)束程序退出CODE ENDSEND START實(shí)驗(yàn)七8255并行控制器應(yīng)用實(shí)驗(yàn) 2流水燈顯示實(shí)驗(yàn) :首先分別向 A 口和B 口寫入80H和01H,然后分別將該數(shù)右移和 左移一位,再送到端口上,這樣循環(huán)下去,從而實(shí)現(xiàn)流水燈的顯示。參考實(shí)驗(yàn)程序流程如圖11所示。初始化吧巧控制寄存器|寫AH發(fā)川的起

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論