微機原理課程設計報告--數(shù)據(jù)采集系統(tǒng)三(中斷法)_第1頁
已閱讀1頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、<p><b>  微機原理課程設計</b></p><p>  課設題目:數(shù)據(jù)采集系統(tǒng)三(中斷法)</p><p>  實驗者姓名: </p><p>  實驗者學號: </p><p>  學院: 電子信息工程學院 </p>

2、<p>  數(shù)據(jù)采集系統(tǒng)三(中斷法)</p><p><b>  一、實驗目的</b></p><p>  進一步掌握微機原理知識,了解微機在實時采集過程中的應用,學習、掌握編程和程序調試方法。</p><p><b>  二、實驗內容</b></p><p>  1、用中斷法,將ADC

3、0809通道0外接0 ~ 5V電壓,轉換成數(shù)字量后,在七段LED數(shù)碼管上,以小數(shù)點后兩位(幾十毫伏)的精度,顯示其模擬電壓的十進值;0809通道0的數(shù)字量以線性控制方式送DAC0832輸出,當通道0的電壓為5V時,0832的OUT為0V, 當通道0的電壓為0時,0832的OUT為2.5V;此模擬電壓再送到ADC 0809通道1,轉換后的數(shù)字量在CRT上以十六進制顯示。</p><p>  2、ADC 0809 的

4、CLK 脈沖,由定時器8254的OUT0提供;ADC 0809的EOC信號,用作8259中斷請求信號。</p><p>  3、要有較好的人機對話界面;控制程序的運行。</p><p><b>  三、總體設計</b></p><p>  1 、ADC 0809的IN0采集電位器0 — 5V電壓,IN1采集0832輸出的模擬量。</p&g

5、t;<p>  2 、DAC 0832將ADC 0809的IN0數(shù)字量后重新轉換成模擬量輸出。</p><p>  3、8259用于檢測ADC 0809轉換是否結束和向CPU發(fā)送INTR信號</p><p>  4、 8255為七段LED數(shù)碼管顯示提供顯示驅動信息。</p><p>  5、七段LED數(shù)碼管顯示ADC 0809的IN0的值。</p

6、><p>  6、8254提供ADC 0809的采樣時鐘脈沖。</p><p>  7、有良好的人—機對話界面。系統(tǒng)運行時,顯示主菜單,開始數(shù)據(jù)采集, 在數(shù)據(jù)采集時, 主鍵盤有鍵按下, 退出返回DOD系統(tǒng)。</p><p><b>  四、硬件設計</b></p><p>  因采用了PC機和微機實驗箱, 硬件電路設計相對比

7、較簡單, 主要利用微機實驗箱上的8255并行口、ADC 0809、DAC 0832、七段LED數(shù)碼管單元、8254定時/計數(shù)器、74LS574輸出接口、電位器等單元電路, 就構成了數(shù)據(jù)采集系統(tǒng), 硬件電原理框圖4-3-1所示。</p><p><b>  五、軟件設計</b></p><p>  本設計通過軟件編程,實現(xiàn)模/數(shù)轉換器0809分別對IN0 0-5V直流電

8、壓的采樣,和經(jīng)0832線性控制后輸出電壓的IN1采樣,IN0的值轉換成十進制后,在七段數(shù)碼管上顯示; IN1的值在顯示器上顯示。CPU 根據(jù)IN0的值,使八位發(fā)光二極管根據(jù)題目的要求,指示相應的范圍。</p><p><b>  1、設計思想</b></p><p>  數(shù)據(jù)采集系統(tǒng)分成四個功能模塊,分別是主程序模塊、量綱轉換模塊、數(shù)碼管顯示模塊、中斷服務子程序模塊。

9、</p><p><b>  (1)主程序模塊</b></p><p>  根據(jù)題目要求,采用中斷方式實現(xiàn)數(shù)據(jù)采集,因此可把讀取IN0的值并保存,和此數(shù)字量經(jīng)線性控制后送給0832輸出, 作為0809 IN1的模擬電壓和IN1的啟動、讀取以及IN0的BCD碼轉換, 放在中斷服務子程序模塊中完成。所以,在主程序模塊上主要實現(xiàn)啟動0809 IN0、顯示模塊的調用、和中斷結

10、束部分程序。</p><p><b>  鍵盤掃描模塊</b></p><p>  設置鍵盤掃描模塊,采用行列反轉發(fā),先PC4-PC7輸出低電平,然后讀入PC0-PC3.再讓PC0-PC3輸出低電平,讀入PC4-PC7.合并掃描值,獲得按鍵值。</p><p>  (3) 量綱轉換模塊</p><p>  量綱轉換模塊在

11、中斷服務程序內完成,只要將IN0的數(shù)字量分別除以51, 商存入顯示IN0的個位存儲單元; 余數(shù)乘以十,再除以51, 商存入十分位存儲單元; 余數(shù)再乘以十,除以51, 若余數(shù)大于25,則商加1, 小于25則舍去, 這樣就達到四舍五入的精度, 再把商存入百分位存儲單元; 以供七段數(shù)碼管顯示時調用,BCD碼轉換模塊可參考圖10所示的流程圖。</p><p>  (4) 數(shù)碼管顯示模塊</p><p&

12、gt;  數(shù)碼管顯示模塊比較簡單,自編程序可參考實驗指導書圖1-6所示的流程圖,也可參考實驗8255并行口中的顯示模塊,應注意的是在顯示個位時, 要加上小數(shù)點的顯示,這可以在查表獲取個位段碼后,再加上80H來實現(xiàn),注意每一位顯示后要適當延遲時間。</p><p>  (5) 中斷服務子程序模塊</p><p>  考慮到0832的輸出是0809 IN1的輸入,因此,為防止在執(zhí)行中斷服務子

13、程序時,二次進入中斷服務子程序, 故在進入中斷服務子程序后,應關閉中斷,而在退出中斷前開中斷,以便下次中斷進入。中斷服務子程序模塊主要完成對IN0數(shù)據(jù)的讀取和保存,對IN1的啟動和讀取,對IN0數(shù)據(jù)的BCD轉換等任務。</p><p><b>  程序流程圖</b></p><p>  數(shù)據(jù)采集三主程序流程圖如圖4-3-2所示; 中斷服務子程序如圖4-3-3所示。數(shù)碼

14、管顯示子程序流程圖如圖3-4-7所示,鍵盤掃描流程圖如圖 4-3-4所示。</p><p>  圖4-3-2 數(shù)據(jù)采集三主程序流程圖</p><p>  圖4-3-4 鍵盤掃描程序流程圖</p><p>  六、試驗所遇問題及解決方法</p><p>  問題1:轉動電位器時數(shù)碼管電壓變化不靈敏,有很嚴重的遲滯現(xiàn)象,且輸出不穩(wěn)定。</

15、p><p>  分析:每次轉動電位器都對應一次中斷請求,中斷數(shù)據(jù)采集頻率對應8254的OUT0輸出的600KHZ,即對CLK0輸入的1.8432MHZ的三分頻。我想問題應該是采樣頻率太低的原因,輸出之所以不穩(wěn)定也是有可能因為頻率不匹配的問題。</p><p>  解決方法:修改8254計數(shù)器0的計數(shù)初值,將原來的3改為了2,即對應2分頻,結果電位器變化與數(shù)碼管電壓變化基本一致。</p&g

16、t;<p>  問題2:中斷服務子程序中要實現(xiàn)0809通道0的數(shù)字量以線性控制方式送DAC0832輸出,當通道0的電壓為5V時,0832的OUT為0V, 當通道0的電壓為0時,0832的OUT為2.5V,但是我們的程序中線性變換結果混亂。</p><p>  分析:設0809通道0的值為X,DAC0832的輸出端數(shù)據(jù)為Y,根據(jù)實驗所給數(shù)據(jù)推得X與Y的數(shù)值關系式為Y=(5-X)/2。</p>

17、;<p>  解決方法:將中斷服務子程序中的0809通道0的數(shù)字量和DAC0832輸出量之間的轉換函數(shù)修改為</p><p>  MOV IN0IN, AL ; A1為IN0</p><p>  MOV AH,0 </p><p>  DIV N (N=2) ; IN0

18、AD后線性轉換給0832的值</p><p><b>  NEG AL </b></p><p>  ADD AL,80H </p><p>  MOV BL,AL</p><p>  CMP BL,40H</p><p>  JB SS1</p><p

19、>  SUB BL,4 </p><p>  SS1: MOV AL,BL</p><p>  MOV A3,AL </p><p>  MOV DX,DACS</p><p>  OUT DX,AL</p><p>  最后0809通道0的數(shù)

20、據(jù)和0832輸出端的數(shù)據(jù)得到正確的對應關系。</p><p><b>  七、心得體會及建議</b></p><p>  體會: 通過一學期的學習,我發(fā)現(xiàn)匯編語言與我之前所學過的C++完全不同,匯編語言是從計算機內部結構出發(fā),立足于CPU存儲結構進行編程,更加基礎,深入。</p><p>  為了順利完成課程設計,在進行編程之前,我把中斷控制器

21、8259、并行控制8255、時鐘發(fā)生器8254以及A/D轉換0809和D/A轉換0832的工作原理以及工作方式進行了深入的回顧與理解。</p><p>  結合以前80X86實驗內容,我完成了課程設計的編程。接下來是上機調試,經(jīng)過匯編鏈接,有幾個小問題,經(jīng)過檢查順利排除。程序已經(jīng)可以生成.EXE文件執(zhí)行了,但是轉動電位器,屏幕上現(xiàn)實IN0和IN1的值但是關系不正確。后來經(jīng)過仔細研究IN0經(jīng)轉換后的數(shù)字量應該進行的

22、變換,調整了程序,終于實現(xiàn)了功能。</p><p>  驗收時,老師讓我們修改源程序與試驗箱上的接線。這對我來說也是一次挑戰(zhàn),我根據(jù)自己的理解,修改了源程序與接線,編譯鏈接之后,實現(xiàn)了轉動電位器,在不同電壓范圍內發(fā)出不同頻率聲音的功能。也順利通過了老師的驗收。</p><p>  通過這次課程設計,自己對編程解決問題不是那么恐懼了,相反還有了很大的興趣。我發(fā)現(xiàn),當我們把匯編語言當成一種工具

23、,而不是一門考試時,就能更加好的掌握它。</p><p>  建議:1.希望老師們能在上課期間增加必要的試驗箱器件知識,同時在課外增加一些匯編語言在生活中應用的相關知識介紹,幫助學生提高工程意識,在后期學習當中有一種將知識運用于實踐的思想。</p><p>  2.希望老師可以提前布置和安排微機原理課設的任務,不要等到微機原理課程結束且考試也已經(jīng)結束的情況下載布置微機課設,老師們也知道,一

24、方面微機原理已經(jīng)考完大家在微機原理課程上投入的時間肯定不會太多,大家對匯編語言的編寫說實話也就少了幾分熱情;另一方面,隨著期末考試的緊逼,后續(xù)課程的復習也是大家要付出很多時間的。</p><p>  以上兩點建議希望老師們能接納,先謝謝老師了。</p><p><b>  八、源程序</b></p><p>  ;*************回車

25、宏定義*********</p><p>  CRLF MACRO</p><p>  MOV DL, 0DH</p><p>  MOV AH,02H</p><p>  INT 21H ;宏定義了回車</p><p><b>  ENDM </b></p&

26、gt;<p>  ;*********端口地址定義*********** </p><p>  Y0EQU 3000H ;片選Y0對應的端口始地址,0809,0832</p><p>  Y2 EQU 3040H ;片選Y2對應的端口始地址</p><p>  IN1

27、 EQU Y0+01H*4</p><p>  ADCSEQU Y0 ;AD0809的端口地址</p><p>  DACSEQU Y2 ;DAC0832的端口地址</p><p>  Y3 EQU 3060H </p><p>  TIMER0

28、EQUY3+00H*4 ;8254計數(shù)器0端口地址,8254</p><p>  TIMER1 EQUY3+01H*4 ;8254計數(shù)器1端口地址</p><p>  TIMER2 EQUY3+02H*4 ;8254計數(shù)器2端口地址</p><p>  TCTL EQU Y3+03H*4

29、 ;8254控制寄存器端口地址</p><p>  Y1 EQU 3020H ;片選Y1對應的端口始地址,8255</p><p>  PA55 EQU Y1+00H*4 ;8255的A口地址</p><p>  PB55 EQU Y1+01H*4 ;8255的B口地址&l

30、t;/p><p>  PC55 EQU Y1+02H*4 ;8255的C口地址</p><p>  PCTL EQU Y1+03H*4 ;8255的控制寄存器地址</p><p>  INTR_IVADDEQU 01C8H;INTR對應的中斷矢量地址,8259</p><p>  I

31、NTR_OCW1 EQU 0A1H ;INTR對應PC機內部8259的OCW1地址</p><p>  INTR_OCW2 EQU 0A0H ;INTR對應PC機內部8259的OCW2地址</p><p>  INTR_IM EQU 0FBH;INTR對應的中斷屏蔽字</p><p>  Y

32、7 EQU 30E0H;片選Y7對應的端口始地址</p><p>  MY8259_ICW1 EQU Y7+00H;實驗系統(tǒng)中8259的ICW1端口地址</p><p>  MY8259_ICW2 EQU Y7+04H;實驗系統(tǒng)中8259的ICW2端口地址</p><p>  MY8259_ICW3 EQU Y7

33、+04H;實驗系統(tǒng)中8259的ICW3端口地址</p><p>  MY8259_ICW4 EQU Y7+04H;實驗系統(tǒng)中8259的ICW4端口地址</p><p>  MY8259_OCW1 EQU Y7+04H;實驗系統(tǒng)中8259的OCW1端口地址</p><p>  MY8259_OCW2 EQU Y7+00H;實驗系統(tǒng)中8

34、259的OCW2端口地址</p><p>  MY8259_OCW3 EQU Y7+00H;實驗系統(tǒng)中8259的OCW3端口地址</p><p>  ;*********************************堆棧段定義**************************************** </p><p>  STACK1

35、SEGMENT STACK</p><p>  DW 256DUP(?)</p><p>  STACK1 ENDS</p><p>  ;*********堆棧段定義***************************************************************** </p><p>  DATA

36、 SEGMENT</p><p>  DCTBLDB 3Fh,06h,5Bh,4Fh,66h,6Dh,7Dh,07h,7Fh,6Fh ;數(shù)碼管的段碼表</p><p>  DB 77h,7Ch,39h,5Eh,79h,71h,00H</p><p>  N DB 2</p><p>  IN0IN

37、 DB ?</p><p>  IN1OUT DB ?</p><p>  A3 DB ?</p><p>  B DB 3 DUP(?)</p><p>  D1 DB 0AH</p><p>  

38、E1 DB 33H</p><p>  FLAG DB ?</p><p>  MES4DB0DH,0AH,'++++++ WELCOME TO WEI JI YUAN LI KE SHE: ++++++',0DH,0AH,'$'</p><p>  MES0DB0DH,0AH,

39、9;******** DATA COLECTION SYSTEM ********',0DH,0AH,'$'</p><p>  MES1DB0DH,0AH,'------------ ZUO ZHE :LIU JING AND WANG ZHI MING',0DH,0AH,'$'</p><p>  MESSDB 0D

40、H, 'PRESS ANY KEY TO END THE SYSTEM!',0DH,0AH,0DH, 0AH,'$'</p><p>  MES2DB 0DH, 'IN1OUT DATA : $',0DH,'$' </p><p>  CS_BAK DW ? ;保存INTR原中斷處理程序

41、入口段地址的變量</p><p>  IP_BAK DW ? ;保存INTR原中斷處理程序入口偏移地址的變量</p><p>  IM_BAK DB ? ;保存INTR原中斷屏蔽字的變量</p><p>  DATA ENDS</p><p>  ;*********代碼段定義*********** <

42、;/p><p>  CODESEGMENT</p><p>  ASSUME CS:CODE,SS:STACK1,DS:DATA</p><p>  START: MOVAX,DATA</p><p>  MOVDS,AX</p><p>  MOV AL, 10000000B ;8255初始&

43、lt;/p><p>  MOV DX, PCTL</p><p>  OUT DX, AL </p><p>  MOVDX,OFFSET MES4</p><p>  MOVAH,9 ;顯示MES4</p><p>  INT 21H <

44、;/p><p>  MOVDX,OFFSET MES0</p><p>  MOVAH,9 ;顯示MES0</p><p>  INT 21H </p><p>  MOVDX,OFFSET MES1</p><p>  MOVAH,9

45、 ;顯示MES1</p><p>  INT 21H </p><p>  MOVDX,OFFSET MESS</p><p>  MOVAH,9 ;顯示MESS</p><p>  INT 21H

46、</p><p>  CLI ; 8259初始</p><p>  MOV AX,0000H</p><p>  MOV ES,AX ;替換INTR的中斷矢量</p><p>  MOV DI,INTR_IVADD ;保存INTR原中斷處理程序入口偏移地址&

47、lt;/p><p>  MOV AX,ES:[DI]</p><p>  MOV IP_BAK,AX</p><p>  MOV AX,OFFSET MYISR ;設置當前中斷處理程序入口偏移地址</p><p>  MOV ES:[DI],AX</p><p>  ADD DI,2<

48、/p><p>  MOV AX,ES:[DI] ;保存INTR原中斷處理程序入口段地址</p><p>  MOV CS_BAK,AX</p><p>  MOV AX,SEG MYISR ;設置當前中斷處理程序入口段地址</p><p>  MOV ES:[DI],AX <

49、;/p><p>  MOV DX,INTR_OCW1 ;設置中斷屏蔽寄存器,打開INTR的屏蔽位</p><p>  IN AL,DX ;保存INTR原中斷屏蔽字 </p><p>  MOV IM_BAK,AL</p><p>  AND AL,IN

50、TR_IM ;允許PC機內部8259的IR2中斷</p><p>  OUT DX,AL</p><p>  MOV DX,MY8259_ICW1; 初始化實驗系統(tǒng)中8259的ICW1</p><p>  MOV AL,13H ;邊沿觸發(fā)、單片8259、需要ICW4</p>

51、<p>  OUT DX,AL</p><p>  MOV DX,MY8259_ICW2 </p><p>  MOV AL,08H ;初始化實驗系統(tǒng)中8259的ICW2</p><p>  OUT DX,AL</p><p>  MOV DX,MY8259_IC

52、W4 ;初始化實驗系統(tǒng)中8259的ICW4</p><p>  MOV AL,01H ;非自動結束EOI</p><p>  OUT DX,AL</p><p>  MOV DX,MY8259_OCW3</p><p>  MOV AL, 0AH<

53、/p><p>  OUT DX, AL</p><p>  MOV DX,MY8259_OCW1 ;初始化實驗系統(tǒng)中8259的OCW1</p><p>  MOV AL,0FCH ;打開IR0的屏蔽位</p><p>  OUTDX,AL </p>&

54、lt;p>  MOV DX, TCTL ;8254初始</p><p>  MOV AL, 17H</p><p>  OUT DX, AL</p><p>  MOV DX, TIMER0;</p><p>  MOV

55、 AL,2</p><p>  OUT DX,AL</p><p><b>  STI </b></p><p><b>  S33: </b></p><p>  MOV AL, 0</p><p>  MOV

56、DX,ADCS;啟動0809 IN0</p><p>  OUT DX,AL </p><p>  MOV FLAG,0FFH </p><p>  CALL DISPINT0 </p><p>  MOV DX,OFFSET MES2<

57、;/p><p>  MOV AH,9 ;顯示MES2</p><p>  INT 21H </p><p>  MOV AL,IN1OUT </p><p>  CALL DISPINT1 </p><p>  MOV

58、 DL,0FFH</p><p>  MOV AH,6</p><p>  INT 21H </p><p>  JZ S33 </p><p>  QUIT: CLI</p><p>  MOV AX,0000H ;恢復INTR原中斷矢量

59、</p><p>  MOV ES,AX</p><p>  MOVDI,INTR_IVADD ;恢復INTR原中斷處理程序入口偏移地址</p><p>  MOV AX,IP_BAK</p><p>  MOV ES:[DI],AX</p><p>  ADD DI,2</p&

60、gt;<p>  MOV AX,CS_BAK;恢復INTR原中斷處理程序入口段地址</p><p>  MOV ES:[DI],AX</p><p>  MOV DX,INTR_OCW1</p><p>  MOV AL,IM_BAK ;恢復INTR原中斷屏蔽寄存器的屏蔽字</p><p

61、>  OUT DX,AL</p><p>  STI </p><p>  EXIT: MOV AH,4CH ;返回到DOS</p><p>  INT 21H</p><p>  ;***********************數(shù)碼管顯示INT1********************

62、********</p><p>  DISPINT1 PROC </p><p>  PUSH AX </p><p>  MOV BL,AL ; 屏幕顯示</p><p>  AND AL,0F0H</p><p>  MOVCL,4

63、 ; 顯示高位</p><p>  ROR AL,CL</p><p><b>  CALLCRT1</b></p><p>  MOVAL,BL</p><p>  ANDAL,0FH ;顯示低位</p><p><b>  CALLCRT

64、1</b></p><p><b>  CRLF</b></p><p><b>  POP AX</b></p><p><b>  RET</b></p><p>  DISPINT1 ENDP </p><p><b>

65、  CRT1PROC</b></p><p>  ADDAL,30H</p><p>  CMPAL,39H</p><p><b>  JBE D0</b></p><p>  ADD AL,7 ;在屏幕上顯示一位16進制字符</p>&l

66、t;p>  D0: MOVDL,AL</p><p><b>  MOVAH,2</b></p><p><b>  INT 21H</b></p><p>  RET </p><p><b>  CRT1ENDP</b></p>

67、;<p>  ;***********************數(shù)碼管顯示INT0****************************</p><p>  DISPINT0 PROC</p><p><b>  PUSHDS</b></p><p>  PUSHAX </p><

68、p>  MOV AL,IN0IN ;轉換IN0個位 十分位 百分位</p><p>  MOV AH,0</p><p>  DIV E1</p><p>  MOV SI,OFFSET B</p><p>  MOV [SI],AL</p><

69、p>  MOV AL,AH</p><p>  MOV AH,0</p><p>  MUL D1</p><p>  DIV E1</p><p>  INC SI</p><p>  MOV [SI],AL</p><p&g

70、t;  MOV AL,AH</p><p>  MOV AH,0</p><p>  MUL D1</p><p>  DIV E1</p><p><b>  INC SI</b></p><p>  CMP AH,19H</p>&l

71、t;p>  JNBE S11</p><p>  MOV AL,0 </p><p><b>  JMP S2</b></p><p>  S11: INC AL</p><p>  S2: MOV [SI],AL </p>&

72、lt;p>  MOVCL,8 ;從最左邊開始顯示</p><p>  MOVSI,OFFSET B</p><p>  MOVAL,[SI]</p><p>  LEABX,DCTBL</p><p>  XLAT

73、;輸出段碼</p><p>  ADD AL,80H</p><p>  MOVDX,PB55</p><p>  OUTDX,AL</p><p>  MOVDX,PA55</p><p>  MOVAL,CL ;輸出位碼</p><

74、;p>  OUTDX,AL </p><p>  CALLDELAY </p><p>  INCSI ;段碼地址+1</p><p>  ROLCL,1 ;位碼向左移1位</p><p>  MOVAL,[SI]</p&g

75、t;<p>  LEABX,DCTBL</p><p><b>  XLAT</b></p><p>  MOVDX,PB55</p><p>  OUTDX,AL</p><p>  MOVDX,PA55</p><p>  MOVAL,CL

76、 ;輸出位碼</p><p>  OUTDX,AL</p><p>  CALLDELAY</p><p>  INCSI ;段碼地址+1</p><p>  ROLCL,1 ;位碼向左移1位</p><p>  MOV

77、AL,[SI] </p><p>  LEABX,DCTBL</p><p><b>  XLAT</b></p><p>  MOVDX,PB55</p><p>  OUTDX,AL</p><p>  MOVDX,PA55</p><p>  MO

78、VAL,CL ;輸出位碼</p><p>  OUTDX,AL</p><p>  CALLDELAY ;輸出三位碼</p><p>  MOVSI,OFFSET B </p><p>  MOV AL,[SI]</p><p><b&

79、gt;  CMP AL,2</b></p><p><b>  JB A2</b></p><p>  MOVDX,PC55</p><p>  MOVAL,0FFH </p><p>  OUTDX,AL</p><p><b>

80、  JMP G3</b></p><p>  A2:MOVDX,PC55</p><p>  MOVAL,00H </p><p>  OUTDX,AL</p><p>  MOV DX, TCTL ;8254計數(shù)器1控制蜂鳴器</p><p&g

81、t;  MOV AL, 77H</p><p>  OUT DX, AL</p><p>  MOV DX, TIMER1;</p><p>  MOV AL,00</p><p>  OUT DX,AL</p><

82、;p>  MOV AL,01</p><p>  OUT DX,AL</p><p>  G3: POPAX</p><p>  POPDS </p><p><b>  RET</b></p><p>  DISPINT0

83、 ENDP</p><p>  MYISR PROC NEAR ;中斷處理程序MYISR </p><p>  PUSH AX </p><p>  PUSH DX </p><p>  CLI ;關中斷</p><

84、;p>  MOV DX,MY8259_OCW3</p><p>  IN AL,DX</p><p>  AND AL,03H</p><p>  CMP AL,01H</p><p>  JE IROISR</p><p>  JMP OVER</p><p>

85、;  IROISR: </p><p>  CMP FLAG,0FFH</p><p><b>  JE S</b></p><p>  MOV DX,IN1</p><p>  IN AL,DX</p><p>  MOV IN

86、1OUT,AL ; A2為IN1 AD后的值</p><p>  JMP OVER</p><p>  S: MOV DX,ADCS</p><p>  IN AL, DX</p><p>  MOV IN0IN, AL ; A1為IN0</p

87、><p>  MOV AH,0 </p><p>  DIV N ; IN0 AD后線性轉換給0832的值</p><p><b>  NEG AL </b></p><p>  ADD AL,80H </p><p>  MOV

88、BL,AL</p><p>  CMP BL,40H</p><p>  JB SS1</p><p>  SUB BL,4 </p><p>  SS1: MOV AL,BL</p><p>  MOV A3,AL </p><

89、p>  MOV DX,DACS</p><p>  OUT DX,AL</p><p>  MOV DX,IN1 ; 啟動IN1</p><p>  OUT DX,AL</p><p>  MOV AL,0</p><p>  MOV FLAG,AL&

90、lt;/p><p>  OVER: MOVDX,INTR_OCW2 ; 向PC機內部8259發(fā)送中斷結束命令</p><p>  MOVAL,20H</p><p>  OUTDX,AL </p><p>  MOVAL,20H</p><p>  OUT

91、20H,AL </p><p><b>  STI</b></p><p>  POP DX</p><p>  POPAX </p><p><b>  IRET</b></p><p>  MYISR ENDP</p><p

92、>  DELAY PROCNEAR ;延時</p><p><b>  PUSHCX</b></p><p>  MOVCX,0FFFFH</p><p>  LOOP $ </p><p><b>  POP CX</b></

溫馨提示

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

評論

0/150

提交評論