版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p> 《微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)》</p><p><b> 課程設(shè)計(jì)報(bào)告</b></p><p> 目 錄</p><p> 一.課程設(shè)計(jì)目的與要求…………………………………………………………………………3</p><p> 二.方案論證與原理設(shè)計(jì)……………………………………………………
2、……………………3</p><p> 三.詳細(xì)設(shè)計(jì)………………………………………………………………………………………4</p><p> 四.方案實(shí)現(xiàn)與測(cè)試………………………………………………………………………………6</p><p> 五.分析與總結(jié)……………………………………………………………………………………7</p><p>&
3、lt;b> 1、基本要求</b></p><p> 設(shè)計(jì)一個(gè)用于智力競(jìng)賽的搶答計(jì)時(shí)器,同時(shí)能測(cè)試人的反應(yīng)(響應(yīng))時(shí)間。按啟動(dòng)鈕,測(cè)試開(kāi)始,2個(gè)八段碼倒計(jì)時(shí)開(kāi)始(如從10秒或20秒倒計(jì)時(shí)),一旦看到燈亮,參賽雙方(或三方)分別按不同的搶答按鈕參與搶答。一旦其中一位按下按鈕,相應(yīng)的顯示燈(LED)亮并響“嘟”的一聲,此時(shí)若其它按鈕按下均無(wú)效。若一直到計(jì)數(shù)到零,無(wú)一人按下按鈕,則搶答結(jié)束(以后再按
4、搶答鈕無(wú)效)。立即按測(cè)試鈕,8×8點(diǎn)陣顯示反應(yīng)時(shí)間xx.xx秒(8×8點(diǎn)陣用紅色代表秒,綠色代表0.01秒,交替顯示)。要求:</p><p> ?。?)編制1個(gè)隨機(jī)數(shù)產(chǎn)生子程序,由隨機(jī)數(shù)決定從按啟動(dòng)鈕到對(duì)應(yīng)LED亮的時(shí)間(如在3秒~15秒之間內(nèi)任意變動(dòng)),使被測(cè)試者對(duì)LED亮的時(shí)間無(wú)法預(yù)見(jiàn),以確保測(cè)試結(jié)果的可信;</p><p> (2)必須在見(jiàn)到LED亮后按測(cè)試鈕
5、才有效,即一直按著按鈕或提前按下按鈕無(wú)效;</p><p> ?。?)反應(yīng)時(shí)間顯示xx.xx秒,準(zhǔn)確到百分之一秒。</p><p><b> 2、設(shè)計(jì)思路</b></p><p> 將系統(tǒng)分成3個(gè)大的模塊:倒計(jì)時(shí)模塊,計(jì)時(shí)模塊,顯示模塊。</p><p> 1)倒計(jì)時(shí)模塊:通過(guò)一個(gè)子程序段獲得隨機(jī)數(shù),并用這個(gè)隨機(jī)數(shù)
6、倒計(jì)時(shí);</p><p> 2)計(jì)時(shí)模塊:倒計(jì)時(shí)結(jié)束時(shí)燈亮,開(kāi)始計(jì)數(shù),當(dāng)有人按下鍵并正確時(shí),鎖存所用時(shí)間;</p><p> 3)顯示模塊:將鎖存的時(shí)間用八段碼顯示出來(lái)。</p><p><b> 課程設(shè)計(jì)目的與要求</b></p><p><b> 1、課程設(shè)計(jì)目的</b></p&g
7、t;<p> 上學(xué)期在學(xué)習(xí)微機(jī)原理的基礎(chǔ)上,我們一直在實(shí)踐微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程這門(mén)實(shí)驗(yàn)課程,從指令與匯編語(yǔ)言基礎(chǔ)開(kāi)始,我們熟悉了調(diào)試工具的使用,匯編語(yǔ)言程序設(shè)計(jì),I/O與存儲(chǔ)器,簡(jiǎn)單輸入輸出,中斷,計(jì)數(shù)/定時(shí)器,以及模數(shù)/數(shù)模轉(zhuǎn)換。平時(shí)的實(shí)驗(yàn)都是對(duì)各個(gè)單元單一功能的驗(yàn)證,并沒(méi)有他們之間的聯(lián)系,最后的綜合課程設(shè)計(jì)將讓我們學(xué)以致用,把學(xué)到的各個(gè)章節(jié)的知識(shí)根據(jù)需要聯(lián)系在一起,并實(shí)現(xiàn)一定的功能。同時(shí)也培養(yǎng)我們遇到問(wèn)題,思考問(wèn)題
8、,解決問(wèn)題的能力?;銥檎?,在實(shí)踐中深化對(duì)所學(xué)內(nèi)容的認(rèn)識(shí)。 </p><p><b> 2、基本要求</b></p><p> 設(shè)計(jì)一個(gè)用于智力競(jìng)賽的搶答計(jì)時(shí)器,同時(shí)能測(cè)試人的反應(yīng)(響應(yīng))時(shí)間。按啟動(dòng)鈕,測(cè)試開(kāi)始,2個(gè)八段碼倒計(jì)時(shí)開(kāi)始(如從10秒或20秒倒計(jì)時(shí)),一旦看到燈亮,參賽雙方(或三方)分別按不同的搶答按</p><p> 鈕參與
9、搶答。一旦其中一位按下按鈕,相應(yīng)的顯示燈(LED)亮并響“嘟”的一聲,此時(shí)若其它按鈕按下</p><p> 均無(wú)效。若一直到計(jì)數(shù)到零,無(wú)一人按下按鈕,則搶答結(jié)束(以后再按搶答鈕無(wú)效)。立即按測(cè)試鈕,8×</p><p> 8點(diǎn)陣顯示反應(yīng)時(shí)間xx.xx秒(8×8點(diǎn)陣用紅色代表秒,綠色代表0.01秒,交替顯示)。要求:</p><p> ?。?)
10、編制1個(gè)隨機(jī)數(shù)產(chǎn)生子程序,由隨機(jī)數(shù)決定從按啟動(dòng)鈕到對(duì)應(yīng)LED亮的時(shí)間(如在3秒~15秒之間內(nèi)任意變動(dòng)),使被測(cè)試者對(duì)LED亮的時(shí)間無(wú)法預(yù)見(jiàn),以確保測(cè)試結(jié)果的可信;</p><p> (2)必須在見(jiàn)到LED亮后按測(cè)試鈕才有效,即一直按著按鈕或提前按下按鈕無(wú)效;</p><p> ?。?)反應(yīng)時(shí)間顯示xx.xx秒,準(zhǔn)確到百分之一秒。</p><p><b>
11、 3、進(jìn)一步設(shè)計(jì)要求</b></p><p> 修改以上設(shè)計(jì)使進(jìn)一步能測(cè)試人對(duì)不同事物的反應(yīng)(響應(yīng))時(shí)間。如功能為:按啟動(dòng)鈕,測(cè)試開(kāi)始,</p><p> 一旦紅燈亮,立即按紅燈測(cè)試鈕,一旦綠燈亮,立即按綠燈測(cè)試鈕,但黃燈亮為干擾。8×8點(diǎn)陣顯示反應(yīng)</p><p> 時(shí)間xx.xx秒。若按錯(cuò)鈕,則顯示出錯(cuò)并響“嘟”一聲。要求:<
12、/p><p> ?。?)編制2個(gè)隨機(jī)數(shù)產(chǎn)生子程序,1個(gè)決定從按啟動(dòng)鈕到LED 亮的時(shí)間,另一個(gè)決定亮何種顏色燈;</p><p> ?。?)同樣要求在見(jiàn)到LED亮?xí)r按測(cè)試鈕才有效;</p><p> ?。?)在倒計(jì)數(shù)時(shí)附有音樂(lè)伴奏。</p><p> 二.方案論證與原理設(shè)計(jì)</p><p><b> 1、設(shè)計(jì)
13、思路</b></p><p> 將系統(tǒng)分成3個(gè)大的模塊:倒計(jì)時(shí)模塊,計(jì)時(shí)模塊,顯示模塊。</p><p> 1)倒計(jì)時(shí)模塊:通過(guò)一個(gè)子程序段獲得隨機(jī)數(shù),并用這個(gè)隨機(jī)數(shù)倒計(jì)時(shí);</p><p> 2)計(jì)時(shí)模塊:倒計(jì)時(shí)結(jié)束時(shí)燈亮,開(kāi)始計(jì)數(shù),當(dāng)有人按下鍵并正確時(shí),鎖存所用時(shí)間;</p><p> 3)顯示模塊:將鎖存的時(shí)間用八段
14、碼顯示出來(lái)。</p><p><b> 2、進(jìn)一步設(shè)計(jì)</b></p><p> 隨機(jī)數(shù)程序我用讀系統(tǒng)時(shí)鐘的方法,得到隨機(jī)數(shù)后一旦測(cè)試開(kāi)始,通過(guò)loop倒計(jì)時(shí),倒計(jì)時(shí)結(jié)束時(shí),燈亮表示可以開(kāi)始搶答。這里燈亮可以有兩種選擇:紅燈和黃燈,我用隨機(jī)數(shù)末位進(jìn)行選擇,0則紅燈亮,1則綠燈亮。這也變相實(shí)現(xiàn)了進(jìn)一步設(shè)計(jì)要求中兩個(gè)隨機(jī)數(shù)子程序的要求。</p&g
15、t;<p> 燈亮以后我用8253的計(jì)數(shù)器開(kāi)始計(jì)數(shù),當(dāng)有人按下鍵且正確時(shí),計(jì)數(shù)停止,得到一個(gè)計(jì)數(shù)值。對(duì)這個(gè)計(jì)數(shù)值進(jìn)行處理以后可以相應(yīng)的通過(guò)8*8點(diǎn)陣的行選和紅選黃選使時(shí)間在點(diǎn)陣上交替顯示。</p><p> 由于系統(tǒng)板可以提供的時(shí)鐘是1MHZ或2MHZ,這樣計(jì)數(shù)器計(jì)出的數(shù)值再轉(zhuǎn)化比較繁瑣,我選擇用8253的另一個(gè)計(jì)數(shù)器輸入1MHZ的時(shí)鐘,采用方式3產(chǎn)生100HZ的方波,這樣每個(gè)脈
16、沖0.01秒,計(jì)數(shù)得到的值單位為0.01秒,可以直接用來(lái)顯示。</p><p><b> 三.詳細(xì)設(shè)計(jì)</b></p><p><b> 1、硬件連接圖</b></p><p><b> 8255</b></p><p> ?。–LK來(lái)自系統(tǒng)脈沖1MHZ)</
17、p><p><b> 8253</b></p><p> 2、主程序流程圖與顯示子程序流程圖</p><p> 圖一.主程序流程圖 圖二.顯示子程序流程圖</p><p><b> 3、初始定義</b></p>&
18、lt;p> 在程序的數(shù)據(jù)段里定義好8253、8255各需要用到的端口地址,定義點(diǎn)陣的行選和列選地址。</p><p><b> 4、初始化</b></p><p> 首先顯示提示信息,等待測(cè)試開(kāi)始。</p><p> 8253:用到計(jì)數(shù)器1、2,計(jì)數(shù)器1的控制字為01110001B,采用方式0,BCD碼十進(jìn)制計(jì)數(shù),計(jì)數(shù)器2的控
19、制字為10110111B,采用方式3,二進(jìn)制計(jì)數(shù)。計(jì)數(shù)器2初值選擇10000,產(chǎn)生0.01s脈沖,輸出作為計(jì)數(shù)器1的時(shí)鐘信號(hào)。</p><p> 8255:控制字為10000000B,A口B口均做輸出;B口接GATE1,需要開(kāi)始計(jì)數(shù)時(shí)初值設(shè)為01H。</p><p><b> 5、倒計(jì)時(shí)</b></p><p> 通過(guò)讀系統(tǒng)時(shí)鐘得到一
20、個(gè)隨機(jī)數(shù),啟動(dòng)后通過(guò)loop倒計(jì)數(shù),計(jì)完時(shí)燈亮,可以開(kāi)始搶答。這里倒計(jì)數(shù)時(shí)我并沒(méi)有用數(shù)碼管顯示,這樣才更有不可預(yù)見(jiàn)性。</p><p><b> 6、計(jì)反應(yīng)時(shí)間</b></p><p> 倒計(jì)時(shí)結(jié)束后燈亮,此時(shí)PB0輸出高電平,使計(jì)數(shù)器1開(kāi)始工作,當(dāng)有鍵按下且是正確的時(shí)PB0輸出低電平,計(jì)數(shù)器1停止工作。8253計(jì)數(shù)器2產(chǎn)生的0.01s時(shí)鐘使得計(jì)數(shù)器1計(jì)
21、得得時(shí)間是以0.01s為單位,用0減去計(jì)數(shù)停止時(shí)的數(shù)即為從開(kāi)始計(jì)數(shù)到按鍵之間的時(shí)間。分別獲得這個(gè)時(shí)間各位數(shù)字存入不同的變量,就可以在點(diǎn)陣上交替顯示這些變量來(lái)得到反應(yīng)時(shí)間。實(shí)驗(yàn)中數(shù)字顯示形式為xx:xx秒,紅色數(shù)字顯示為秒,黃色顯示為0.01秒,四個(gè)數(shù)字交替顯示就是測(cè)試者的反應(yīng)時(shí)間。</p><p><b> 7、顯示模塊</b></p><p>
22、8*8點(diǎn)陣上數(shù)字的現(xiàn)實(shí)原理:</p><p> 字形0~9與段碼有對(duì)應(yīng)關(guān)系,例如數(shù)字5:8fh,89h,89h,0f9h,將數(shù)字0~9的段碼依次放在變量numx中,顯示方法:行選地址-2A0H,紅選地址-2A8H,黃選地址-2B0H,要顯示某一個(gè)數(shù)字,對(duì)應(yīng)到位選信號(hào)00h,04h,08h,0ch,10h,14h,18h,1ch,20h,24h中的一個(gè),映射到段碼變量中就是所要顯示數(shù)字的段碼,依次
23、掃描顯示。</p><p> 顯示模塊的中心思想就是掃描,利用人眼的視覺(jué)暫留,看到4列LED燈都亮,顯示相應(yīng)的信息。</p><p> 四. 方案實(shí)現(xiàn)與測(cè)試</p><p> 現(xiàn)在提交的程序與驗(yàn)收時(shí)的有所不同,驗(yàn)收時(shí)并沒(méi)有實(shí)現(xiàn)全部功能,如反應(yīng)時(shí)間的顯示是通過(guò)中斷顯示在屏幕上,算是變相的實(shí)現(xiàn)。此后我又完善了一些功能,如點(diǎn)陣顯示,隨機(jī)亮紅燈或綠燈。基本完成了實(shí)
24、驗(yàn)要求。</p><p> 實(shí)驗(yàn)現(xiàn)象:開(kāi)始時(shí)若按“q”,則退出測(cè)試;若按其他鍵,重新顯示提示信息,重新開(kāi)始;若按“1”,測(cè)試開(kāi)始,等待,當(dāng)有燈亮?xí)r,如為紅燈按“2”,為綠燈按“3”,如果按鍵準(zhǔn)確,點(diǎn)陣顯示時(shí)間,如果按錯(cuò),屏幕顯示“wrong!”,“Continue? (Y/N)”。</p><p> 程序編譯無(wú)誤后連接實(shí)驗(yàn)箱進(jìn)行調(diào)試,調(diào)試時(shí)首先分別單獨(dú)連接點(diǎn)陣,8255,8253進(jìn)行簡(jiǎn)
25、單功能的驗(yàn)證,驗(yàn)證無(wú)誤保證硬件不會(huì)影響到方案的實(shí)現(xiàn)。對(duì)顯示模塊的調(diào)節(jié)花了比較多的精力,剛開(kāi)始點(diǎn)陣不顯示,但硬件驗(yàn)證的時(shí)候點(diǎn)陣是沒(méi)問(wèn)題的,所以我先改為屏幕顯示,通過(guò)中斷使在運(yùn)行到某一些關(guān)鍵步驟的時(shí)候輸出一定的信息,功能驗(yàn)證無(wú)誤后再連接點(diǎn)陣。其次是delay環(huán)節(jié)的時(shí)間,因?yàn)閿?shù)字的顯示是通過(guò)掃描完成的,所以delay時(shí)間不能太長(zhǎng)也不能太短,通過(guò)不斷的調(diào)試終于得到了合適的delay值。</p><p><b>
26、 五.分析與總結(jié)</b></p><p> 通過(guò)這四周的課程設(shè)計(jì),我學(xué)到了不少也發(fā)現(xiàn)不少問(wèn)題。很大的一個(gè)問(wèn)題是我沒(méi)有很好的利用TD等調(diào)試工具,造成的后果就是不能及時(shí)發(fā)現(xiàn)問(wèn)題出在哪里,所以效率相對(duì)較低,如果以后還有類似的課題,我一定要好好利用這些工具。另外隔了一個(gè)假期,對(duì)有一些基本知識(shí)和功能有一些陌生了,所以熟悉這些也花了不少時(shí)間,這是以后需要改進(jìn)的地方。</p><p>
27、 我從不斷想方案,否定一個(gè)再試一個(gè),到完善程序,到不斷調(diào)試出結(jié)果,最后能完成基本功能,我還是比較欣慰的。這和許多實(shí)踐類課程一樣,重在實(shí)踐,當(dāng)你寫(xiě)完程序覺(jué)得邏輯功能都很完美的時(shí)候,只是走出了一小步,當(dāng)調(diào)試時(shí)會(huì)遇到各種各樣意想不到的問(wèn)題,在不斷改進(jìn)的過(guò)程中才能對(duì)理論有更好的把握。</p><p> 對(duì)于這次實(shí)驗(yàn)而言,它將原來(lái)有些枯燥的基本實(shí)驗(yàn)實(shí)例化了,而且需要我們根據(jù)要求把它們有機(jī)聯(lián)系在一起,實(shí)際設(shè)計(jì)了利用微機(jī)系統(tǒng)
28、的一些應(yīng)用。同時(shí)我了解到微機(jī),乃至以后單片機(jī)的一些設(shè)計(jì)和應(yīng)用的方法。雖然我沒(méi)能把系統(tǒng)功能非常完美的呈現(xiàn),但在這個(gè)過(guò)程中我從不斷的錯(cuò)誤中吸取很多教訓(xùn),這些對(duì)以后的學(xué)習(xí)時(shí)間都是很有幫助的。當(dāng)然,如果時(shí)間更加充裕的話,我相信我的設(shè)計(jì)會(huì)做的更加完善。</p><p><b> 參考書(shū)目:</b></p><p> 東南大學(xué)《微機(jī)系統(tǒng)與接口》課程組,微機(jī)實(shí)驗(yàn)及課程設(shè)計(jì)教程(
29、試用版2.0),2009年2月</p><p> 楊素行 等編著,《微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用(第2版)》,北京,清華大學(xué)出版社,2004年</p><p><b> 附匯編代碼</b></p><p> PORTEQU0E000H-280H</p><p> TIM_CTL EQU PORT+283H
30、 ;8253控制寄存器</p><p> TIMER0 EQU PORT+280H ;計(jì)數(shù)器0 1 2</p><p> TIMER1 EQU PORT+281H</p><p> TIMER2 EQU PORT+282H</p><p> CW_TIMER0 EQU 001
31、10000B ;計(jì)數(shù)器0控制字,方式0</p><p> CW_TIMER1 EQU 01110001B ;計(jì)數(shù)器1控制字,方式0</p><p> CW_TIMER2 EQU 10110111B ;計(jì)數(shù)器2控制字,方式3</p><p> P8255_CTL EQU PORT+28BH ;825
32、5控制寄存器,A口輸出</p><p> P8255A EQU PORT+288H ;8255 A B C口</p><p> P8255B EQU PORT+289H</p><p> P8255C EQU PORT+28AH</p><p> LED E
33、QU PORT+2A0H</p><p> LED_R EQU PORT+2A8H;紅選</p><p> LED_Y EQU PORT+2B0H;黃選</p><p> DATE SEGMENT ;數(shù)據(jù)段</p><p> MESS1 db &
34、#39; ******** XXXXXXXXX********',0dh,0ah,'$'</p><p> MESS2 dB ' Start --press 1',0DH,0AH</p><p> db ' red light on --press 2',0dh,0a
35、h</p><p> db ' green light on --press 3',0dh,0ah</p><p> db ' stop --ANY KEY',0DH,0AH</p><p> db ' quit --press q&
36、#39;,0dh,0ah,'$'</p><p> MESS3 DB ' Wrong!',0dh,0ah,'$'</p><p> MESS4 DB ' Continue? (Y/N)',0DH,0AH,'$'</p><p> num D
37、B 00h,04h,08h,0ch,10h,14h,18h,1ch,20h,24h</p><p> numx db 0Ffh,81h,81h,0ffh,0ffh,00h,00h,00h,0f1h,91h,91h,9fh,0ffh,91h,91h,91h,0ffh,08h,08h,0f8h,8fh,89h,89h,0f9h,8fh,89h,89h,0ffh,0ffh,80h,80h,80h,0ffh
38、,89h,89h,0ffh,0ffh,89h,89h,0f9h</p><p> NUM1 DB ?</p><p> num2 DB ?</p><p> NUM3 DB ?</p><p> num4 DB ?</p><p> DA
39、TE ENDS</p><p> ;=============================================================</p><p> STAC SEGMENT PARA STACK 'STACK' ;堆棧段</p><p> STA DW 32 DUP(?)</
40、p><p> TOP EQU LENGTH STA</p><p> STAC ENDS</p><p> CODE SEGMENT</p><p> ASSUME CS:CODE,DS:DATE,SS:STAC,ES:DATE</p><p><b> START: &l
41、t;/b></p><p> MOV AX,DATE</p><p> MOV DS,AX</p><p> MOV ES,AX</p><p> MOV AH,09H</p><p> MOV DX,OFFSET MESS1 ;顯示提示信息</p&g
42、t;<p> INT 21H</p><p> RANDOM PROC</p><p><b> PUSH CX</b></p><p><b> PUSH DX</b></p><p><b> PUSH AX</b></p>
43、<p><b> STI</b></p><p> MOV AH,0 ;讀時(shí)鐘計(jì)數(shù)器值</p><p><b> INT 1AH</b></p><p> MOV AX,DX </p><p><b> MOV BH,AH&l
44、t;/b></p><p> MOV BL,AL ;BX作隨機(jī)數(shù)</p><p><b> POP AX</b></p><p><b> POP DX</b></p><p><b> POP CX</b></p><p
45、><b> RET</b></p><p> RANDOM ENDP</p><p><b> START1: </b></p><p> ; 計(jì)數(shù)器1計(jì)反應(yīng)時(shí)間</p><p> MOV DX,TIM_CTL</p><p> MOV A
46、L,CW_TIMER1</p><p> OUT DX,AL ;計(jì)反應(yīng)時(shí)間</p><p> ; 計(jì)數(shù)器2產(chǎn)生0.01秒時(shí)鐘</p><p> MOV DX,TIM_CTL</p><p> MOV AL,CW_TIMER2</p><p> OUT D
47、X,AL</p><p> MOV DX,TIMER2 </p><p> MOV AX,10000 ;計(jì)數(shù)初值為10000,輸入1MHZ,輸出100HZ</p><p> OUT DX,AL </p><p> MOV AL,AH </p><p> OUT
48、 DX,AL</p><p> ;8255 A OUT,B OUT</p><p> MOVDX,P8255_CTL</p><p> MOVAX,10000000B ;A口輸出,PA0~3紅燈,PA4~7綠燈</p><p><b> OUTDX,AL</b></p><
49、p> MOV AH,09H ;顯示提示信息</p><p> MOV DX,OFFSET MESS2</p><p> INT 21H</p><p> mov ah,08h </p><p> int 21h</p><p>
50、 cmp al,'q' ;按"q",測(cè)試退出</p><p> jz quit01</p><p> mov ah,08h ;等待鍵盤(pán)產(chǎn)生“1”</p><p> int 21h</p><p> cmp al,'1
51、39; ;按"1",測(cè)試開(kāi)始</p><p> JNZstart1;其他鍵,重新開(kāi)始</p><p> CALL RANDOM </p><p> and bl,01h </p><p> cmp bh,0 ;隨機(jī)數(shù)末尾數(shù)等于零則跳至紅燈,否則綠燈
52、</p><p> jz redlight </p><p> ;=============================================================</p><p> greenlight: </p><p> MOV DX,P8255A</p><p>
53、 MOV AL,00H </p><p> OUT DX,AL ; 燈暗</p><p> CALL RANDOM </p><p> MOV AH,BH ; 倒計(jì)時(shí)</p><p> MOV AL,BL ;bl隨機(jī)數(shù)</p><p
54、> MOV CX,AX ;ax->cx </p><p><b> LOOP $</b></p><p> MOV DX,TIMER1 </p><p> MOV AX,00H ;計(jì)數(shù)器1初植</p><p> OUT DX
55、,AL</p><p> OUT DX,AL</p><p> MOVAL,01H;B口初值,PB0接GATE1,使GATE1高</p><p> MOVDX,P8255B</p><p> OUTDX,AL </p><p> MOV DX,P8255A </p&
56、gt;<p> MOV AL,0F0H</p><p> OUT DX,AL ;綠燈亮</p><p> jmp greenpress</p><p> quit01: jmp quit </p><p> redlight: </p><p>
57、MOV DX,P8255A</p><p> MOV AL,00H </p><p> OUT DX,AL ; 燈暗</p><p> CALL RANDOM </p><p> MOV AH,BH ; 倒計(jì)時(shí)</p><p> MOV
58、 AL,BL ; bx隨機(jī)數(shù)</p><p> MOV CX,AX </p><p> LOOP $ ;"$"操作符表示當(dāng)前地址,這條指令不斷執(zhí)行,直到cx=0</p><p> MOV DX,TIMER1 </p><p> MOV AX,00H
59、 ;初植</p><p> OUT DX,AL</p><p> OUT DX,AL</p><p> MOVAL,01H;B口初值,PB0接GATE1</p><p> MOVDX,P8255B</p><p><b> OUTDX,AL</b></p
60、><p> MOV DX,P8255A</p><p> MOV AL,0FH </p><p> OUT DX,AL ;紅燈亮</p><p> jmp redpress </p><p> greenpress:
61、 </p><p> mov ah,08h ;等待鍵盤(pán)輸入“3”</p><p> int 21h </p><p> cmp al,'3' </p><p> MOVAL,00H ;PB0變低,停止計(jì)數(shù)</p><p> MOVDX,P8255B<
62、;/p><p><b> OUTDX,AL</b></p><p> jnz wrongmsg;不正確顯示錯(cuò)誤信息</p><p> jmp lockk;正確則跳至顯示程序</p><p> redpress: </p><p> mov ah,08h ;等待鍵盤(pán)輸入
63、“2”</p><p> int 21h </p><p> cmp al,'2' </p><p> MOVAL,00H ;PB0變低,停止計(jì)數(shù)</p><p> MOVDX,P8255B</p><p><b> OUTDX,AL</b>
64、</p><p> jnz wrongmsg;不正確顯示錯(cuò)誤信息</p><p> jmp lockk;正確則跳至顯示程序</p><p> QUIT00:JMP START1</p><p> lockk: </p><p> MOV DX,TIMER1</p>
65、<p> IN AL,DX</p><p> XCHG AL,AH</p><p> INAL,DX</p><p> XCHGAL,AH ;AX為計(jì)數(shù)后值</p><p> MOV BX,0</p><p> SUB BX,AX;相減得到
66、反應(yīng)時(shí)間 </p><p> MOVAX,BX</p><p> AND AX,000FH</p><p> MOV NUM1,AL;將要輸出的值分別放入num1和num2,num3,num4(低位到高位)</p><p> MOVAX,BX</p><p> AND AX,00f0H
67、 </p><p> MOV CL,4</p><p> SHR AX,CL</p><p> MOV NUM2,AL</p><p> MOVAX,BX</p><p> AND AX,0f00H </p><p> MOV
68、 CL,8</p><p> SHR AX,CL</p><p> MOV NUM3,AL</p><p><b> MOVAX,BX</b></p><p> AND AX,0f000H </p><p> MOV CL,12</p>
69、<p> SHR AX,CL</p><p> MOV NUM4,AL </p><p><b> LOP0: </b></p><p> CALL DISP</p><p> MOV DL,0FFH</p><p>
70、MOV AH,06H ;直接控制臺(tái)I/O,al=輸入字符的asc碼,zf=0</p><p> INT 21H</p><p> JZ LOP0</p><p><b> QUIT: </b></p><p> mov ah,09h</p><p>
71、mov dx,offset mess4</p><p> int 21h</p><p> mov ah,08h</p><p><b> int 21h</b></p><p> cmp al,'y'</p><p> jz QUIT0
72、0</p><p> cmp al,'Y' ;y/Y重新開(kāi)始</p><p> jz QUIT00</p><p> MOV AX,4C00H ;否則返回dos</p><p> INT 21H</p><p> wrongmsg: </p
73、><p> MOV AH,09H ;顯示出錯(cuò)信息</p><p> MOV DX,OFFSET MESS3</p><p> INT 21H</p><p> JMP quit</p><p> ;====================================
74、================</p><p> ; 以下為顯示子程序段</p><p> DISP PROC NEAR </p><p> MOVBL,NUM4;時(shí)間顯示形式:xx.xx秒</p><p> CALLDISP_R;紅色代表秒</p><p> MOVBL,
75、NUM3;黃色代表0.01秒</p><p> CALLDISP_R;四個(gè)數(shù)字交替顯示</p><p> MOVBL,NUM2</p><p> CALLDISP_Y</p><p> MOVBL,NUM1</p><p> CALLDISP_Y</p><p>
76、; DISP ENDP</p><p> ;======================================================</p><p> DISP_R PROC </p><p> mov cx,0f0fh</p><p><b> d1: </b></
77、p><p> mov ah,01h</p><p><b> push cx</b></p><p> mov cx,0004h</p><p> mov si,offset num</p><p> mov bh,00h </p><p> add si
78、,bx ;通過(guò)要顯示的數(shù)字選擇num中段碼,得到numx中相應(yīng)數(shù)字的碼</p><p><b> next1: </b></p><p> mov al,[SI]</p><p> mov bx,offset numx</p><p> xlat ;得到第一行碼&
79、lt;/p><p> mov dx,led</p><p> out dx,al</p><p> mov al,ah</p><p> mov dx,led_R</p><p> out dx,al ;顯示第一行紅</p><p> shl ah,01&l
80、t;/p><p><b> inc si</b></p><p><b> push cx</b></p><p> mov cx,0ffffh</p><p> delay1: </p><p> loop delay1 ;延時(shí)</p&g
81、t;<p><b> pop cx</b></p><p> loop next1</p><p><b> pop cx</b></p><p> call delay</p><p><b> RET</b></p><p&g
82、t; DISP_RENDP</p><p> ;======================================================</p><p> DISP_Y PROC</p><p> mov cx,0f0fh</p><p><b> d2: </b></p>
83、<p> mov ah,01h</p><p><b> push cx</b></p><p> mov cx,0004h</p><p> mov si,offset num</p><p> mov bh,00h </p><p> add si,bx
84、 ;通過(guò)要顯示的數(shù)字選擇num中段碼,得到numx中相應(yīng)數(shù)字的碼</p><p><b> next2: </b></p><p> mov al,[SI]</p><p> mov bx,offset numx</p><p> xlat ;得到第一行碼</
85、p><p> mov dx,led</p><p> out dx,al</p><p> mov al,ah</p><p> mov dx,led_Y</p><p> out dx,al ;顯示第一行紅</p><p> shl ah,01<
86、/p><p><b> inc si</b></p><p><b> push cx</b></p><p> mov cx,0ffffh</p><p> delay2: </p><p> loop delay2 ;延時(shí)</p&
87、gt;<p><b> pop cx</b></p><p> loop next2</p><p><b> pop cx</b></p><p> call delay</p><p><b> RET</b></p><p&
88、gt; DISP_Y ENDP</p><p> ;=============================================================</p><p> DELAY PROC NEAR ;產(chǎn)生延時(shí)為0.1秒的子程序段</p><p> PUSH CX</p><p&g
89、t; MOV CX,0F00H</p><p><b> LOOP $</b></p><p> POP CX</p><p><b> RET</b></p><p> DELAY ENDP</p><p> CODE ENDS&l
溫馨提示
- 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)課程設(shè)計(jì)--搶答計(jì)時(shí)器
- 微機(jī)原理課程設(shè)計(jì)-計(jì)時(shí)器
- 微機(jī)原理及應(yīng)用課程設(shè)計(jì)---可調(diào)計(jì)時(shí)器設(shè)計(jì)
- 智力競(jìng)賽搶答計(jì)時(shí)器的設(shè)計(jì)-eda課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)搶答器
- 測(cè)控原理課程設(shè)計(jì)--時(shí)鐘計(jì)時(shí)器的設(shè)計(jì)
- 時(shí)鐘計(jì)時(shí)器課程設(shè)計(jì)
- 籃球計(jì)時(shí)器課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)---競(jìng)賽搶答器設(shè)計(jì)
- 匯編課程設(shè)計(jì)報(bào)告--- 計(jì)時(shí)器
- 課程設(shè)計(jì)---vhdl秒表計(jì)時(shí)器
- 匯編課程設(shè)計(jì)報(bào)告--計(jì)時(shí)器
- 24秒計(jì)時(shí)器課程設(shè)計(jì)
- 多功能計(jì)時(shí)器課程設(shè)計(jì)
- 倒計(jì)時(shí)器課程設(shè)計(jì)
- 課程設(shè)計(jì)--倒計(jì)時(shí)計(jì)時(shí)器的設(shè)計(jì)
- 籃球比賽計(jì)時(shí)器(課程設(shè)計(jì))
- 微機(jī)原理課程設(shè)計(jì)---八路搶答器
- 微機(jī)原理課程設(shè)計(jì)--打字計(jì)時(shí)練習(xí)
- 微機(jī)原理課程設(shè)計(jì)---4路競(jìng)賽搶答器
評(píng)論
0/150
提交評(píng)論