微機原理課程設(shè)計--搶答計時器_第1頁
已閱讀1頁,還剩15頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)

文檔簡介

1、<p>  《微機實驗及課程設(shè)計》</p><p><b>  課程設(shè)計報告</b></p><p>  目 錄</p><p>  一.課程設(shè)計目的與要求…………………………………………………………………………3</p><p>  二.方案論證與原理設(shè)計……………………………………………………

2、……………………3</p><p>  三.詳細設(shè)計………………………………………………………………………………………4</p><p>  四.方案實現(xiàn)與測試………………………………………………………………………………6</p><p>  五.分析與總結(jié)……………………………………………………………………………………7</p><p>&

3、lt;b>  1、基本要求</b></p><p>  設(shè)計一個用于智力競賽的搶答計時器,同時能測試人的反應(yīng)(響應(yīng))時間。按啟動鈕,測試開始,2個八段碼倒計時開始(如從10秒或20秒倒計時),一旦看到燈亮,參賽雙方(或三方)分別按不同的搶答按鈕參與搶答。一旦其中一位按下按鈕,相應(yīng)的顯示燈(LED)亮并響“嘟”的一聲,此時若其它按鈕按下均無效。若一直到計數(shù)到零,無一人按下按鈕,則搶答結(jié)束(以后再按

4、搶答鈕無效)。立即按測試鈕,8×8點陣顯示反應(yīng)時間xx.xx秒(8×8點陣用紅色代表秒,綠色代表0.01秒,交替顯示)。要求:</p><p> ?。?)編制1個隨機數(shù)產(chǎn)生子程序,由隨機數(shù)決定從按啟動鈕到對應(yīng)LED亮的時間(如在3秒~15秒之間內(nèi)任意變動),使被測試者對LED亮的時間無法預(yù)見,以確保測試結(jié)果的可信;</p><p> ?。?)必須在見到LED亮后按測試鈕

5、才有效,即一直按著按鈕或提前按下按鈕無效;</p><p>  (3)反應(yīng)時間顯示xx.xx秒,準確到百分之一秒。</p><p><b>  2、設(shè)計思路</b></p><p>  將系統(tǒng)分成3個大的模塊:倒計時模塊,計時模塊,顯示模塊。</p><p>  1)倒計時模塊:通過一個子程序段獲得隨機數(shù),并用這個隨機數(shù)

6、倒計時;</p><p>  2)計時模塊:倒計時結(jié)束時燈亮,開始計數(shù),當有人按下鍵并正確時,鎖存所用時間;</p><p>  3)顯示模塊:將鎖存的時間用八段碼顯示出來。</p><p><b>  課程設(shè)計目的與要求</b></p><p><b>  1、課程設(shè)計目的</b></p&g

7、t;<p>  上學期在學習微機原理的基礎(chǔ)上,我們一直在實踐微機實驗及課程設(shè)計教程這門實驗課程,從指令與匯編語言基礎(chǔ)開始,我們熟悉了調(diào)試工具的使用,匯編語言程序設(shè)計,I/O與存儲器,簡單輸入輸出,中斷,計數(shù)/定時器,以及模數(shù)/數(shù)模轉(zhuǎn)換。平時的實驗都是對各個單元單一功能的驗證,并沒有他們之間的聯(lián)系,最后的綜合課程設(shè)計將讓我們學以致用,把學到的各個章節(jié)的知識根據(jù)需要聯(lián)系在一起,并實現(xiàn)一定的功能。同時也培養(yǎng)我們遇到問題,思考問題

8、,解決問題的能力?;銥檎趯嵺`中深化對所學內(nèi)容的認識。 </p><p><b>  2、基本要求</b></p><p>  設(shè)計一個用于智力競賽的搶答計時器,同時能測試人的反應(yīng)(響應(yīng))時間。按啟動鈕,測試開始,2個八段碼倒計時開始(如從10秒或20秒倒計時),一旦看到燈亮,參賽雙方(或三方)分別按不同的搶答按</p><p>  鈕參與

9、搶答。一旦其中一位按下按鈕,相應(yīng)的顯示燈(LED)亮并響“嘟”的一聲,此時若其它按鈕按下</p><p>  均無效。若一直到計數(shù)到零,無一人按下按鈕,則搶答結(jié)束(以后再按搶答鈕無效)。立即按測試鈕,8×</p><p>  8點陣顯示反應(yīng)時間xx.xx秒(8×8點陣用紅色代表秒,綠色代表0.01秒,交替顯示)。要求:</p><p> ?。?)

10、編制1個隨機數(shù)產(chǎn)生子程序,由隨機數(shù)決定從按啟動鈕到對應(yīng)LED亮的時間(如在3秒~15秒之間內(nèi)任意變動),使被測試者對LED亮的時間無法預(yù)見,以確保測試結(jié)果的可信;</p><p> ?。?)必須在見到LED亮后按測試鈕才有效,即一直按著按鈕或提前按下按鈕無效;</p><p> ?。?)反應(yīng)時間顯示xx.xx秒,準確到百分之一秒。</p><p><b>

11、  3、進一步設(shè)計要求</b></p><p>  修改以上設(shè)計使進一步能測試人對不同事物的反應(yīng)(響應(yīng))時間。如功能為:按啟動鈕,測試開始,</p><p>  一旦紅燈亮,立即按紅燈測試鈕,一旦綠燈亮,立即按綠燈測試鈕,但黃燈亮為干擾。8×8點陣顯示反應(yīng)</p><p>  時間xx.xx秒。若按錯鈕,則顯示出錯并響“嘟”一聲。要求:<

12、/p><p>  (1)編制2個隨機數(shù)產(chǎn)生子程序,1個決定從按啟動鈕到LED 亮的時間,另一個決定亮何種顏色燈;</p><p> ?。?)同樣要求在見到LED亮時按測試鈕才有效;</p><p> ?。?)在倒計數(shù)時附有音樂伴奏。</p><p>  二.方案論證與原理設(shè)計</p><p><b>  1、設(shè)計

13、思路</b></p><p>  將系統(tǒng)分成3個大的模塊:倒計時模塊,計時模塊,顯示模塊。</p><p>  1)倒計時模塊:通過一個子程序段獲得隨機數(shù),并用這個隨機數(shù)倒計時;</p><p>  2)計時模塊:倒計時結(jié)束時燈亮,開始計數(shù),當有人按下鍵并正確時,鎖存所用時間;</p><p>  3)顯示模塊:將鎖存的時間用八段

14、碼顯示出來。</p><p><b>  2、進一步設(shè)計</b></p><p>  隨機數(shù)程序我用讀系統(tǒng)時鐘的方法,得到隨機數(shù)后一旦測試開始,通過loop倒計時,倒計時結(jié)束時,燈亮表示可以開始搶答。這里燈亮可以有兩種選擇:紅燈和黃燈,我用隨機數(shù)末位進行選擇,0則紅燈亮,1則綠燈亮。這也變相實現(xiàn)了進一步設(shè)計要求中兩個隨機數(shù)子程序的要求。</p&g

15、t;<p>  燈亮以后我用8253的計數(shù)器開始計數(shù),當有人按下鍵且正確時,計數(shù)停止,得到一個計數(shù)值。對這個計數(shù)值進行處理以后可以相應(yīng)的通過8*8點陣的行選和紅選黃選使時間在點陣上交替顯示。</p><p>  由于系統(tǒng)板可以提供的時鐘是1MHZ或2MHZ,這樣計數(shù)器計出的數(shù)值再轉(zhuǎn)化比較繁瑣,我選擇用8253的另一個計數(shù)器輸入1MHZ的時鐘,采用方式3產(chǎn)生100HZ的方波,這樣每個脈

16、沖0.01秒,計數(shù)得到的值單位為0.01秒,可以直接用來顯示。</p><p><b>  三.詳細設(shè)計</b></p><p><b>  1、硬件連接圖</b></p><p><b>  8255</b></p><p> ?。–LK來自系統(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各需要用到的端口地址,定義點陣的行選和列選地址。</p><p><b>  4、初始化</b></p><p>  首先顯示提示信息,等待測試開始。</p><p>  8253:用到計數(shù)器1、2,計數(shù)器1的控制字為01110001B,采用方式0,BCD碼十進制計數(shù),計數(shù)器2的控

19、制字為10110111B,采用方式3,二進制計數(shù)。計數(shù)器2初值選擇10000,產(chǎn)生0.01s脈沖,輸出作為計數(shù)器1的時鐘信號。</p><p>  8255:控制字為10000000B,A口B口均做輸出;B口接GATE1,需要開始計數(shù)時初值設(shè)為01H。</p><p><b>  5、倒計時</b></p><p>  通過讀系統(tǒng)時鐘得到一

20、個隨機數(shù),啟動后通過loop倒計數(shù),計完時燈亮,可以開始搶答。這里倒計數(shù)時我并沒有用數(shù)碼管顯示,這樣才更有不可預(yù)見性。</p><p><b>  6、計反應(yīng)時間</b></p><p>  倒計時結(jié)束后燈亮,此時PB0輸出高電平,使計數(shù)器1開始工作,當有鍵按下且是正確的時PB0輸出低電平,計數(shù)器1停止工作。8253計數(shù)器2產(chǎn)生的0.01s時鐘使得計數(shù)器1計

21、得得時間是以0.01s為單位,用0減去計數(shù)停止時的數(shù)即為從開始計數(shù)到按鍵之間的時間。分別獲得這個時間各位數(shù)字存入不同的變量,就可以在點陣上交替顯示這些變量來得到反應(yīng)時間。實驗中數(shù)字顯示形式為xx:xx秒,紅色數(shù)字顯示為秒,黃色顯示為0.01秒,四個數(shù)字交替顯示就是測試者的反應(yīng)時間。</p><p><b>  7、顯示模塊</b></p><p>  

22、8*8點陣上數(shù)字的現(xiàn)實原理:</p><p>  字形0~9與段碼有對應(yīng)關(guān)系,例如數(shù)字5:8fh,89h,89h,0f9h,將數(shù)字0~9的段碼依次放在變量numx中,顯示方法:行選地址-2A0H,紅選地址-2A8H,黃選地址-2B0H,要顯示某一個數(shù)字,對應(yīng)到位選信號00h,04h,08h,0ch,10h,14h,18h,1ch,20h,24h中的一個,映射到段碼變量中就是所要顯示數(shù)字的段碼,依次

23、掃描顯示。</p><p>  顯示模塊的中心思想就是掃描,利用人眼的視覺暫留,看到4列LED燈都亮,顯示相應(yīng)的信息。</p><p>  四. 方案實現(xiàn)與測試</p><p>  現(xiàn)在提交的程序與驗收時的有所不同,驗收時并沒有實現(xiàn)全部功能,如反應(yīng)時間的顯示是通過中斷顯示在屏幕上,算是變相的實現(xiàn)。此后我又完善了一些功能,如點陣顯示,隨機亮紅燈或綠燈?;就瓿闪藢?/p>

24、驗要求。</p><p>  實驗現(xiàn)象:開始時若按“q”,則退出測試;若按其他鍵,重新顯示提示信息,重新開始;若按“1”,測試開始,等待,當有燈亮時,如為紅燈按“2”,為綠燈按“3”,如果按鍵準確,點陣顯示時間,如果按錯,屏幕顯示“wrong!”,“Continue? (Y/N)”。</p><p>  程序編譯無誤后連接實驗箱進行調(diào)試,調(diào)試時首先分別單獨連接點陣,8255,8253進行簡

25、單功能的驗證,驗證無誤保證硬件不會影響到方案的實現(xiàn)。對顯示模塊的調(diào)節(jié)花了比較多的精力,剛開始點陣不顯示,但硬件驗證的時候點陣是沒問題的,所以我先改為屏幕顯示,通過中斷使在運行到某一些關(guān)鍵步驟的時候輸出一定的信息,功能驗證無誤后再連接點陣。其次是delay環(huán)節(jié)的時間,因為數(shù)字的顯示是通過掃描完成的,所以delay時間不能太長也不能太短,通過不斷的調(diào)試終于得到了合適的delay值。</p><p><b>

26、  五.分析與總結(jié)</b></p><p>  通過這四周的課程設(shè)計,我學到了不少也發(fā)現(xiàn)不少問題。很大的一個問題是我沒有很好的利用TD等調(diào)試工具,造成的后果就是不能及時發(fā)現(xiàn)問題出在哪里,所以效率相對較低,如果以后還有類似的課題,我一定要好好利用這些工具。另外隔了一個假期,對有一些基本知識和功能有一些陌生了,所以熟悉這些也花了不少時間,這是以后需要改進的地方。</p><p> 

27、 我從不斷想方案,否定一個再試一個,到完善程序,到不斷調(diào)試出結(jié)果,最后能完成基本功能,我還是比較欣慰的。這和許多實踐類課程一樣,重在實踐,當你寫完程序覺得邏輯功能都很完美的時候,只是走出了一小步,當調(diào)試時會遇到各種各樣意想不到的問題,在不斷改進的過程中才能對理論有更好的把握。</p><p>  對于這次實驗而言,它將原來有些枯燥的基本實驗實例化了,而且需要我們根據(jù)要求把它們有機聯(lián)系在一起,實際設(shè)計了利用微機系統(tǒng)

28、的一些應(yīng)用。同時我了解到微機,乃至以后單片機的一些設(shè)計和應(yīng)用的方法。雖然我沒能把系統(tǒng)功能非常完美的呈現(xiàn),但在這個過程中我從不斷的錯誤中吸取很多教訓,這些對以后的學習時間都是很有幫助的。當然,如果時間更加充裕的話,我相信我的設(shè)計會做的更加完善。</p><p><b>  參考書目:</b></p><p>  東南大學《微機系統(tǒng)與接口》課程組,微機實驗及課程設(shè)計教程(

29、試用版2.0),2009年2月</p><p>  楊素行 等編著,《微型計算機系統(tǒng)原理及應(yīng)用(第2版)》,北京,清華大學出版社,2004年</p><p><b>  附匯編代碼</b></p><p>  PORTEQU0E000H-280H</p><p>  TIM_CTL EQU PORT+283H

30、 ;8253控制寄存器</p><p>  TIMER0 EQU PORT+280H ;計數(shù)器0 1 2</p><p>  TIMER1 EQU PORT+281H</p><p>  TIMER2 EQU PORT+282H</p><p>  CW_TIMER0 EQU 001

31、10000B ;計數(shù)器0控制字,方式0</p><p>  CW_TIMER1 EQU 01110001B ;計數(shù)器1控制字,方式0</p><p>  CW_TIMER2 EQU 10110111B ;計數(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ù)器值</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作隨機數(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>  ; 計數(shù)器1計反應(yīng)時間</p><p>  MOV DX,TIM_CTL</p><p>  MOV A

46、L,CW_TIMER1</p><p>  OUT DX,AL ;計反應(yīng)時間</p><p>  ; 計數(shù)器2產(chǎn)生0.01秒時鐘</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 ;計數(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",測試退出</p><p>  jz quit01</p><p>  mov ah,08h ;等待鍵盤產(chǎn)生“1”</p><p>  int 21h</p><p>  cmp al,'1&#

51、39; ;按"1",測試開始</p><p>  JNZstart1;其他鍵,重新開始</p><p>  CALL RANDOM </p><p>  and bl,01h </p><p>  cmp bh,0 ;隨機數(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 ; 倒計時</p><p>  MOV AL,BL ;bl隨機數(shù)</p><p

54、>  MOV CX,AX ;ax->cx </p><p><b>  LOOP $</b></p><p>  MOV DX,TIMER1 </p><p>  MOV AX,00H ;計數(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 ; 倒計時</p><p>  MOV

58、 AL,BL ; bx隨機數(shù)</p><p>  MOV CX,AX </p><p>  LOOP $ ;"$"操作符表示當前地址,這條指令不斷執(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 ;等待鍵盤輸入“3”</p><p>  int 21h </p><p>  cmp al,'3' </p><p>  MOVAL,00H ;PB0變低,停止計數(shù)</p><p>  MOVDX,P8255B<

62、;/p><p><b>  OUTDX,AL</b></p><p>  jnz wrongmsg;不正確顯示錯誤信息</p><p>  jmp lockk;正確則跳至顯示程序</p><p>  redpress: </p><p>  mov ah,08h ;等待鍵盤輸入

63、“2”</p><p>  int 21h </p><p>  cmp al,'2' </p><p>  MOVAL,00H ;PB0變低,停止計數(shù)</p><p>  MOVDX,P8255B</p><p><b>  OUTDX,AL</b>

64、</p><p>  jnz wrongmsg;不正確顯示錯誤信息</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為計數(shù)后值</p><p>  MOV BX,0</p><p>  SUB BX,AX;相減得到

66、反應(yīng)時間 </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 ;直接控制臺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重新開始</p><p>  jz QUIT00</p><p>  MOV AX,4C00H ;否則返回dos</p><p>  INT 21H</p><p>  wrongmsg: </p

73、><p>  MOV AH,09H ;顯示出錯信息</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;時間顯示形式:xx.xx秒</p><p>  CALLDISP_R;紅色代表秒</p><p>  MOVBL,

75、NUM3;黃色代表0.01秒</p><p>  CALLDISP_R;四個數(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 ;通過要顯示的數(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 ;延時</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、 ;通過要顯示的數(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 ;延時</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)生延時為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. 本站所有資源如無特殊說明,都需要本地電腦安裝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)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論