版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p> 概述 ………………………………………………………… 1</p><p> 一 設(shè)計內(nèi)容與要求 ……………………………………… 1 </p><p> 二 設(shè)計思想 ……………………………………………… 1 </p><p> 三
2、設(shè)計所用芯片及工作原理 …………………………… 1 </p><p> 四 系統(tǒng)連線圖 …………………………………………… 3 </p><p> 五 連線圖說明 …………………………………………… </p><p> 六 程序流程圖 …………………………………………… 5 </p><p> 七 程序源代碼
3、…………………………………………… 7 </p><p> 八 設(shè)計過程中遇到的問題及解決方法…………………… </p><p> 九 設(shè)計心得 ……………………………………………… 9</p><p><b> 電子秒表</b></p><p><b> 概述</b></p&g
4、t;<p> 《匯編語言程序設(shè)計》是計算機(jī)各專業(yè)一門重要的基礎(chǔ)課,是必修的核心課程之一,是"操作系統(tǒng)"和"微機(jī)原理和接口技術(shù)"等其它核心課程必要的先修課,而且對于訓(xùn)練學(xué)生掌握程序設(shè)計技術(shù),熟悉上機(jī)操作和程序調(diào)試技術(shù)都有重要作用。因此該課程在整個教學(xué)計劃中占有重要地位。</p><p> 本課程的目的和要求是:</p><p> 1
5、、 應(yīng)使學(xué)生掌握8086/8088宏匯編語言程序設(shè)計的基本方法和技巧,能夠運(yùn)用8086/8088宏匯編語言編寫應(yīng)用程序。提高學(xué)生分析問題、解決問題的能力以及實(shí)際動手能力。</p><p> 2、應(yīng)使學(xué)生基本掌握匯編語言程序設(shè)計的基本理論,方法和技巧,正確地使用結(jié)構(gòu)化、模塊程序設(shè)計技術(shù)。注意培養(yǎng)學(xué)生良好的程序設(shè)計風(fēng)格。</p><p> 3、應(yīng)使學(xué)生比較熟練地使用調(diào)試工具DEBUG調(diào)試8
6、086/8088匯編語言程序。注意提高學(xué)生的調(diào)試能力。</p><p> 4、注意與前后相關(guān)課程的關(guān)系。使學(xué)生對前導(dǎo)課程有進(jìn)一步的理解,同時為學(xué)習(xí)后繼課程打好基礎(chǔ)。</p><p><b> 設(shè)計內(nèi)容與要求</b></p><p> 設(shè)計一個簡單的電子秒表(按一下鈕啟動,再按一個停止,再按一下清零,周而復(fù)始。)最小計時單位0.01S,即可
7、顯示XX.XX(秒、百分之一秒)。設(shè)計要求如下:</p><p> (1)由鍵盤和8255作為輸入部分</p><p> ?。?)用七段數(shù)碼管或液晶顯示屏來顯示時間</p><p> (3)由8253和8259構(gòu)成計時信號,通過中斷完成啟動計時、停止計時和動態(tài)刷新顯示。</p><p><b> 設(shè)計思想</b>&
8、lt;/p><p> 電子秒表要實(shí)現(xiàn)的功能:用鍵盤中斷來控制整個程序,按一下回車鍵啟動電子秒表,再按一下暫停,按一下ESC鍵清零,用七段數(shù)碼管顯示時間。整個程序涉及到8255、8253與8259三個芯片。8253的OUT2,CLK2分別連接8259的IRQ7與PCLK,8253的GATE2連接正5伏電壓,采用計數(shù)器2每隔0.01秒產(chǎn)生一次中斷并且計數(shù),寫入以偏移地址4000H開始的4個內(nèi)存單元,然后利用8255將內(nèi)
9、存單元的數(shù)據(jù)輸出到七段數(shù)碼管。由于鍵盤中斷優(yōu)先于8259的7號中斷,所以程序只有在按一下回車鍵才啟動電子秒表,再按一下暫停,按一下ESC鍵清零,如果超出了60秒,整個程序自動重新開始。</p><p><b> 所用芯片工作原理</b></p><p> 8255:接口電路在CPU和I/O設(shè)備之間起著信號的變換和傳輸?shù)淖饔谩?任何接口電路與CPU之間的信息傳輸方式
10、都是并行的,即CPU與接口電路之間以數(shù)據(jù)字節(jié)/字為單位傳送信息。接口電路與I/O設(shè)備之間的信息傳送方式,有并行和串行兩種,相應(yīng)的接口電路稱為并行接口和串行接口。 </p><p> 并行接口是在多根數(shù)據(jù)線上,以數(shù)據(jù)字節(jié)/字與I/O設(shè)備交換信息。在輸入過程中,輸入設(shè)備把數(shù)據(jù)送給接口,并且使?fàn)顟B(tài)線“輸入準(zhǔn)備好”有效。接口把數(shù)據(jù)存放在“輸入緩沖寄存器”中,同時使“輸入回答”線有效,作為對外設(shè)的響應(yīng)。外設(shè)在收到這個回答
11、信號后,就撤消數(shù)據(jù)和“輸入準(zhǔn)備好”信號。數(shù)據(jù)到達(dá)接口中后,接口會在“狀態(tài)寄存器”中設(shè)置輸入準(zhǔn)備好標(biāo)志,或者向CPU發(fā)一個中斷請求。CPU可用查詢方式或中斷方式從接口中讀取數(shù)據(jù)。接口中的數(shù)據(jù)被讀取后,接口會自動清除狀態(tài)寄存器中的標(biāo)志,且撤消對CPU的中斷請求。</p><p> 在輸出過程中,每當(dāng)輸出寄存器可以接收數(shù)據(jù),接口就會將狀態(tài)寄存器中“輸出準(zhǔn)備好”狀態(tài)置1或向CPU發(fā)一個中斷請求,CPU可用查詢或中斷方式
12、向接口輸出數(shù)據(jù)。當(dāng)CPU輸出的數(shù)據(jù)到達(dá)接口后,接口會清除“輸出準(zhǔn)備好”狀態(tài),把數(shù)據(jù)送往外設(shè),并向外設(shè)發(fā)一個“數(shù)據(jù)輸出準(zhǔn)備好”信號。外設(shè)受到驅(qū)動后,便接收數(shù)據(jù),并向接口電路發(fā)一個“輸出回答”信號,接口收到該回答信號后,又將狀態(tài)寄存器中“輸出準(zhǔn)備好”置位,以便CPU輸出下一個數(shù)據(jù)。</p><p> 8253:對CLK信號進(jìn)行“減1計數(shù)”。首先CPU把“控制字”,寫入“控制寄存器”,把“計數(shù)初始值”寫入“初值寄存器
13、”,然后, 定時/計數(shù)器按控制字要求計數(shù)。計數(shù)從“計數(shù)初始值 開始,每當(dāng)CLK信號出現(xiàn)一次,計數(shù)值減1,當(dāng)計數(shù)值減為0時,從OUT端輸出規(guī)定的信號(具體形式與工作模式有關(guān))。當(dāng)CLK信號出現(xiàn)時,計數(shù)值是否減1(即是否計數(shù)),受到“門控信號”GATE的影響,一般,僅當(dāng)GATE有效時,才減1.門控信號GATE如何影響計數(shù)操作,以及輸出端OUT在各種情況下輸出的信號形式與定時/計數(shù)器的工作模式有關(guān)。</p><p>
14、 8259:1. IR線上提出了中斷請求的中斷源,即出現(xiàn)請求,IRR中斷請求寄存器(共有8位D7~D0)對應(yīng)于連接在IR0~I(xiàn)R7線上的外設(shè)的中斷請求,哪一根輸入線有請求,哪一根輸入線就置1。</p><p> 2. 若OCW1(IMR中斷屏蔽寄存器)未使該中斷請求屏蔽(對應(yīng)位為0時不屏蔽),該請求被送入PR(優(yōu)先權(quán)分析器)比較。否則,不送入PR比較。</p><p> 3. PR把新
15、進(jìn)入的請求與ISR(服務(wù)中寄存器)中正在被處理的中斷進(jìn)行比較。如果新進(jìn)入的請求優(yōu)先級較低,則8259不向CPU提出請求。如果新進(jìn)入的請求優(yōu)先級較高,則8259使INT引腳輸出高電平,向CPU提出請求。</p><p> 4. 如果CPU內(nèi)部的標(biāo)志寄存器中的IF(中斷允許標(biāo)志)為0,CPU不響應(yīng)該請求。若IF=1,CPU在執(zhí)行完當(dāng)前指令后,從CPU的INTA引腳上向8259發(fā)出兩個負(fù)脈沖。</p>
16、<p> 5.第一個 INTA負(fù)脈沖到達(dá)8259時,8259完成以下三項工作:</p><p> a.使IRR(中斷請求寄存器)的鎖存功能失效。這樣一來,在IR7~I(xiàn)R0上的請求信號就不會被8259接收。直到第二個INTA負(fù)脈沖到達(dá)8259時,才又使IRR的鎖存功能有效。</p><p> b.使ISR(服務(wù)中寄存器)中的相應(yīng)位置1。</p><p>
17、; c.使IRR中的相應(yīng)位清0。</p><p> 6.第二個INTA負(fù)脈沖到達(dá)8259時,8259完成以下工作:</p><p> a.將中斷類型碼(ICW2中的值)送到數(shù)據(jù)總線上,CPU將其保存在“內(nèi)部暫存器”中。</p><p> b.如果ICW4(它設(shè)定級中斷聯(lián)方式之特定完全嵌套方式,將在8259的工作方式中詳述ICW4)中設(shè)置了中斷自動結(jié)束方式,則
18、將ISR的相應(yīng)位清0。</p><p><b> 系統(tǒng)連線圖</b></p><p><b> A </b></p><p> +5V DP 7407</p><p><b> X4</b></p&
19、gt;<p><b> X1</b></p><p><b> GATE2</b></p><p><b> OUT2</b></p><p><b> CLK2</b></p><p><b> 8253</b&g
20、t;</p><p> PB7----------PB0</p><p><b> 8255</b></p><p><b> PA3—PA0</b></p><p><b> 8259</b></p><p> PCLK
21、 IRQ7</p><p> 8253與8259的接線圖</p><p><b> 8255接線圖</b></p><p><b> 連線圖說明</b></p><p><b> 程序流程圖</b></p><p><b>
22、 Y</b></p><p><b> N</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y&l
23、t;/b></p><p><b> IRQ7</b></p><p><b> Y </b></p><p><b> N</b></p><p><b> Disp</b></p><p><b>
24、 N Y</b></p><p><b> 程序源代碼</b></p><p><b> 主程序:</b></p><p> push ds ;保存數(shù)據(jù)段 </p><p> mov ax,0000 &
25、lt;/p><p> mov ds,ax ;數(shù)據(jù)段清零 </p><p> mov ax,offset irq7 ;取中斷程序入口地址 </p><p> add ax,2000 ?。患友b時IP=2000地址 </p><p> mov si,003c ?。惶?259中斷7中斷矢量
26、 </p><p> mov w[si],ax ;填偏移量矢量 </p><p> mov ax,0000 ?。欢蔚刂稢S=0000H </p><p> mov si,003e </p><p> mov w[si],ax ;填段地址矢量 &l
27、t;/p><p> pop ds ??;彈?! ?lt;/p><p> in al,21 ??;讀8259中斷屏蔽字</p><p> and al,7f ;開8259中斷7 </p><p> out 21,al </p><p&g
28、t; mov al,b4;8253的計數(shù)器2為方式2,采用二進(jìn)制計數(shù),先低后高寫入計數(shù)值 10110100 </p><p> out 43,al?。粚懭敕绞娇刂谱帧 ?lt;/p><p> mov ax,2e9c 0010 1110 1001 1100B 11932D </p><p> out 42
29、,al ;寫入低字節(jié)計數(shù)值1001 1100 </p><p> mov al,ah </p><p> out 42,al??;寫入高字節(jié)計數(shù)值 0010 1110</p><p> mov al,81?。?255的A口為方式0輸出,B口為方式0輸出,C口下部輸入 1000 0001</p>
30、<p> out 63,al ?。粚懛绞娇刂谱?lt;/p><p> call first ;調(diào)用first子程序,賦計數(shù)初值</p><p> begi:hlt 延時等待</p><p> sti;開中斷</p><p><b> mov ah,01</b></p
31、><p> int 16 ;檢測是否按了鍵盤</p><p><b> jz begi</b></p><p> mov ah,00 ;讀鍵值</p><p><b> int 16</b></p><p> cmp al,0d?。皇欠癜戳嘶剀?lt;/
32、p><p> jnz A1 </p><p> mov si,4000 </p><p> not [si+04] ;偏移地址為4004的內(nèi)存單元內(nèi)容取反</p><p><b> jmp begi</b></p><p> A1:cmp al,1b??;是否按了ESC鍵&l
33、t;/p><p><b> jnz A2</b></p><p> call first??;重新賦初值,相當(dāng)于清零</p><p> A2:jmp begi</p><p><b> 中斷程序:</b></p><p> irq7:call disp ;調(diào)
34、用disp子程序,用來在數(shù)碼管顯示數(shù)據(jù)</p><p> mov si,4000</p><p> cmp [si+04],00 ??;判斷是否按了第2次回車鍵</p><p><b> je A4</b></p><p> call addn ;調(diào)用addn子程序,用來計數(shù)</p>
35、<p> A4:mov al,20</p><p> out 20,al</p><p> cli??;關(guān)中斷</p><p> iret??;返回</p><p><b> addn程序:</b></p><p> addn:mov si,4000<
36、;/p><p> add [si+03],01 ;百分之一秒加1</p><p> cmp [si+03],0a ;判斷是否大于10</p><p><b> jz A5</b></p><p><b> jmp A9</b></p><p> A5:mo
37、v [si+03],00</p><p> Add [si+02],01 ?。皇种幻爰?</p><p> cmp [si+02],0a ??;判斷是否大于10</p><p><b> jz A6</b></p><p><b> jmp A9</b></p>&
38、lt;p> A6:mov [si+02],00</p><p> add [si+01],01 ??;秒位加1</p><p> cmp [si+01],0a;判斷是否大于10 </p><p><b> jz A7</b></p><p><b> jmp A9</b>
39、</p><p> A7:mov [si+01],00</p><p> add [si],01 ??;十秒位加1</p><p> cmp [si],06??;判斷是否大于6</p><p><b> jz A8</b></p><p><b> jmp A9&l
40、t;/b></p><p> A8:mov [si],00 ;大于60:00重新開始</p><p><b> A9: ret</b></p><p><b> 賦初值程序:</b></p><p> first:mov si,4000</p><p>&
41、lt;b> mov al,00</b></p><p> mov [si],al</p><p> mov [si+01],al</p><p> mov [si+02],al</p><p> mov [si+03],al</p><p> mov [si+04],al</p>
42、;<p><b> ret</b></p><p><b> 顯示程序:</b></p><p> disp:push ax ??;保存AX</p><p> mov si,4000;指向數(shù)據(jù)緩沖區(qū)</p><p> mov dl,f7;1111 011
43、1 指向數(shù)碼管</p><p> mov al,dl ;al=1111 0111</p><p> again:out 60,al??;寫端口A</p><p> mov al,[si]</p><p> mov bx,4100 ;指向數(shù)碼緩沖區(qū) bx=0100 0001 0000 00
44、00</p><p> and ax,00ff ; ax=0000 0000 al</p><p> add bx,ax;得到顯示代碼 bx=0100 0001 al</p><p> mov al,[bx]</p><p> out 61,al;寫端口B
45、</p><p> call dally:調(diào)用延時程序dally</p><p><b> inc si</b></p><p> mov al,dl</p><p> test al,01</p><p><b> jz out </b></
46、p><p> ror al,1;指向下一個數(shù)碼管</p><p> mov dl,al</p><p> jmp again</p><p> out: pop ax;彈出AX</p><p><b> ret</b></p><p> da
47、lly:push cx;延時程序</p><p><b> push ax</b></p><p> mov cx,0010</p><p> t1 :mov ax,0010</p><p> t2 dec ax</p><p><b> jnz t2<
48、/b></p><p><b> loop t1</b></p><p><b> pop ax</b></p><p><b> pop cx</b></p><p><b> ret</b></p><p>
49、<b> 數(shù)碼緩沖區(qū):</b></p><p> 0000:40003f,06,5b4f,66,6d,7d,07,7f,6f</p><p> 設(shè)計過程中遇到的問題及解決方法</p><p><b> 設(shè)計心得</b></p><p> 通過本次課程設(shè)計,對微機(jī)接口的認(rèn)識有了更一步的提高
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子秒表課程設(shè)計
- 電子秒表課程設(shè)計
- 電子秒表課程設(shè)計
- 電子秒表課程設(shè)計
- 電子秒表課程設(shè)計
- 數(shù)字電子課程設(shè)計---電子秒表
- 電力電子課程設(shè)計---電子秒表
- 電子秒表課程設(shè)計報告
- 電子秒表課程設(shè)計報告
- 數(shù)字電子課程設(shè)計--秒表
- 電子秒表課程設(shè)計 (2)
- 微機(jī)課程設(shè)計--電子秒表
- 電子秒表課程設(shè)計報告
- 電子秒表cad課程設(shè)計
- 電子秒表的課程設(shè)計
- 電子秒表電路課程設(shè)計
- eda課程設(shè)計--電子秒表設(shè)計
- 微機(jī)原理電子秒表課程設(shè)計
- 電子技術(shù)課程設(shè)計 --電子秒表
- 《電子技術(shù)》課程設(shè)計論文-電子秒表
評論
0/150
提交評論