版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 微機原理課程設(shè)計</b></p><p> 課設(shè)題目:數(shù)據(jù)采集系統(tǒng)三(中斷法)</p><p> 實驗者姓名: </p><p> 實驗者學(xué)號: </p><p> 學(xué)院: 電子信息工程學(xué)院 </p>
2、<p> 數(shù)據(jù)采集系統(tǒng)三(中斷法)</p><p><b> 一、實驗?zāi)康?lt;/b></p><p> 進一步掌握微機原理知識,了解微機在實時采集過程中的應(yīng)用,學(xué)習(xí)、掌握編程和程序調(diào)試方法。</p><p><b> 二、實驗內(nèi)容</b></p><p> 1、用中斷法,將ADC
3、0809通道0外接0 ~ 5V電壓,轉(zhuǎn)換成數(shù)字量后,在七段LED數(shù)碼管上,以小數(shù)點后兩位(幾十毫伏)的精度,顯示其模擬電壓的十進值;0809通道0的數(shù)字量以線性控制方式送DAC0832輸出,當通道0的電壓為5V時,0832的OUT為0V, 當通道0的電壓為0時,0832的OUT為2.5V;此模擬電壓再送到ADC 0809通道1,轉(zhuǎn)換后的數(shù)字量在CRT上以十六進制顯示。</p><p> 2、ADC 0809 的
4、CLK 脈沖,由定時器8254的OUT0提供;ADC 0809的EOC信號,用作8259中斷請求信號。</p><p> 3、要有較好的人機對話界面;控制程序的運行。</p><p><b> 三、總體設(shè)計</b></p><p> 1 、ADC 0809的IN0采集電位器0 — 5V電壓,IN1采集0832輸出的模擬量。</p&g
5、t;<p> 2 、DAC 0832將ADC 0809的IN0數(shù)字量后重新轉(zhuǎn)換成模擬量輸出。</p><p> 3、8259用于檢測ADC 0809轉(zhuǎn)換是否結(jié)束和向CPU發(fā)送INTR信號</p><p> 4、 8255為七段LED數(shù)碼管顯示提供顯示驅(qū)動信息。</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> 四、硬件設(shè)計</b></p><p> 因采用了PC機和微機實驗箱, 硬件電路設(shè)計相對比
7、較簡單, 主要利用微機實驗箱上的8255并行口、ADC 0809、DAC 0832、七段LED數(shù)碼管單元、8254定時/計數(shù)器、74LS574輸出接口、電位器等單元電路, 就構(gòu)成了數(shù)據(jù)采集系統(tǒng), 硬件電原理框圖4-3-1所示。</p><p><b> 五、軟件設(shè)計</b></p><p> 本設(shè)計通過軟件編程,實現(xiàn)模/數(shù)轉(zhuǎn)換器0809分別對IN0 0-5V直流電
8、壓的采樣,和經(jīng)0832線性控制后輸出電壓的IN1采樣,IN0的值轉(zhuǎn)換成十進制后,在七段數(shù)碼管上顯示; IN1的值在顯示器上顯示。CPU 根據(jù)IN0的值,使八位發(fā)光二極管根據(jù)題目的要求,指示相應(yīng)的范圍。</p><p><b> 1、設(shè)計思想</b></p><p> 數(shù)據(jù)采集系統(tǒng)分成四個功能模塊,分別是主程序模塊、量綱轉(zhuǎn)換模塊、數(shù)碼管顯示模塊、中斷服務(wù)子程序模塊。
9、</p><p><b> (1)主程序模塊</b></p><p> 根據(jù)題目要求,采用中斷方式實現(xiàn)數(shù)據(jù)采集,因此可把讀取IN0的值并保存,和此數(shù)字量經(jīng)線性控制后送給0832輸出, 作為0809 IN1的模擬電壓和IN1的啟動、讀取以及IN0的BCD碼轉(zhuǎn)換, 放在中斷服務(wù)子程序模塊中完成。所以,在主程序模塊上主要實現(xiàn)啟動0809 IN0、顯示模塊的調(diào)用、和中斷結(jié)
10、束部分程序。</p><p><b> 鍵盤掃描模塊</b></p><p> 設(shè)置鍵盤掃描模塊,采用行列反轉(zhuǎn)發(fā),先PC4-PC7輸出低電平,然后讀入PC0-PC3.再讓PC0-PC3輸出低電平,讀入PC4-PC7.合并掃描值,獲得按鍵值。</p><p> (3) 量綱轉(zhuǎn)換模塊</p><p> 量綱轉(zhuǎn)換模塊在
11、中斷服務(wù)程序內(nèi)完成,只要將IN0的數(shù)字量分別除以51, 商存入顯示IN0的個位存儲單元; 余數(shù)乘以十,再除以51, 商存入十分位存儲單元; 余數(shù)再乘以十,除以51, 若余數(shù)大于25,則商加1, 小于25則舍去, 這樣就達到四舍五入的精度, 再把商存入百分位存儲單元; 以供七段數(shù)碼管顯示時調(diào)用,BCD碼轉(zhuǎn)換模塊可參考圖10所示的流程圖。</p><p> (4) 數(shù)碼管顯示模塊</p><p&
12、gt; 數(shù)碼管顯示模塊比較簡單,自編程序可參考實驗指導(dǎo)書圖1-6所示的流程圖,也可參考實驗8255并行口中的顯示模塊,應(yīng)注意的是在顯示個位時, 要加上小數(shù)點的顯示,這可以在查表獲取個位段碼后,再加上80H來實現(xiàn),注意每一位顯示后要適當延遲時間。</p><p> (5) 中斷服務(wù)子程序模塊</p><p> 考慮到0832的輸出是0809 IN1的輸入,因此,為防止在執(zhí)行中斷服務(wù)子
13、程序時,二次進入中斷服務(wù)子程序, 故在進入中斷服務(wù)子程序后,應(yīng)關(guān)閉中斷,而在退出中斷前開中斷,以便下次中斷進入。中斷服務(wù)子程序模塊主要完成對IN0數(shù)據(jù)的讀取和保存,對IN1的啟動和讀取,對IN0數(shù)據(jù)的BCD轉(zhuǎn)換等任務(wù)。</p><p><b> 程序流程圖</b></p><p> 數(shù)據(jù)采集三主程序流程圖如圖4-3-2所示; 中斷服務(wù)子程序如圖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:轉(zhuǎn)動電位器時數(shù)碼管電壓變化不靈敏,有很嚴重的遲滯現(xiàn)象,且輸出不穩(wěn)定。</
15、p><p> 分析:每次轉(zhuǎn)動電位器都對應(yīng)一次中斷請求,中斷數(shù)據(jù)采集頻率對應(yīng)8254的OUT0輸出的600KHZ,即對CLK0輸入的1.8432MHZ的三分頻。我想問題應(yīng)該是采樣頻率太低的原因,輸出之所以不穩(wěn)定也是有可能因為頻率不匹配的問題。</p><p> 解決方法:修改8254計數(shù)器0的計數(shù)初值,將原來的3改為了2,即對應(yīng)2分頻,結(jié)果電位器變化與數(shù)碼管電壓變化基本一致。</p&g
16、t;<p> 問題2:中斷服務(wù)子程序中要實現(xiàn)0809通道0的數(shù)字量以線性控制方式送DAC0832輸出,當通道0的電壓為5V時,0832的OUT為0V, 當通道0的電壓為0時,0832的OUT為2.5V,但是我們的程序中線性變換結(jié)果混亂。</p><p> 分析:設(shè)0809通道0的值為X,DAC0832的輸出端數(shù)據(jù)為Y,根據(jù)實驗所給數(shù)據(jù)推得X與Y的數(shù)值關(guān)系式為Y=(5-X)/2。</p>
17、;<p> 解決方法:將中斷服務(wù)子程序中的0809通道0的數(shù)字量和DAC0832輸出量之間的轉(zhuǎn)換函數(shù)修改為</p><p> MOV IN0IN, AL ; A1為IN0</p><p> MOV AH,0 </p><p> DIV N (N=2) ; IN0
18、AD后線性轉(zhuǎn)換給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ù)得到正確的對應(yīng)關(guān)系。</p><p><b> 七、心得體會及建議</b></p><p> 體會: 通過一學(xué)期的學(xué)習(xí),我發(fā)現(xiàn)匯編語言與我之前所學(xué)過的C++完全不同,匯編語言是從計算機內(nèi)部結(jié)構(gòu)出發(fā),立足于CPU存儲結(jié)構(gòu)進行編程,更加基礎(chǔ),深入。</p><p> 為了順利完成課程設(shè)計,在進行編程之前,我把中斷控制器
21、8259、并行控制8255、時鐘發(fā)生器8254以及A/D轉(zhuǎn)換0809和D/A轉(zhuǎn)換0832的工作原理以及工作方式進行了深入的回顧與理解。</p><p> 結(jié)合以前80X86實驗內(nèi)容,我完成了課程設(shè)計的編程。接下來是上機調(diào)試,經(jīng)過匯編鏈接,有幾個小問題,經(jīng)過檢查順利排除。程序已經(jīng)可以生成.EXE文件執(zhí)行了,但是轉(zhuǎn)動電位器,屏幕上現(xiàn)實IN0和IN1的值但是關(guān)系不正確。后來經(jīng)過仔細研究IN0經(jīng)轉(zhuǎn)換后的數(shù)字量應(yīng)該進行的
22、變換,調(diào)整了程序,終于實現(xiàn)了功能。</p><p> 驗收時,老師讓我們修改源程序與試驗箱上的接線。這對我來說也是一次挑戰(zhàn),我根據(jù)自己的理解,修改了源程序與接線,編譯鏈接之后,實現(xiàn)了轉(zhuǎn)動電位器,在不同電壓范圍內(nèi)發(fā)出不同頻率聲音的功能。也順利通過了老師的驗收。</p><p> 通過這次課程設(shè)計,自己對編程解決問題不是那么恐懼了,相反還有了很大的興趣。我發(fā)現(xiàn),當我們把匯編語言當成一種工具
23、,而不是一門考試時,就能更加好的掌握它。</p><p> 建議:1.希望老師們能在上課期間增加必要的試驗箱器件知識,同時在課外增加一些匯編語言在生活中應(yīng)用的相關(guān)知識介紹,幫助學(xué)生提高工程意識,在后期學(xué)習(xí)當中有一種將知識運用于實踐的思想。</p><p> 2.希望老師可以提前布置和安排微機原理課設(shè)的任務(wù),不要等到微機原理課程結(jié)束且考試也已經(jīng)結(jié)束的情況下載布置微機課設(shè),老師們也知道,一
24、方面微機原理已經(jīng)考完大家在微機原理課程上投入的時間肯定不會太多,大家對匯編語言的編寫說實話也就少了幾分熱情;另一方面,隨著期末考試的緊逼,后續(xù)課程的復(fù)習(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對應(yīng)的端口始地址,0809,0832</p><p> Y2 EQU 3040H ;片選Y2對應(yīng)的端口始地址</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對應(yīng)的端口始地址,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對應(yīng)的中斷矢量地址,8259</p><p> I
31、NTR_OCW1 EQU 0A1H ;INTR對應(yīng)PC機內(nèi)部8259的OCW1地址</p><p> INTR_OCW2 EQU 0A0H ;INTR對應(yīng)PC機內(nèi)部8259的OCW2地址</p><p> INTR_IM EQU 0FBH;INTR對應(yīng)的中斷屏蔽字</p><p> Y
32、7 EQU 30E0H;片選Y7對應(yīng)的端口始地址</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 ;設(shè)置當前中斷處理程序入口偏移地址</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 ;設(shè)置當前中斷處理程序入口段地址</p><p> MOV ES:[DI],AX <
49、;/p><p> MOV DX,INTR_OCW1 ;設(shè)置中斷屏蔽寄存器,打開INTR的屏蔽位</p><p> IN AL,DX ;保存INTR原中斷屏蔽字 </p><p> MOV IM_BAK,AL</p><p> AND AL,IN
50、TR_IM ;允許PC機內(nèi)部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 ;非自動結(jié)束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 ;恢復(fù)INTR原中斷矢量
59、</p><p> MOV ES,AX</p><p> MOVDI,INTR_IVADD ;恢復(fù)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;恢復(fù)INTR原中斷處理程序入口段地址</p><p> MOV ES:[DI],AX</p><p> MOV DX,INTR_OCW1</p><p> MOV AL,IM_BAK ;恢復(fù)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 ;轉(zhuǎn)換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 ;關(guān)中斷</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后線性轉(zhuǎn)換給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機內(nèi)部8259發(fā)送中斷結(jié)束命令</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)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計--數(shù)據(jù)采集系統(tǒng)(查詢法)
- 微機原理課程設(shè)計報告--數(shù)據(jù)采集顯示系統(tǒng)
- 微機原理課程設(shè)計---溫度采集系統(tǒng)報告
- 微機原理課程設(shè)計----電壓采集系統(tǒng)
- 微機原理課程設(shè)計--溫度采集系統(tǒng)
- 雙機數(shù)據(jù)采集系統(tǒng)設(shè)計-計算機微機原理課程設(shè)計
- 微機原理課程設(shè)計--中斷實現(xiàn)雙機通訊程序
- 微機原理課程設(shè)計--8253定時中斷時鐘
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 《微機原理》課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計---鍵控數(shù)據(jù)采集及數(shù)值顯示電路設(shè)計
- 微機課程設(shè)計---硬件中斷時鐘設(shè)計
- 微機原理課程設(shè)計報告21
- 微機原理課程設(shè)計報告--秒表設(shè)計
- 微機原理課程設(shè)計
- 微機原理課程設(shè)計-楊輝三角課程設(shè)計
- 微機原理課程設(shè)計報告(電子秒表)
評論
0/150
提交評論