版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 目 錄</b></p><p> 概述 ………………………………………………………… 1</p><p> 一 設(shè)計(jì)內(nèi)容與要求 ……………………………………… 1 </p><p> 二 設(shè)計(jì)思想 ……………………………………………… 1 </p><p> 三
2、設(shè)計(jì)所用芯片及工作原理 …………………………… 1 </p><p> 四 系統(tǒng)連線圖 …………………………………………… 3 </p><p> 五 連線圖說(shuō)明 …………………………………………… </p><p> 六 程序流程圖 …………………………………………… 5 </p><p> 七 程序源代碼
3、…………………………………………… 7 </p><p> 八 設(shè)計(jì)過程中遇到的問題及解決方法…………………… </p><p> 九 設(shè)計(jì)心得 ……………………………………………… 9</p><p><b> 電子秒表</b></p><p><b> 概述</b></p&g
4、t;<p> 《匯編語(yǔ)言程序設(shè)計(jì)》是計(jì)算機(jī)各專業(yè)一門重要的基礎(chǔ)課,是必修的核心課程之一,是"操作系統(tǒng)"和"微機(jī)原理和接口技術(shù)"等其它核心課程必要的先修課,而且對(duì)于訓(xùn)練學(xué)生掌握程序設(shè)計(jì)技術(shù),熟悉上機(jī)操作和程序調(diào)試技術(shù)都有重要作用。因此該課程在整個(gè)教學(xué)計(jì)劃中占有重要地位。</p><p> 本課程的目的和要求是:</p><p> 1
5、、 應(yīng)使學(xué)生掌握8086/8088宏匯編語(yǔ)言程序設(shè)計(jì)的基本方法和技巧,能夠運(yùn)用8086/8088宏匯編語(yǔ)言編寫應(yīng)用程序。提高學(xué)生分析問題、解決問題的能力以及實(shí)際動(dòng)手能力。</p><p> 2、應(yīng)使學(xué)生基本掌握匯編語(yǔ)言程序設(shè)計(jì)的基本理論,方法和技巧,正確地使用結(jié)構(gòu)化、模塊程序設(shè)計(jì)技術(shù)。注意培養(yǎng)學(xué)生良好的程序設(shè)計(jì)風(fēng)格。</p><p> 3、應(yīng)使學(xué)生比較熟練地使用調(diào)試工具DEBUG調(diào)試8
6、086/8088匯編語(yǔ)言程序。注意提高學(xué)生的調(diào)試能力。</p><p> 4、注意與前后相關(guān)課程的關(guān)系。使學(xué)生對(duì)前導(dǎo)課程有進(jìn)一步的理解,同時(shí)為學(xué)習(xí)后繼課程打好基礎(chǔ)。</p><p><b> 設(shè)計(jì)內(nèi)容與要求</b></p><p> 設(shè)計(jì)一個(gè)簡(jiǎn)單的電子秒表(按一下鈕啟動(dòng),再按一個(gè)停止,再按一下清零,周而復(fù)始。)最小計(jì)時(shí)單位0.01S,即可
7、顯示XX.XX(秒、百分之一秒)。設(shè)計(jì)要求如下:</p><p> ?。?)由鍵盤和8255作為輸入部分</p><p> (2)用七段數(shù)碼管或液晶顯示屏來(lái)顯示時(shí)間</p><p> ?。?)由8253和8259構(gòu)成計(jì)時(shí)信號(hào),通過中斷完成啟動(dòng)計(jì)時(shí)、停止計(jì)時(shí)和動(dòng)態(tài)刷新顯示。</p><p><b> 設(shè)計(jì)思想</b>&
8、lt;/p><p> 電子秒表要實(shí)現(xiàn)的功能:用鍵盤中斷來(lái)控制整個(gè)程序,按一下回車鍵啟動(dòng)電子秒表,再按一下暫停,按一下ESC鍵清零,用七段數(shù)碼管顯示時(shí)間。整個(gè)程序涉及到8255、8253與8259三個(gè)芯片。8253的OUT2,CLK2分別連接8259的IRQ7與PCLK,8253的GATE2連接正5伏電壓,采用計(jì)數(shù)器2每隔0.01秒產(chǎn)生一次中斷并且計(jì)數(shù),寫入以偏移地址4000H開始的4個(gè)內(nèi)存單元,然后利用8255將內(nèi)
9、存單元的數(shù)據(jù)輸出到七段數(shù)碼管。由于鍵盤中斷優(yōu)先于8259的7號(hào)中斷,所以程序只有在按一下回車鍵才啟動(dòng)電子秒表,再按一下暫停,按一下ESC鍵清零,如果超出了60秒,整個(gè)程序自動(dòng)重新開始。</p><p><b> 所用芯片工作原理</b></p><p> 8255:接口電路在CPU和I/O設(shè)備之間起著信號(hào)的變換和傳輸?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í)使“輸入回答”線有效,作為對(duì)外設(shè)的響應(yīng)。外設(shè)在收到這個(gè)回答
11、信號(hào)后,就撤消數(shù)據(jù)和“輸入準(zhǔn)備好”信號(hào)。數(shù)據(jù)到達(dá)接口中后,接口會(huì)在“狀態(tài)寄存器”中設(shè)置輸入準(zhǔn)備好標(biāo)志,或者向CPU發(fā)一個(gè)中斷請(qǐng)求。CPU可用查詢方式或中斷方式從接口中讀取數(shù)據(jù)。接口中的數(shù)據(jù)被讀取后,接口會(huì)自動(dòng)清除狀態(tài)寄存器中的標(biāo)志,且撤消對(duì)CPU的中斷請(qǐng)求。</p><p> 在輸出過程中,每當(dāng)輸出寄存器可以接收數(shù)據(jù),接口就會(huì)將狀態(tài)寄存器中“輸出準(zhǔn)備好”狀態(tài)置1或向CPU發(fā)一個(gè)中斷請(qǐng)求,CPU可用查詢或中斷方式
12、向接口輸出數(shù)據(jù)。當(dāng)CPU輸出的數(shù)據(jù)到達(dá)接口后,接口會(huì)清除“輸出準(zhǔn)備好”狀態(tài),把數(shù)據(jù)送往外設(shè),并向外設(shè)發(fā)一個(gè)“數(shù)據(jù)輸出準(zhǔn)備好”信號(hào)。外設(shè)受到驅(qū)動(dòng)后,便接收數(shù)據(jù),并向接口電路發(fā)一個(gè)“輸出回答”信號(hào),接口收到該回答信號(hào)后,又將狀態(tài)寄存器中“輸出準(zhǔn)備好”置位,以便CPU輸出下一個(gè)數(shù)據(jù)。</p><p> 8253:對(duì)CLK信號(hào)進(jìn)行“減1計(jì)數(shù)”。首先CPU把“控制字”,寫入“控制寄存器”,把“計(jì)數(shù)初始值”寫入“初值寄存器
13、”,然后, 定時(shí)/計(jì)數(shù)器按控制字要求計(jì)數(shù)。計(jì)數(shù)從“計(jì)數(shù)初始值 開始,每當(dāng)CLK信號(hào)出現(xiàn)一次,計(jì)數(shù)值減1,當(dāng)計(jì)數(shù)值減為0時(shí),從OUT端輸出規(guī)定的信號(hào)(具體形式與工作模式有關(guān))。當(dāng)CLK信號(hào)出現(xiàn)時(shí),計(jì)數(shù)值是否減1(即是否計(jì)數(shù)),受到“門控信號(hào)”GATE的影響,一般,僅當(dāng)GATE有效時(shí),才減1.門控信號(hào)GATE如何影響計(jì)數(shù)操作,以及輸出端OUT在各種情況下輸出的信號(hào)形式與定時(shí)/計(jì)數(shù)器的工作模式有關(guān)。</p><p>
14、 8259:1. IR線上提出了中斷請(qǐng)求的中斷源,即出現(xiàn)請(qǐng)求,IRR中斷請(qǐng)求寄存器(共有8位D7~D0)對(duì)應(yīng)于連接在IR0~I(xiàn)R7線上的外設(shè)的中斷請(qǐng)求,哪一根輸入線有請(qǐng)求,哪一根輸入線就置1。</p><p> 2. 若OCW1(IMR中斷屏蔽寄存器)未使該中斷請(qǐng)求屏蔽(對(duì)應(yīng)位為0時(shí)不屏蔽),該請(qǐng)求被送入PR(優(yōu)先權(quán)分析器)比較。否則,不送入PR比較。</p><p> 3. PR把新
15、進(jìn)入的請(qǐng)求與ISR(服務(wù)中寄存器)中正在被處理的中斷進(jìn)行比較。如果新進(jìn)入的請(qǐng)求優(yōu)先級(jí)較低,則8259不向CPU提出請(qǐng)求。如果新進(jìn)入的請(qǐng)求優(yōu)先級(jí)較高,則8259使INT引腳輸出高電平,向CPU提出請(qǐng)求。</p><p> 4. 如果CPU內(nèi)部的標(biāo)志寄存器中的IF(中斷允許標(biāo)志)為0,CPU不響應(yīng)該請(qǐng)求。若IF=1,CPU在執(zhí)行完當(dāng)前指令后,從CPU的INTA引腳上向8259發(fā)出兩個(gè)負(fù)脈沖。</p>
16、<p> 5.第一個(gè) INTA負(fù)脈沖到達(dá)8259時(shí),8259完成以下三項(xiàng)工作:</p><p> a.使IRR(中斷請(qǐng)求寄存器)的鎖存功能失效。這樣一來(lái),在IR7~I(xiàn)R0上的請(qǐng)求信號(hào)就不會(huì)被8259接收。直到第二個(gè)INTA負(fù)脈沖到達(dá)8259時(shí),才又使IRR的鎖存功能有效。</p><p> b.使ISR(服務(wù)中寄存器)中的相應(yīng)位置1。</p><p>
17、; c.使IRR中的相應(yīng)位清0。</p><p> 6.第二個(gè)INTA負(fù)脈沖到達(dá)8259時(shí),8259完成以下工作:</p><p> a.將中斷類型碼(ICW2中的值)送到數(shù)據(jù)總線上,CPU將其保存在“內(nèi)部暫存器”中。</p><p> b.如果ICW4(它設(shè)定級(jí)中斷聯(lián)方式之特定完全嵌套方式,將在8259的工作方式中詳述ICW4)中設(shè)置了中斷自動(dòng)結(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> 連線圖說(shuō)明</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時(shí)IP=2000地址 </p><p> mov si,003c ;填8259中斷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的計(jì)數(shù)器2為方式2,采用二進(jìn)制計(jì)數(shù),先低后高寫入計(jì)數(shù)值 10110100 </p><p> out 43,al ;寫入方式控制字 </p><p> mov ax,2e9c 0010 1110 1001 1100B 11932D </p><p> out 42
29、,al??;寫入低字節(jié)計(jì)數(shù)值1001 1100 </p><p> mov al,ah </p><p> out 42,al ;寫入高字節(jié)計(jì)數(shù)值 0010 1110</p><p> mov al,81 ;8255的A口為方式0輸出,B口為方式0輸出,C口下部輸入 1000 0001</p>
30、<p> out 63,al ;寫方式控制字</p><p> call first ;調(diào)用first子程序,賦計(jì)數(shù)初值</p><p> begi:hlt 延時(shí)等待</p><p> sti;開中斷</p><p><b> mov ah,01</b></p
31、><p> int 16??;檢測(cè)是否按了鍵盤</p><p><b> jz begi</b></p><p> mov ah,00 ;讀鍵值</p><p><b> int 16</b></p><p> cmp al,0d??;是否按了回車</
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子程序,用來(lái)在數(shù)碼管顯示數(shù)據(jù)</p><p> mov si,4000</p><p> cmp [si+04],00 ?。慌袛嗍欠癜戳说?次回車鍵</p><p><b> je A4</b></p><p> call addn?。徽{(diào)用addn子程序,用來(lái)計(jì)數(shù)</p>
35、<p> A4:mov al,20</p><p> out 20,al</p><p> cli?。魂P(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 ??;十分之一秒加1</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 ?。槐4鍭X</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)用延時(shí)程序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;指向下一個(gè)數(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;延時(shí)程序</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è)計(jì)過程中遇到的問題及解決方法</p><p><b> 設(shè)計(jì)心得</b></p><p> 通過本次課程設(shè)計(jì),對(duì)微機(jī)接口的認(rèn)識(shí)有了更一步的提高
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫(kù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 電子秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 電子秒表課程設(shè)計(jì)
- 數(shù)字電子課程設(shè)計(jì)---電子秒表
- 電力電子課程設(shè)計(jì)---電子秒表
- 電子秒表課程設(shè)計(jì)報(bào)告
- 電子秒表課程設(shè)計(jì)報(bào)告
- 數(shù)字電子課程設(shè)計(jì)--秒表
- 電子秒表課程設(shè)計(jì) (2)
- 微機(jī)課程設(shè)計(jì)--電子秒表
- 電子秒表課程設(shè)計(jì)報(bào)告
- 電子秒表cad課程設(shè)計(jì)
- 電子秒表的課程設(shè)計(jì)
- 電子秒表電路課程設(shè)計(jì)
- eda課程設(shè)計(jì)--電子秒表設(shè)計(jì)
- 微機(jī)原理電子秒表課程設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì) --電子秒表
- 《電子技術(shù)》課程設(shè)計(jì)論文-電子秒表
評(píng)論
0/150
提交評(píng)論