深圳大學 微機原理與接口技術 實驗內容設計參考_第1頁
深圳大學 微機原理與接口技術 實驗內容設計參考_第2頁
深圳大學 微機原理與接口技術 實驗內容設計參考_第3頁
深圳大學 微機原理與接口技術 實驗內容設計參考_第4頁
深圳大學 微機原理與接口技術 實驗內容設計參考_第5頁
已閱讀5頁,還剩71頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

1、第2章 16位微機原理及其程序設計實驗本章主要介紹匯編語言程序設計,通過實驗來學習80X86的指令系統、尋址方式以及程序的設計方法,同時掌握聯機軟件的使用。2.1 系統認識實驗掌握TD系列微機原理及接口技術教學實驗系統的操作,熟悉Wmd86聯機集成開發調試軟件的操作環境。PC機一臺,TD-PITE實驗裝臵或TD-PITC實驗裝臵一套。編寫實驗程序,將00H0FH共16個數寫入內存3000H開始的連續16個存儲單元中。1. 運行Wmd86軟件,進入Wmd86集成開發環境。2. 根據程序設計使用語言的不同,通過在設臵下拉列表來選擇需要使用的語言和寄存器類型,這里我們設臵成匯編語言和16位寄存器,如

2、圖2.1、圖2.2所示。設臵選擇后,下次再啟動軟件,語言環境保持這次的修改不變。本章選擇16位寄存器。 圖2.1 語言環境設臵界面 圖2.2 寄存器設臵界面3. 語言和寄存器選擇后,點擊新建或按Ctrl+N組合鍵來新建一個文檔,如圖2.3所示。默認文件名為Wmd861。 圖2.3 新建文件界面4. 編寫實驗程序,如圖2.4所示,并保存,此時系統會提示輸入新的文件名,輸完后點擊保存。 圖2.4 程序編輯界面5. 點擊,編譯文件,若程序編譯無誤,則可以繼續點擊進行鏈接,鏈接無誤后方可以加載程序。編譯、鏈接后輸出如圖2.5所示的輸出信息。 圖2.5 編譯輸出信息界面6. 連接PC與實驗系統的通訊電纜

3、,打開實驗系統電源。7. 編譯、鏈接都正確并且上下位機通訊成功后,就可以下載程序,聯機調試了。可以通過 端口列表中的端口測試來檢查通訊是否正常。點擊下載程序。為編譯、鏈接、下載組合按鈕,通過該按鈕可以將編譯、鏈接、下載一次完成。下載成功后,在輸出區的結果窗中會顯示加載成功!,表示程序已正確下載。起始運行語句下會有一條綠色的背景。如圖2.6所示。 圖2.6 加載成功顯示界面8. 將輸出區切換到調試窗口,使用D0000:3000命令查看內存3000H起始地址的數據,如圖2.7所示。存儲器在初始狀態時,默認數據為CC。 9. 點擊按鈕運行程序,待程序運行停止后,通過D0000:3000命令來觀察程序

4、運行結果。如圖2.8所示。 圖2.8 運行程序后數據變化顯示10. 也可以通過設臵斷點,斷點顯示如圖2.9所示,然后運行程序,當遇到斷點時程序會停下來,然后觀察數據。可以使用E0000:3000來改變該地址單元的數據,如圖2.10所示,輸入11后,按空格鍵,可以接著輸入第二個數,如22,結束輸入按回車鍵。 圖2.9 斷點設臵顯示圖2.10 修改內存單元數據顯示界面實驗例程文件名為Wmd861.asm。編寫程序,將內存3500H單元開始的8個數據復制到3600H單元開始的數據區中。通過調試驗證程序功能,使用E命令修改3500H單元開始的數據,運行程序后使用D命令查看3600H單元開始的數據。2.

5、3 運算類編程實驗1. 掌握使用運算類指令編程及調試方法。2. 掌握運算類指令對各狀態標志位的影響及其測試方法。3. 學習使用軟件監視變量的方法。PC機一臺,TD-PITE實驗裝臵或TD-PITC實驗裝臵一套。80X86指令系統提供了實現加、減、乘、除運算的基本指令,可對表2.2所示的數據類型進行算術運算。表2.2 數據類型算術運算表 1. 二進制雙精度加法運算計算X+Y=Z,將結果Z存入某存儲單元。實驗程序參考如下。本實驗是雙精度(2個16位,即32位加法運算,編程時可利用累加器AX,先求低16位的和,并將運算結果存入低地址存儲單元,然后求高16位的和,將結果存入高地址存儲單元中。由于低16

6、運算后可能向高位產生進位,因此高16位運算時使用ADC指令,這樣在低16位相加運算有進位時,高位相加會加上CF中的1。實驗程序清單(例程文件名為:A3-1.ASMSSTACK SEGMENT STACKDW 64 DUP(?SSTACK ENDSPUBLIC XH, XL, YH, YL, ZH, ZL ;設臵全局變量DATA SEGMENTXL DW ? ;X低位XH DW ? ;X高位YL DW ? ;Y低位YH DW ? ;Y高位ZL DW ? ;Z低位ZH DW ? ;Z高位DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV A

7、X, DATAMOV DS, AXMOV AX, XLADD AX, YL ;X低位加Y低位MOV ZL, AX ;低位和存到Z的低位MOV AX, XHADC AX, YH ;高位帶進位加MOV ZH, AX ;存高位結果JMP START ;在此行設臵斷點,以觀察變量值CODE ENDSEND START實驗步驟(1編寫程序,經編譯、鏈接無誤后裝入系統。 (2程序裝載完成后,點擊變量區標簽將觀察窗切換到變量監視窗口。(3點擊,將變量XH,XL,YH,YL,ZH,ZL添加到變量監視窗中,然后修改XH,XL,YH,YL的值,如圖2.13所示,修改XH為0015,XL為65A0,YH為0021,

8、YL為B79E。(4在JMP START語句行設臵斷點,然后運行程序。(5當程序遇到斷點后停止運行,查看變量監視窗口,計算結果ZH為0037,ZL為1D3E。(6修改XH,XL,YH和YL的值,再次運行程序,觀察實驗結果,反復測試幾組數據,驗證程序的功能。圖2.13 變量監視窗口2. 十進制的BCD碼減法運算計算X-Y=Z,其中X、Y、Z為BCD碼。實驗程序參考例程。實驗程序清單(例程文件名為A3-2.ASMSSTACK SEGMENT STACKDW 64 DUP(?SSTACK ENDSPUBLIC X, Y, Z ;定義全局變量DATA SEGMENTX DW ?Y DW ?Z DW ?

9、DATA ENDSCODE SEGMENTASSUME CS:CODE, DS:DATASTART: MOV AX, DATAMOV DS, AXMOV AH, 00HSAHFMOV CX, 0002HMOV SI, OFFSET XMOV DI, OFFSET ZA1: MOV AL, SISBB AL, SI+02HDASPUSHFAND AL, 0FHPOPFMOV DI, ALINC DIINC SILOOP A1JMP START ;設臵斷點,以方便觀察變量。CODE ENDSEND START實驗步驟(1輸入程序,編譯、鏈接無誤后裝入系統。(2點擊將變量X,Y,Z添加到變量監視窗中

10、,并為X,Y賦值,假定存入40與12的BCD碼,即X為0400,Y為0102。(3在JMP START語句行設臵斷點,然后運行程序。(4程序遇到斷點后停止運行,觀察變量監視窗,Z應為0208。(5重新修改X與Y的值,運行程序,觀察結果,反復測試幾次,驗證程序正確性。3. 乘法運算實現十進制數的乘法運算,被乘數與乘數均以BCD碼的形式存放在內存中,乘數為1位,被乘數為5位,結果為6位。實驗程序參考例程。實驗程序清單(例程文件名為A3-3.ASMSSTACK SEGMENT STACKDW 64 DUP(?SSTACK ENDSDATA SEGMENTDATA1 DB 5 DUP(? ;被乘數DA

11、TA2 DB ? ;乘數RESULT DB 6 DUP(? ;計算結果DATA ENDSCODE SEGMENTASSUME CS:CODE,DS:DATASTART: MOV AX,DATAMOV DS,AXCALL INIT ;初始化目標地址單元為0MOV SI,OFFSET DATA2MOV BL,SIAND BL,0FH ;得到乘數CMP BL,09HJNC ERRORMOV SI,OFFSET DATA1MOV DI,OFFSET RESULTMOV CX,0005HA1: MOV AL,SI+04HAND AL,0FHCMP AL,09HJNC ERRORDEC SIMUL BLA

12、AM ;乘法調整指令ADD AL,DI+05HAAAMOV DI+05H,ALDEC DIMOV DI+05H,AHLOOP A1A2: MOV AX,4C00HINT 21H ;程序終止;=將RESULT所指內存單元清零=INIT: MOV SI,OFFSET RESULTMOV CX,0003HMOV AX,0000HA3: MOV SI,AXINC SIINC SILOOP A3RET;=錯誤處理=ERROR: MOV SI,OFFSET RESULT ;若輸入數據不符合要求則RESULT所指向內存單元全部寫入E MOV CX,0003HMOV AX,0EEEEHA4: MOV SI,A

13、XINC SIINC SILOOP A4JMP A2CODE ENDSEND START實驗步驟(1編寫程序,編譯、鏈接無誤后裝入系統。(2查看寄存器窗口獲得CS的值,使用U命令可得到數據段段地址DS,然后通過E 命令為被乘數及乘數賦值,如被乘數:01 02 03 04 05,乘數:01,方法同實驗內容1。(3運行程序,待程序運行停止。(4通過D命令查看計算結果,應為:00 01 02 03 04 05;當在為被乘數和乘數賦值時,如果一個數的低4位大于9,則查看計算結果將全部顯示為E。(5反復測試幾組數據,驗證程序的正確性。2.6 排序程序設計實驗1. 掌握分支、循環、子程序調用等基本的程序結

14、構。2. 學習綜合程序的設計、編制及調試。PC機一臺,TD-PITE實驗裝臵或TD-PITC實驗裝臵一套。1. 氣泡排序法在數據區中存放著一組數,數據的個數就是數據緩沖區的長度,要求采用氣泡法對該數據區中的數據按遞增關系排序。設計思想:(1從最后一個數(或第一個數開始,依次把相鄰的兩個數進行比較,即第N個數與第N-1個數比較,第N-1個數與第N-2個數比較等等;若第N-1個數大于第N個數,則兩者交換,否則不交換,直到N個數的相鄰兩個數都比較完為止。此時,N個數中的最小數將被排在N個數的最前列。(2對剩下的N-1個數重復(1這一步,找到N-1個數中的最小數。(3再重復(2,直到N個數全部排列好為

15、止。實驗程序清單(例程文件名為:A6-1.ASMSSTACK SEGMENT STACKDW 64 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV CX, 000AHMOV SI, 300AHMOV BL, 0FFHA1: CMP BL, 0FFHJNZ A4MOV BL, 00HDEC CXJZ A4PUSH SIPUSH CXA2: DEC SIMOV AL, SIDEC SICMP AL, SIJA A3XCHG AL, SIMOV SI+01H, ALMOV BL, 0FFHA3: INC SILOOP A2POP CXPOP

16、SIJMP A1A4:MOV AX,4C00HINT 21H ;程序終止CODE ENDSEND START實驗步驟(1分析參考程序,繪制流程圖并編寫實驗程序。(2編譯、鏈接無誤后裝入系統。(3鍵入E3000命令修改3000H3009H單元中的數,任意存入10個無符號數。(4先運行程序,待程序運行停止。(5通過鍵入D3000命令查看程序運行的結果。(6可以反復測試幾組數據,觀察結果,驗證程序的正確性。2. 學生成績名次表將分數在1100之間的10個成績存入首地址為3000H的單元中,3000H+I表示學號為I的學生成績。編寫程序,將排出的名次表放在3100H開始的數據區,3100H+I中存放的

17、為學號為I的學生名次。實驗程序清單(例程文件名為:A6-2.ASMSSTACK SEGMENT STACKDW 64 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV AX,0000HMOV DS,AXMOV ES,AXMOV SI,3000H ;存放學生成績MOV CX,000AH ;共10個成績MOV DI,3100H ;名次表首地址A1: CALL BRANCH ;調用子程序MOV AL,0AHSUB AL,CLINC ALMOV BX,DXMOV BX+DI,ALLOOP A1MOV AX,4C00HINT 21H ;程序終止;=

18、掃描成績表,得到最高成績者的學號=BRANCH: PUSH CXMOV CX,000AHMOV AL,00HMOV BX,3000HMOV SI,BXA2: CMP AL,SIJAE A3MOV AL,SIMOV DX,SISUB DX,BXA3: INC SILOOP A2ADD BX,DXMOV AL,00HMOV BX,ALPOP CXRETCODE ENDSEND START實驗步驟(1繪制流程圖,并編寫實驗程序。(2編譯、鏈接無誤后裝入系統。(3將10個成績存入首地址為3000H的內存單元中。(4調試并運行程序。(5檢查3100H起始的內存單元中的名次表是否正確。第4章 80X86微

19、機接口技術及其應用實驗接口技術是把由處理器、存儲器等組成的基本系統與外部設備連接起來,從而實現CPU 與外部設備通信的一門技術。微機的應用是隨著外部設備的不斷更新和接口技術的不斷發展而深入到各行各業,任何微機應用開發工作都離不開接口的設計、選用及連接。微機應用系統需要設計的硬件是一些接口電路,所要編寫的軟件是控制這些接口電路按要求工作的驅動程序。因此,接口技術是微機應用中必不可少的基本技能。4.1 靜態存儲器擴展實驗1. 了解存儲器擴展的方法和存儲器的讀/寫。2. 掌握CPU 對16位存儲器的訪問方法。PC 機一臺,TD-PITE 實驗裝臵或TD-PITC 實驗裝臵一套,示波器一臺。編寫實驗程

20、序,將0000H 000FH 共16個數寫入SRAM 的從0000H 起始的一段空間中,然后通過系統命令查看該存儲空間,檢測寫入數據是否正確。 存儲器是用來存儲信息的部件,是計算機的重要組成部分,靜態RAM 是由MOS 管組成的觸發器電路,每個觸發器可以存放1位信息。只要不掉電,所儲存的信息就不會丟失。因此,靜態RAM 工作穩定,不要外加刷新電路,使用方便。但一般 圖4.1 62256引腳圖CSW R1AGND D3D2D1D0VREF RFB DGND VCC ILE W R2XREF D4D5D6D7IOUT2IOUT1SRAM 的每一個觸發器是由6個晶體管組成,SRAM 芯片的集成度不會

21、太高,目前較常用的有6116(2K ×8位,6264(8K ×8位和62256(32K ×8位。本實驗平臺上選用的是62256,兩片組成32K ×16位的形式,共64K 字節。62256的外部引腳圖如圖4.1所示。 本系統采用準32位CPU ,具有16位外部數據總線,即D0、D1、D15,地址總線為BHE #(#表示該信號低電平有效、BLE #、A1、A2、A20。存儲器分為奇體和偶體,分別由字節允許線BHE #和BLE #選通。存儲器中,從偶地址開始存放的字稱為規則字,從奇地址開始存放的字稱為非規則字。處理器訪問規則字只需要一個時鐘周期,BHE #和B

22、LE #同時有效,從而同時選通存儲器奇體和偶體。處理器訪問非規則字卻需要兩個時鐘周期,第一個時鐘周期BHE #有效,訪問奇字節;第二個時鐘周期BLE #有效,訪問偶字節。處理器訪問字節只需要一個時鐘周期,視其存放單元為奇或偶,而BHE #或BLE #有效,從而選通奇體或偶體。寫規則字和非規則字的簡單時序圖如圖4.2所示。D 15:D 0C S # W R #D ATAD 15:D 8D 7:D 0C S #W R #D ATA圖4.2 寫規則字(左和非規則字(右簡單時序圖實驗單元電路圖 圖4.3 SRAM 單元電路圖實驗程序清單(MEM1.ASM SSTACK SEGMENT STACKDW

23、32 DUP(?SSTACK ENDSCODE SEGMENTSTART PROC FARASSUME CS:CODEMOV AX, 8000H ; 存儲器擴展空間段地址MOV DS, AX Array AA0: MOV SI, 0000H ; 數據首地址MOV CX, 0010HMOV AX, 0000HAA1: MOV SI, AXINC AXINC SIINC SILOOP AA1MOV AX,4C00HINT 21H ;程序終止START ENDPCODE ENDSEND START(注:本章實驗選擇16位寄存器1. 實驗接線圖如圖4.4所示,按圖接線。2. 編寫實驗程序,經編譯、鏈接

24、無誤后裝入系統。3. 先運行程序,待程序運行停止。4. 通過D命令查看寫入存儲器中的數據:D8000:0000 回車,即可看到存儲器中的數據,應為0001、0002、000F共16個字。5. 改變實驗程序,按非規則字寫存儲器,觀察實驗結果。6. 改變實驗程序,按字節方式寫存儲器,觀察實驗現象。7. 將實驗程序改為死循環程序,分別按規則字與非規則字的方式寫存儲器,并使用示波器觀察WR#信號的波形,分析實驗現象,掌握16位外部數據總線的操作方法。4.2 8259中斷控制實驗1. 掌握8259中斷控制器的工作原理。2. 學習8259的應用編程方法。3. 掌握8259級聯方式的使用方法。PC機一臺,T

25、D-PITE實驗裝臵或TD-PITC實驗裝臵一套。1. 中斷控制器8259簡介在Intel 386EX芯片中集成有中斷控制單元(ICU,該單元包含有兩個級聯中斷控制器,一個為主控制器,一個為從控制器。該中斷控制單元就功能而言與工業上標準的82C59A是一致的,操作方法也相同。從片的INT連接到主片的IR2信號上構成兩片8259的級聯。在TD-PITE實驗系統中,將主控制器的IR6、IR7以及從控制器的IR1開放出來供實驗使用,主片8259的IR4供系統串口使用。8259的內部連接及外部管腳引出如圖4.5: IN TR(內核串口0M IR6M IR7SIR1圖4.5 8259內部連續及外部管腳引

26、出圖表4.1列出了中斷控制單元的寄存器相關信息。表4.1 ICU 寄存器列表 初始化命令字1寄存器(ICW1說明見圖4.6所示。7ICW 1 圖4.6 初始化命令字1寄存器初始化命令字2寄存器(ICW2說明見圖4.7所示。7ICW 2 中斷向量地址圖4.7 初始化命令字2寄存器初始化命令字3寄存器(ICW3說明,主片見圖4.8,從片見圖4.9。7IC W 3(主片 圖4.8主片初始化命令字3寄存器7IC W 3(從片 圖4.9 從片初始化命令字3寄存器初始化命令字4寄存器(ICW4說明見圖4.10。7ICW 4 圖4.10初始化命令字4寄存器操作命令字1寄存器(OCW1說明見圖4.11。7O

27、C W 1 圖4.11 操作命令字1寄存器操作命令字2寄存器(OCW2說明如圖4.12所示。O C W 2 圖4.12 操作命令字2寄存器操作命令字3寄存器(OCW3說明如圖4.13所示。7O C W 3 圖4.13 操作命令字3寄存器查詢狀態字(POLL 說明如圖4.14所示。7PO LL 圖4.14 程序狀態字寄存器在對8259進行編程時,首先必須進行初始化。一般先使用CLI 指令將所有的可屏蔽中斷禁止,然后寫入初始化命令字。8259有一個狀態機控制對寄存器的訪問,不正確的初始化順序會造成異常初始化。在初始化主片8259時,寫入初始化命令字的順序是:ICW1、ICW2、ICW3、然后是IC

28、W4,初始化從片8259的順序與初始化主片8259的順序是相同的。系統啟動時,主片8259已被初始化,且4號中斷源(IR4提供給與PC 聯機的串口通信使用,其它中斷源被屏蔽。中斷矢量地址與中斷號之間的關系如下表所示: 2. 8259單中斷實驗實驗接線圖如圖4.15所示,單次脈沖輸出與主 片8259的IR7相連,每按動一次單次脈沖,產生一次外部中斷,在顯示屏上輸出一個字符7。圖4.15 8259單中斷實驗接線圖實驗程序清單(INT1.ASM SSTACK SEGMENT STACKDW 32 DUP(? SSTACK ENDS CODE SEGMENTASSUME CS:CODE START:

29、PUSH DSMOV AX, 0000H MOV DS, AXMOV AX, OFFSET MIR7;取中斷入口地址 MOV SI, 003CH ;中斷矢量地址MOV SI, AX ;填IRQ7的偏移矢量 MOV AX, CS ;段地址MOV SI, 003EH MOV SI, AX;填IRQ7的段地址矢量CLI POP DS;初始化主片8259 MOV AL, 11H OUT 20H, AL ;ICW1 MOV AL, 08H OUT 21H, AL ;ICW2 MOV AL, 04H OUT 21H, AL ;ICW3 MOV AL, 01HOUT 21H, AL;ICW4MOV AL,

30、6FH ;OCW1OUT 21H, ALSTIAA1: NOPJMP AA1MIR7: STICALL DELAYMOV AX, 0137HINT 10H ;顯示字符7MOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中斷結束命令IRETDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETCODE ENDSEND START實驗步驟(1按圖4.15連接實驗線路。(2編寫實驗程序,經編譯、鏈接無誤后裝入系統。(3運行程序,重復按單次脈沖開關KK1+,顯示屏會顯示字符7,說明響應了中斷。3

31、. 8259級聯實驗 8259的IR7上,KK2+連接到從片8259的IR1上,當按一次KK1+時,顯示屏上顯示字符M7,按一次KK2+時,顯示字符S1。編寫程序。圖4.16 8259級聯實驗實驗程序清單(INTCAS1.ASMSSTACK SEGMENT STACKDW 32 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET MIR7 ;取中斷入口地址MOV SI, 003CH ;中斷矢量地址MOV SI, AX ;填IRQ7的偏移矢量MOV AX, CS

32、 ;段地址MOV SI, 003EHMOV SI, AX ;填IRQ7的段地址矢量MOV AX, OFFSET SIR1MOV SI, 00C4HMOV SI, AXMOV AX, CSMOV SI, 00C6HMOV SI, AXCLIPOP DS;初始化主片8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW3MOV AL, 01HOUT 21H, AL ;ICW4;初始化從片8259MOV AL, 11HOUT 0A0H, AL ;ICW1MOV AL, 30HOUT

33、 0A1H, AL ;ICW2MOV AL, 02HOUT 0A1H, AL ;ICW3MOV AL, 01HOUT 0A1H, AL ;ICW4MOV AL, 0FDHOUT 0A1H,AL ;OCW1 = 1111 1101MOV AL, 6BHOUT 21H, AL ;主8259 OCW1STIAA1: NOPJMP AA1MIR7: CALL DELAYMOV AX, 014DHINT 10H ;MMOV AX, 0137HINT 10H ;顯示字符7MOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中斷結束命令IRETSIR1: CALL DEL

34、AYMOV AX, 0153HINT 10H ;SMOV AX, 0131HINT 10H ;顯示字符1MOV AX, 0120HINT 10HMOV AL, 20HOUT 0A0H, ALOUT 20H, ALIRETDELAY: PUSH CXMOV CX, 0F00HAA0: PUSH AXPOP AXLOOP AA0POP CXRETCODE ENDSEND START實驗步驟(1按圖4.16連接實驗線路。(2輸入程序,編譯、鏈接無誤后裝入系統。(3運行程序,按動KK1+或KK2+,觀察實驗結果,驗證實驗程序的正確性。(4若同時按下KK1+和KK2+,觀察實驗結果,解釋實驗現象。4.4

35、 8254定時/計數器應用實驗1. 掌握8254的工作方式及應用編程。2. 掌握8254典型應用電路的接法。PC機一臺,TD-PITE實驗裝臵或TD-PITC實驗裝臵一套,示波器一臺。1. 計數應用實驗。編寫程序,應用8254的計數功能,使用單次脈沖模擬計數,使每當按動KK1+5次后,產生一次計數中斷,并在屏幕上顯示一個字符M。2. 定時應用實驗。編寫程序,應用8254的定時功能,產生一個1ms 的方波。8254是Intel 公司生產的可編程間隔定時器。是8253的改進型,比8253具有更優良的性能。8254具有以下基本功能:(1有3個獨立的16位計數器。(2每個計數器可按二進制或十進制(BC

36、D 計數。 (3每個計數器可編程工作于6種不同工作方式。(48254每個計數器允許的最高計數頻率為10MHz (8253為2MHz 。(58254有讀回命令(8253沒有,除了可以讀出當前計數單元的內容外,還可以讀出狀態寄存器的內容。(6計數脈沖可以是有規律的時鐘信號,也可以是隨機信號。計數初值公式為: n=f CLKi ÷f OUTi 、其中f CLKi 是輸入時鐘脈沖的頻率,f OUTi 是輸出波形的頻率。圖4.27是8254的內部結構框圖和引腳圖,它是由與CPU 的接口、內部控制電路和三個計數器組成。8254的工作方式如下述:(1方式0:計數到0結束輸出正躍變信號方式。 (2方

37、式1:硬件可重觸發單穩方式。 (3方式2:頻率發生器方式。 (4方式3:方波發生器。(5方式4:軟件觸發選通方式。 (6方式5:硬件觸發選通方式。D7:0 D7D6D5D4D3D2D1D0CLK0OUT0GATE0GND圖4.27 8254的內部接口和引腳8254的控制字有兩個:一個用來設臵計數器的工作方式,稱為方式控制字;另一個用來設臵讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標識位來區分。控制字格式如表4.34.5所示。表4.3 8254的方式控制字格式 8254實驗單元電路圖如下圖所示: 圖4.28 8254實驗電路原理圖1. 計數應用實驗編寫程序,將8254的計數器0設臵為

38、方式3,計數值為十進制數4,用單次脈沖KK1+作為CLK0時鐘,OUT0連接MIR7,每當KK1+按動5次后產生中斷請求,在屏幕上顯示字符M。實驗步驟:(1實驗接線如圖4.29所示。(2編寫實驗程序,經編譯、鏈接無誤后裝入系統。(3運行程序,按動KK1+產生單次脈沖,觀察實驗現象。(4改變計數值,驗證8254的計數功能。 圖4.29 8254計數應用實驗接線圖實驗程序清單(A82541.ASMA8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?SSTACK EN

39、DSCODE SEGMENTASSUME CS:CODE, SS:SSTACKSTART: PUSH DSMOV AX, 0000HMOV DS, AXMOV AX, OFFSET IRQ7 ;取中斷入口地址MOV SI, 003CH ;中斷矢量地址MOV SI, AX ;填IRQ7的偏移矢量MOV AX, CS ;段地址MOV SI, 003EHMOV SI, AX ;填IRQ7的段地址矢量CLIPOP DS;初始化主片8259MOV AL, 11HOUT 20H, AL ;ICW1MOV AL, 08HOUT 21H, AL ;ICW2MOV AL, 04HOUT 21H, AL ;ICW

40、3MOV AL, 01HOUT 21H, AL ;ICW4MOV AL, 6FH ;OCW1OUT 21H, AL;8254MOV DX, CON8254MOV AL, 10H ;計數器0,方式0OUT DX, ALMOV DX, A8254MOV AL, 04HOUT DX, ALSTIAA1: JMP AA1IRQ7: MOV DX, A8254MOV AL, 04HOUT DX, ALMOV AX, 014DHINT 10H ;顯示字符MMOV AX, 0120HINT 10HMOV AL, 20HOUT 20H, AL ;中斷結束命令IRETCODE ENDSEND START2. 定

41、時應用實驗編寫程序,將8254的計數器0設臵為方式3,用信號源1MHz作為CLK0時鐘,OUT0為波形輸出1ms方波。實驗步驟:(1接線圖如圖4.30所示。(2根據實驗內容,編寫實驗程序,經編譯、鏈接無誤后裝入系統。(3運行實驗程序,用示波器測試OUT0輸出,驗證程序功能。實驗程序清單(A82542.ASMA8254 EQU 06C0HB8254 EQU 06C2HC8254 EQU 06C4HCON8254 EQU 06C6HSSTACK SEGMENT STACKDW 32 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, C

42、ON8254 ;8254MOV AL, 36H ;計數器0,方式3OUT DX, ALMOV DX, A8254MOV AL, 0E8HOUT DX, ALMOV AL, 03HOUT DX, ALAA1: JMP AA1CODE ENDSEND START 圖4.30 8254定時應用實驗接線圖4.5 8255并行接口實驗1. 學習并掌握8255的工作方式及其應用。2. 掌握8255典型應用電路的接法。3. 掌握程序固化及脫機運行程序的方法。PC機一臺,TD-PITE實驗裝臵或TD-PITC實驗裝臵一套。1. 基本輸入輸出實驗。編寫程序,使8255的A口為輸入,B口為輸出,完成撥動開關到數據

43、燈的數據傳輸。要求只要開關撥動,數據燈的顯示就發生相應改變。2. 流水燈顯示實驗。編寫程序,使8255的A口和B口均為輸出,數據燈D7D0由左向右,每次僅亮一個燈,循環顯示,D15D8與D7D0正相反,由右向左,每次僅點亮一個燈,循環顯示。雙向數 D0-DRWAA R E SECI/OI/OI/OI/O7-PA0PC7-PC 4PC3-PC0PB7-PB0PA3PA2PA1PA0R DC SG N DA1A0PC7PC6PC5PC4PC0PC1PC2PC3PB0PB1PB24567RE SE T1234567C C76543圖4.31 8255內部結構及外部引腳圖并行接口是以數據的字節為單位與

44、I/O 設備或被控制對象之間傳遞信息。CPU 和接口之間的數據傳送總是并行的,即可以同時傳遞8位、16位或32位等。8255可編程外圍接口芯片是Intel 公司生產的通用并行I/O 接口芯片,它具有A 、B 、C 三個并行接口,用+5V 單電源供電,能在以下三種方式下工作:方式0-基本輸入/輸出方式、方式1-選通輸入/輸出方式、方式2-雙向選通工作方式。8255的內部結構及引腳如圖4.31所示,8255工作方式控制字和C 口按位臵位/復位控制字格式如圖4.32所示。 位(a 工作方式控制字(b C 口按位置位/復位控制字1圖4.32 8255控制字格式8255實驗單元電路圖如圖4.33所示:

45、圖4.33 8255實驗單元電路圖1. 基本輸入輸出實驗本實驗使8255端口A工作在方式0并作為輸入口,端口B工作在方式0并作為輸出口。用一組開關信號接入端口A,端口B輸出線接至一組數據燈上,然后通過對8255芯片編程來實現輸入輸出功能。具體實驗步驟如下述:(1實驗接線圖如圖4.34所示,按圖連接實驗線路圖。(2編寫實驗程序,經編譯、連接無誤后裝入系統。(3運行程序,改變撥動開關,同時觀察LED顯示,驗證程序功能。(4點擊調試下拉菜單中的固化程序項,將程序固化到系統存儲器中。(5將短路跳線JDBG的短路塊短接到RUN端,然后按復位按鍵,觀察程序是否正常運行;關閉實驗箱電源,稍等后再次打開電源,

46、看固化的程序是否運行,驗證程序功能。(6實驗完畢后,請將短路跳線JDBG的短路塊短接到DBG端。 圖4.34 8255基本輸入輸出實驗接線圖實驗程序清單(A82551.ASMSSTACK SEGMENT STACKDW 32 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 90HOUT DX, ALAA1: MOV DX, 0640HIN AL, DXCALL DELAYMOV DX, 0642HOUT DX, ALJMP AA1DELAY: PUSH CXMOV CX, 0F00HAA2: PUSH

47、AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START2. 流水燈顯示實驗使8255的A口和B口均為輸出,數據燈D7D0由左向右,每次僅亮一個燈,循環顯示,D15D8與D7D0正相反,由右向左,每次僅點亮一個燈,循環顯示。實驗接線圖如圖4.35所示。實驗步驟如下所述:(1按圖4.35連接實驗線路圖。(2編寫實驗程序,經編譯、鏈接無誤后裝入系統。(3運行程序,觀察LED燈的顯示,驗證程序功能。(4自己改變流水燈的方式,編寫程序。(5固化程序并脫機運行。 圖4.35 8255流水燈實驗接線圖實驗程序清單(A82552.ASMSSTACK SEGMENT STACKD

48、W 32 DUP(?SSTACK ENDSCODE SEGMENTASSUME CS:CODESTART: MOV DX, 0646HMOV AL, 80HOUT DX, ALMOV BX, 8001HAA1: MOV DX, 0640HMOV AL, BHOUT DX, ALROR BH, 1MOV DX, 0642HMOV AL, BLOUT DX, ALROL BL, 1CALL DELAYCALL DELAYJMP AA1 DELAY: PUSH CXMOV CX, 0F000H AA2: PUSH AXPOP AXLOOP AA2POP CXRETCODE ENDSEND START

49、附錄1 Wmd86 V5.2聯機軟件使用說明附1.1 菜單功能1. 文件菜單項文件菜單如附圖1-1所示。(1新建(N:用此命令在Wmd86中建立一個新文檔。 (2打開(O:用此命令在窗口中打開一個現存的文檔。(3關閉(C:用此命令來關閉當前活動文檔。(4保存(S:用此命令將當前活動文檔保存到它的當前文件名和目錄下。當您第一次保存文檔時,Wmd86顯示另存為對話框以便您命名您的文檔。(5另存為(A:用此命令來保存并命名活動文檔。(6打印(P:用此命令來打印一個文檔。(7打印預覽(V:用此命令來打印當前顯示活動文檔。(8打印設臵(R:用此命令來選擇連接的打印機及其設臵。(9最近瀏覽文件:通過此列表

50、,直接打開最近打開過的文件。(10退出(X:用此命令來結束Wmd86的運行階段。Wmd86會提示您保存尚未保存的改動。附圖1-1 文件菜單2. 查看菜單項查看菜單如附圖1-2所示。 附圖1-2 查看菜單(1工具欄(T:顯示或隱藏工具欄(2狀態欄(S:顯示或隱藏狀態欄(3工具欄a、標準工具欄:用此命令可顯示和隱藏標準工具欄。標準工具欄包括了Wmd86中一些最普通命令的按鈕,如文件打開。在工具欄被顯示時,一個打勾記號出現在該菜單項目的旁邊。b、變量區(W:用此命令可顯示和隱藏寄存器/變量/堆棧區。c、輸出區(O:用此命令可顯示和隱藏輸出區。d、編譯工具欄(B:用此命令可顯示和隱藏編譯工具欄。e、調

51、試工具欄(D:用此命令可顯示和隱藏調試工具欄。f、自定義(C:見自定義功能。3. 端口菜單項端口菜單如附圖1-3所示。 (1端口1:此命令用來選擇串口1進行聯機通訊,該命令會對串口1進行初始化操作,并進行聯機測試,報告測試結果。(2端口2:此命令用來選擇串口2進行聯機通訊,該命令會對串口2進行初始化操作,并進行聯機測試,報告測試結果。附圖1-3 端口菜單(3端口測試:此命令用來對當前選擇的串口進行聯機通訊測試,并報告測試結果。4. 編譯菜單項編譯菜單如附圖1-4所示。(1編譯(C:編譯當前活動文檔中的源程序,在源文件目錄下生成目標文件。(2鏈接(L:鏈接編譯生成的目標文件,在源文件目 錄下生成

52、可執行文件。(3加載(D:把鏈接生成的可執行文件加載到下位機。加載成功,輸出區顯示加載成功!。(4編譯鏈接并加載(T:依次執行編譯、鏈接和加載。附圖1-4 編譯菜單5. 設置菜單設臵菜單如附圖1-5所示。 附圖1-5 設臵菜單(1語言:設臵語言環境匯編語言:設臵編譯環境為匯編語言環境。此時可編輯、編譯和鏈接IBM-PC匯編語言源程序。C語言:設臵編譯環境為C語言環境。此時可編輯、編譯和鏈接C語言源程序。由于監控目前不支持浮點運算,故C語言程序中不應該出現浮點運算,如果C語言程序中出現浮點運算,鏈接時會出現錯誤。(2寄存器:設臵寄存器格式16位寄存器:設臵成16位寄存器,可觀察到16位寄存器的變

53、化。32位寄存器:設臵成32位寄存器,可觀察到32位寄存器的變化。(3變量監控:加載成功后才可用此按鈕。系統只能監視全局變量。在匯編語言源文件中,數據段定義的變量并不是全局變量,因此數據段定義的變量并不出現在上圖所示的對話框的左邊列表,要想監視這些變量,必須使它們成為全局變量,使一個變量成為全局變量的方法是用關鍵字PUBLIC在源程序的最前面聲明之。(4堆棧監控:用于選擇是否監控堆棧。6. 調試菜單項調試菜單如附圖1-6所示。 附圖1-6 調試菜單(1設臵斷點/刪除斷點(B:當前光標所在的行為當前行,如果當前行無斷點則在當前行設臵斷點,如果當前行有斷點則刪除當前行的斷點。源程序設臵的斷點數不能超過8個。(2清除所有斷點(D:清除源程序中設臵的所有斷點。(3設臵起點(J:當前光標所在的行為當前行,此命令把當前行設臵為程序的起點。(4單步(T:點擊此命令使程序執行一條語句,如果是函數則進入函數內部。(5跳過(O:點擊此命令使程序執行一個函數,執行后刷新所有變量和寄存器的值。(6運行/運行到斷點:從當前執行行開始向后運行,如果沒有斷點,則運行直到程序結束。如果有斷點,則運行到斷點后停止。(7停止:發送此命令使程序停止

溫馨提示

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

評論

0/150

提交評論