版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 課程設(shè)計報告</b></p><p> ( 2013—2014 年度第 一 學(xué)期)</p><p> 課 程: 微機原理及應(yīng)用 </p><p> 題 目: 秒表設(shè)計 </p><p> 院 系: 自動化系 </p>
2、<p> 班 級: </p><p> 學(xué) 號: </p><p> 學(xué)生姓名: </p><p> 指導(dǎo)教師: </p><p> 設(shè)計周數(shù): 一周 &l
3、t;/p><p> 成 績: </p><p> 日期:2014年 1 月 10</p><p> 一、課程設(shè)計目的與要求</p><p> 通過對微機系統(tǒng)分析和具體設(shè)計,使學(xué)生加深對所學(xué)課程的理解。</p><p> 掌握匯編語言程序設(shè)計的基本方法和典型接口電路的基本設(shè)
4、計方法。</p><p> 培養(yǎng)學(xué)生分析問題、解決問題的能力。</p><p> 培養(yǎng)學(xué)生對微型計算機應(yīng)用系統(tǒng)的基本設(shè)計能力。</p><p> 提高學(xué)生的實踐動手能力和創(chuàng)新能力</p><p><b> 課程設(shè)計正文</b></p><p><b> ?。ㄒ唬┰O(shè)計題目:<
5、/b></p><p> 秒表設(shè)計:利用實驗箱上的小鍵盤,自定義各按鍵為啟動計時,數(shù)據(jù)清零,停止并顯示。利用六個數(shù)碼管顯示分、秒、毫秒。8253產(chǎn)生10ms定時中斷,在中斷服務(wù)子程序中顯示秒表計時。</p><p> 附加部分:加入記錄功能,可通過按鍵記錄多次時間,然后在停止計時后,通過鍵盤上的0,1,2……等按鍵再把記錄的時間取出并顯示,達到實際秒表的分別計時功能。</p
6、><p> ?。ǘ┛傮w設(shè)計方案:</p><p> 1. 自定義小鍵盤中的三個按鍵分別為啟動鍵、清零鍵、分別計時鍵、停止顯示鍵(我們依次選擇了MON、LAST、NEXT、RES這三個按鍵)。</p><p> 2. 利用8253產(chǎn)生的10ms的方波來觸發(fā)8259產(chǎn)生中斷,對秒表進行增1操作</p><p> 3. 動態(tài)掃描鍵盤,判斷按
7、鍵情況,并利用蜂鳴器模擬按鍵聲音</p><p> 4. 根據(jù)按鍵情況確定要顯示的內(nèi)容, 然后對六位數(shù)碼管進行掃描顯示 </p><p> (三)系統(tǒng)的功能作用:</p><p> 實驗箱啟動后,六位數(shù)碼管全部顯示為0,如果不對鍵盤進行操作將始終保持這個狀態(tài)</p><p><b> 普通計時功能:</b>&l
8、t;/p><p> 按下MON(啟動鍵),數(shù)碼管開始從零開始顯示計時,從左到右依次顯示每兩位之間用八段數(shù)碼管的小數(shù)點了隔開來作為分、秒、毫秒的區(qū)分,按下停止鍵RES,計時結(jié)束,顯示停止時的時間。</p><p><b> 分記功能:</b></p><p> 在計時過程中按下分別計時按鍵NEXT,將按下瞬間的顯示值存儲起來(最多可取16次),
9、再停止計時后,可通過按下0、1、2等按鍵依次讀出第1次、第2次、第3次按鍵時記錄下的時間,并在數(shù)碼管上顯示,達到實際秒表的分別計時功能。</p><p><b> 清零復(fù)位: </b></p><p> 按下清零鍵LAST,六位數(shù)碼管全部顯示為0,實現(xiàn)清零功能。清零后再按下啟動鍵MON,系統(tǒng)將又重新從0開始計時。</p><p>&l
10、t;b> 按鍵同時伴隨音效:</b></p><p> 在按下小鍵盤上的按鍵時,會激活蜂鳴器發(fā)出短暫的聲音,模擬實際秒表中按鍵的聲音</p><p><b> 備注:</b></p><p> 注意最后兩位毫秒表示位實際單位為10ms,所以每加到99后向秒進位再重新從零開始依次增1。</p><p&
11、gt; 秒表計時最長時間為60分鐘,當(dāng)大于這個時間后,數(shù)碼管將又重新從零開始計時。</p><p> 考慮到鍵盤上0——F共十六個鍵,所以我們設(shè)計的系統(tǒng)對分記有次數(shù)限制,最多為16次,超過16次時,計時自動停止,但仍可以讀出存儲下的16個時間。</p><p> ?。ㄋ模┚唧w硬件電路設(shè)計:</p><p> 1.片選地址的設(shè)計:</p><
12、p> 對8086地址線進行鎖存后,利用3-8譯碼器進行譯碼,為匹配實驗箱上的片選地址在電路中我們選擇了A12,A13,A14分別接A,B,C,A15接入高電平使能端E1,這樣Y0就對應(yīng)8000h-8fffh,Y1對應(yīng)9000h-9fffh,依此類推。</p><p><b> 地址線的鎖存:</b></p><p> CPU接線設(shè)計
13、 譯碼器設(shè)計 </p><p><b> 1.8253設(shè)計:</b></p><p> 8253片選信號地址為0C000H ,即8253片選接CS4。</p><p> 分頻器的Fin接4MHz時鐘。8253的GATE1,GATE0接VCC。</p
14、><p> 8253時鐘源CLK0接分頻電路的F/4輸出,8253時鐘源CLK1接分頻電路的F/64輸出。</p><p> 兩個計數(shù)器都工作在方式3下。其中out1產(chǎn)生100Hz方波作為8259的中斷申請信號,上升沿觸發(fā)中斷;out0產(chǎn)生的方波控制蜂鳴器在按鍵時同時響起。</p><p> 8253線路圖與蜂鳴器的接線</p><p>
15、 2.8259中斷設(shè)計:</p><p> 8259片選信號地址為0D000H ,即8253片選接CS5。</p><p> 8259中斷INT0接8253的OUT1,進行中斷申請</p><p> 8259的接線設(shè)計 </p><p> 3. 數(shù)碼管與鍵盤設(shè)計:</p><p> 為簡化接線,直
16、接利用硬件實驗箱中的數(shù)碼管與CPU總線相連的特性(其中8002h為位控制口08004h為段控制口),用8000H做片選信號,即片選接CS0即可控制數(shù)碼管與鍵盤。</p><p> 具體硬件電路接線如下圖:</p><p> 從電路圖中可以看到,數(shù)碼管位控制口8002h,數(shù)碼管段控制口8004h,鍵盤讀入口8001h</p><p> 注:最右側(cè)一列的四個按鍵依
17、次為停止鍵RES,啟動鍵MON,清零鍵LAST,分別計時按鍵NEXT</p><p><b> ?。ㄎ澹┚帉懗绦颍?lt;/b></p><p> 根據(jù)電路設(shè)計,確定端口</p><p> 8259端口為:偶地址端口D000h,奇地址端口D001h</p><p> 8253的端口為:計數(shù)器0 C000h,計數(shù)器1
18、C001,控制寄存器 C003h </p><p> 數(shù)碼管位控制口8002h</p><p> 數(shù)碼管段控制口8004h</p><p> 鍵盤讀入口8001h</p><p> 根據(jù)設(shè)計方案,確定8253的初始化命令</p><p> 計數(shù)器0的控制字00110110 即36h</p>
19、<p> 計數(shù)器1的控制字01110110 即76h</p><p> 計數(shù)器0將會輸出方波控制蜂鳴器</p><p> 計數(shù)器1賦初值625D,這樣就會將1/16MHz(62.5KHz)的方波轉(zhuǎn)換成100Hz的方波輸出,申請中斷。</p><p> 根據(jù)題目要求,確定8259的初始化命令</p><p> ICW1=13
20、H(00010011B);</p><p> ICW2=20H(00100000B);</p><p> ICW4=01H(00000001B);</p><p><b> 中斷向量的裝入</b></p><p> 根據(jù)ICW2=20H(10000000B),則確定 IR0的中斷類型號就是20H,根據(jù)中斷向量等相
21、關(guān)知識,編寫中斷向量裝入的程序段。</p><p><b> 編寫服務(wù)中斷子程序</b></p><p> 中斷子程序中實現(xiàn)對顯示時間的增1操作,每進入一次中斷最末尾數(shù)加一,并判斷是否有向高位的進位。得到正確的時間。</p><p> 編寫鍵盤讀入,數(shù)碼管掃描顯示,延時等程序,合理安排編程順序?qū)⒄麄€程序連接起來。</p>&
22、lt;p><b> (六)程序流程圖:</b></p><p><b> 主程序流程圖</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></
23、p><p><b> Y</b></p><p><b> 無按鍵</b></p><p> 按下分別計時鍵按下清零鍵</p><p><b> 按下停止鍵</b></p><p><b> 按下數(shù)字鍵</b></p
24、><p> 中斷服務(wù)子程序流程圖</p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p>
25、<b> N</b></p><p><b> Y</b></p><p><b> 課程設(shè)計總結(jié)</b></p><p><b> 課設(shè)過程</b></p><p> 為更快更準(zhǔn)的完成課程設(shè)計,我們根據(jù)選擇的設(shè)計題目先分步了解相關(guān)知識,<
26、/p><p> 1.首先對數(shù)碼管的顯示做了了解:</p><p> 為了對數(shù)碼管更熟悉,在protues上自己繪制了相關(guān)電路并編寫程序進行仿真,實現(xiàn)一個六位數(shù)碼管依次循環(huán)顯示0~A的功能</p><p> 2.然后對小鍵盤的讀入做了了解:</p><p> 根據(jù)wave自帶的范例程序,利用硬件電路實現(xiàn)按下按鍵在數(shù)碼管上顯示相應(yīng)的數(shù)據(jù),以此
27、為基礎(chǔ)了解鍵盤掃描讀入的過程。</p><p> 至此所需模塊都所了解后,根據(jù)題設(shè)要求來構(gòu)思并繪制主程序流程圖。跟據(jù)流程圖和前期對數(shù)碼管和小鍵盤做的了解編寫匯編程序,并進行上機調(diào)試</p><p> ?。ǘ┯龅降膯栴}與解決辦法</p><p> 調(diào)試過程中,我們先將任務(wù)分散化分模塊來攻克整個任務(wù)。</p><p> 首先只利用中斷控制
28、數(shù)碼管計時,因為有前一天做的基礎(chǔ),我們很順利實現(xiàn)計時功能,然后考慮加入按鍵讀入部分,問題開始出現(xiàn)</p><p> 由于開始并沒有將按鍵之間的聯(lián)系與銜接處理好,所以在初步的調(diào)試中只有一個啟動鍵實現(xiàn)功能,其他鍵的功能讀出現(xiàn)問題,然后我們花了大概一個小時來仔細討論與編寫功能鍵之間的跳轉(zhuǎn),不斷進行調(diào)試,最終順利實現(xiàn)各鍵的功能。</p><p> 在調(diào)試程序過程中有的條件跳轉(zhuǎn)間隔太長,而條件跳
29、轉(zhuǎn)只能是短轉(zhuǎn)移,所以我們先利用條件轉(zhuǎn)移跳到近出,在通過jmp跳到目的指令處。</p><p> 在調(diào)試過程中發(fā)現(xiàn)數(shù)碼管的顯示亮度與掃描速度之間存在矛盾,顯示的很清晰的時候就會發(fā)現(xiàn)6個數(shù)碼管掃描速度減慢,為依次點亮;而掃描速度變快時清晰度又就會降低。所以為得到一個合適的延時時間調(diào)試了一段時間。</p><p> 加入蜂鳴器模擬按鍵音,花了一定的時間來確定合適的頻率,使得音調(diào)合適沒有雜音。
30、而且調(diào)試延時程序使得發(fā)音的時間長短合適。在延時過后重寫8253控制字,使計數(shù)器復(fù)位,蜂鳴器就不再響了。</p><p> 在所有功能實現(xiàn)后又對程序進行了進一步優(yōu)化,使邏輯更加清晰明了,精簡不必要的語句,比如</p><p> 在我們的系統(tǒng)中只涉及到鍵盤的一列,所以就舍棄了對其他鍵的選中等問題,盡量精簡程序。</p><p> 6. 加入分別計時的功能后,新添加
31、了幾段子程序,子程序的嵌套、調(diào)用等操作增多,由于沒有對寄存值進行壓棧保護,使得各個子程序中使用的寄存器中的值互相影響,出現(xiàn)了數(shù)碼管亂碼現(xiàn)象,經(jīng)過單步運行調(diào)試發(fā)現(xiàn)了原因,對每個子程序用到的寄存器值都先進行壓棧保護,最終順利實現(xiàn)了該功能。</p><p><b> ?。ㄈ┦斋@:</b></p><p> 1. 通過這次程序的制作,使我們對匯編語言的基本知識的使用更加熟
32、練,同時也增加了我們對8253、8259、數(shù)碼管、鍵盤等硬件設(shè)備的進一步認識</p><p> 2. 在課程設(shè)計完成過程中通過和同學(xué)的交流,相互啟發(fā),使得課設(shè)進行的更加有效率,也增加了小組成員的合作的技巧與溝通能力。</p><p> 3. 通過查閱資料也學(xué)到了一些課本上沒有的東西,拓寬了自己的知識面,增加了學(xué)習(xí)匯相互編語言的樂趣。</p><p> 4.由于
33、這次編寫的程序段較為長,所以需要更為嚴(yán)謹(jǐn)?shù)倪壿嫴拍鼙WC程序順利執(zhí)行,而且通過后期對程序的精簡與優(yōu)化,很大程度上提高了我們的程序編寫能力。</p><p> ?。ㄋ模┬牡门c體會 這并不是第一次用匯編語言來設(shè)計一個小程序,經(jīng)過平時實驗經(jīng)驗的積累,使得我們面對題目更加有信心,不論是之前的編程實驗還是protues硬件仿真和實驗箱硬件實驗都給我們打下了良好的基礎(chǔ)。除了涉及到數(shù)碼管和鍵盤的相關(guān)知識較為生疏外,對其
34、他硬件的操作還是游刃有余的。</p><p> 在這次課程設(shè)計中,我真正體會到了合作的重要性,遇到很多問題時,當(dāng)一個人看書查資料不能解決時,跟隊友討論一下,互相啟發(fā),收獲很大,可以使很多問題迎刃而解,而且互相學(xué)到很多東西。 不可否認,本程序仍存在不少缺點和不足,但通過這次課程設(shè)計的確找出了自己在學(xué)習(xí)上的不足,對以后的學(xué)習(xí)工作也有指導(dǎo)作用。相信在以后的學(xué)習(xí)中會克服這些不足,更加熟練掌握匯編語言!<
35、;/p><p><b> 四、參考文獻</b></p><p> [1] 張永祥. 《微型計算機原理》. 中國電力出版社. 2005年8月</p><p> [2] 武新. 《匯編語言程序設(shè)計》. 武漢理工大學(xué)出版社. 2006年7月</p><p> [3] 馬力. 《8086匯編語言程序設(shè)計》. 機械工
36、業(yè)出版社. 2006年9月</p><p> [4] 楊季文. 《匯編語言程序設(shè)計教程》. 清華大學(xué)出版社. 2008年3月</p><p><b> 附錄</b></p><p><b> 源程序:</b></p><p> ; 本實驗利用8253做定時器,用定時器輸出的脈沖控制82
37、59產(chǎn)生中斷</p><p> ; 在8259中斷處理程序中,對分、秒、毫秒進行計數(shù),在等待中斷的循</p><p> ; 環(huán)中用LED顯示時間。</p><p> ; 8253用定時器/計數(shù)器1,8253片選接CS4,地址為0C000H。8253時鐘</p><p> ; 源CLK1接分頻電路的F/64輸出。分頻器的Fin接4MHz
38、時鐘。8253的</p><p> ; GATE1接VCC。</p><p> ; 8259中斷INT0接8253的OUT1,片選接CS5,地址為0D000H。</p><p> ; 顯示電路的KEY/LED CS 接CS0,地址為08000H。</p><p> CONTROL equ 0c003h</p><p
39、> COUNT0 equ 0c000h</p><p> COUNT1 equ 0c001h</p><p> OUTBIT equ 08002h ; 位控制口</p><p> OUTSEG equ 08004h ; 段控制口</p><p> IN_KEY equ 08001h ; 鍵盤讀入口<
40、/p><p> ICW1 equ 00010011b ; 單片8259, 上升沿中斷, 要寫ICW4</p><p> ICW2 equ 00100000b ; 中斷號為20H</p><p> ICW4 equ 00000001b ; 工作在8086/88 方式</p><p> OCW1
41、 equ 11111110b ; 只響應(yīng)INT0 中斷</p><p> CS8259A equ 0d000h ; 8259地址</p><p> CS8259B equ 0d001h</p><p> data segment</p><p> LEDBuf db 6 dup(3fh) ; 顯示緩沖&l
42、t;/p><p> LEDBuf1 db 96 dup(3fh)</p><p> MINUTE db 0</p><p> SECOND db 0</p><p> MS db 0</p><p> LEDMAP: ; 八段管顯示碼</p>&
43、lt;p> db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h</p><p> db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71h</p><p> KeyTable: ; 鍵碼定義</p><p> db 32h, 31h, 30h, 33h
44、</p><p> db 13h, 12h, 11h, 10h</p><p> db 0dh, 0ch, 0bh, 0ah</p><p> db 0eh, 03h, 06h, 09h</p><p> db 0fh, 02h, 05h, 08h</p><p> db 00h
45、, 01h, 04h, 07h</p><p> data ends</p><p> code segment</p><p> assume cs:code, ds:data</p><p> Delay proc near</p><p> push ax ; 延時子程序<
46、/p><p><b> push cx</b></p><p> mov al, 50</p><p> mov cx,ax</p><p><b> loop $</b></p><p><b> pop cx</b></p
47、><p><b> pop ax</b></p><p><b> ret</b></p><p> Delay endp</p><p> delay1 proc near</p><p><b> push cx</b></p&g
48、t;<p> mov cx,6000</p><p><b> loop $</b></p><p><b> pop cx</b></p><p><b> ret</b></p><p> delay1 endp</p>&l
49、t;p> DisplayLED proc near</p><p><b> push bx</b></p><p><b> push cx</b></p><p><b> push ax</b></p><p><b> push dx&
50、lt;/b></p><p> mov cl, 6 ; 共6個八段管</p><p> mov ah, 20h ; 作為選通信號,高電平有效</p><p><b> DLoop:</b></p><p> mov dx, OUTBIT</p><
51、p> mov al, 0</p><p> out dx, al ; 關(guān)所有八段管</p><p> mov al, [bx]</p><p> mov dx, OUTSEG</p><p> out dx, al</p><p> mov dx, OUTBIT&
52、lt;/p><p> mov al, ah</p><p> out dx, al ; 顯示一位八段管</p><p><b> push ax</b></p><p> mov ah, 02h</p><p> call Delay</p><
53、;p><b> pop ax</b></p><p> shr ah, 1</p><p><b> inc bx</b></p><p><b> dec cl</b></p><p> jnz DLoop</p><p
54、> mov dx, OUTBIT</p><p> mov al, 0</p><p> out dx,al ; 關(guān)所有八段管</p><p><b> pop dx</b></p><p><b> pop ax</b></p>&l
55、t;p><b> pop cx</b></p><p><b> pop bx</b></p><p><b> ret</b></p><p> DisplayLED endp</p><p> TestKey proc near</p>
56、<p> mov dx, OUTBIT</p><p> mov al, 0</p><p> out dx, al ; 輸出線置為0</p><p> mov dx, IN_KEY</p><p> in al, dx ; 讀入鍵狀態(tài)</p><p>
57、;<b> not al</b></p><p> and al, 0fh ; 高四位不用</p><p><b> ret</b></p><p> TestKey endp</p><p> GetKey proc near</p><p>
58、 mov ch, 00100000b</p><p> mov cl, 6</p><p><b> KLoop:</b></p><p> mov dx, OUTBIT</p><p> mov al, ch ; 找出鍵所在列</p><p><
59、b> not al</b></p><p> out dx, al</p><p> shr ch, 1</p><p> mov dx, IN_KEY</p><p> in al, dx</p><p><b> not al</b>&l
60、t;/p><p> and al, 0fh</p><p> jne Goon_ ; 該列有鍵入</p><p><b> dec cl</b></p><p> jnz KLoop</p><p> mov cl, 0ffh ; 沒有鍵按下, 返回
61、0ffh</p><p> jmp Exit1</p><p><b> Goon_:</b></p><p><b> dec cl</b></p><p> shl cl, 2 ; 鍵值 = 列 X 4 + 行</p><p> mov
62、 ch, 4</p><p><b> LoopC:</b></p><p> test al, 1</p><p> jnz Exit1</p><p> shr al, 1</p><p><b> inc cl</b></p>&
63、lt;p><b> dec ch</b></p><p> jnz LoopC</p><p><b> Exit1:</b></p><p> mov dx, OUTBIT</p><p> mov al, 0</p><p> out
64、 dx, al</p><p> mov ch, 0</p><p> mov bx, offset KeyTable</p><p> add bx, cx</p><p> mov al, [bx] ; 取出鍵碼</p><p> mov bl, al</p&g
65、t;<p> WaitRelease:</p><p> mov dx, OUTBIT</p><p> mov al, 0</p><p> out dx, al ; 等鍵釋放</p><p> mov ah, 10</p><p> call Del
66、ay</p><p> call TestKey</p><p> jne WaitRelease</p><p> mov al, bl</p><p><b> ret</b></p><p> GetKey endp</p><p> Tone
67、proc near</p><p><b> push ax</b></p><p> mov ax, 1802 ; 查找音頻值</p><p> call OutTone</p><p> call delay1 ; 延時</p><p>
68、 mov dx,CONTROL</p><p> mov al,36h</p><p> out dx,al ; 關(guān)閉發(fā)音</p><p><b> pop ax</b></p><p><b> ret</b></p><p&
69、gt;<b> Tone endp</b></p><p> OutTone proc near</p><p><b> push ax</b></p><p> mov al, 36h ; 計數(shù)器0,二進制,方式3。</p><p> mov dx, CON
70、TROL</p><p> out dx, al</p><p><b> pop ax</b></p><p> mov dx, COUNT0</p><p> out dx, al</p><p> mov al, ah</p><p>
71、 out dx, al</p><p><b> ret</b></p><p> OutTone endp</p><p> IEnter proc near</p><p><b> push ax</b></p><p><b> push
72、 dx</b></p><p><b> inc MS</b></p><p> mov al, MS</p><p> cmp al, 100</p><p> jne Exit</p><p> mov MS, 0</p><p&g
73、t; inc SECOND</p><p> mov al, SECOND</p><p> cmp al, 60</p><p> jne Exit</p><p> mov SECOND,0</p><p> inc MINUTE</p><p> mo
74、v al, MINUTE</p><p> cmp al, 60</p><p> jne Exit</p><p> mov MINUTE, 0</p><p><b> Exit:</b></p><p> mov dx, CS8259A</p>&
75、lt;p> mov al, 20h ; 中斷服務(wù)程序結(jié)束指令</p><p> out dx, al</p><p><b> pop dx</b></p><p><b> pop ax</b></p><p><b> iret</
76、b></p><p> IEnter endp</p><p> IInit proc</p><p> mov dx, CS8259A</p><p> mov al, ICW1</p><p> out dx, al</p><p> mov dx, CS
77、8259B</p><p> mov al, ICW2</p><p> out dx, al</p><p> mov al, ICW4</p><p> out dx, al</p><p> mov al, OCW1</p><p> out dx, a
78、l</p><p><b> ret</b></p><p> IInit endp</p><p> write proc near</p><p><b> push cx</b></p><p><b> push bx</b>&
79、lt;/p><p> mov cx,6</p><p><b> inc bp</b></p><p> mov di,offset LEDBuf</p><p> lop: mov bl,[di]</p><p> mov [si],bl</p>&l
80、t;p><b> inc si</b></p><p><b> inc di</b></p><p><b> loop lop</b></p><p><b> pop bx</b></p><p><b> p
81、op cx</b></p><p><b> ret</b></p><p> write endp</p><p> start proc near</p><p><b> cli</b></p><p> mov ax, 0</
82、p><p> mov ds, ax</p><p> mov al, 76h ; 計數(shù)器1,方式3,二進制</p><p> mov dx, CONTROL</p><p> out dx, al</p><p> mov ax, 625 ; 輸
83、出頻率為100Hz</p><p> mov dx, COUNT1</p><p> out dx, al ; 計數(shù)器低字節(jié)</p><p> mov al, ah</p><p> out dx, al ; 計數(shù)器高字節(jié)</p><p>
84、mov bx,ICW2*4 ; 裝入中斷向量</p><p> mov ax,offset IEnter</p><p> mov [bx],ax</p><p><b> inc bx</b></p><p><b> inc bx</b></p>&
85、lt;p> mov ax,seg IEnter</p><p> mov [bx],ax</p><p> call IInit</p><p> mov ax, data</p><p> mov ds, ax</p><p> mov si,offset LEDBuf1</p&
86、gt;<p> mov bp,0</p><p> LP: mov MINUTE, 0</p><p> mov SECOND, 0</p><p> mov MS, 0</p><p> mov bx, offset LEDBuf</p><p> call Di
87、splayLED</p><p> call TestKey ; 有鍵入?</p><p> je LP ; 無鍵入, 繼續(xù)顯示</p><p> call Tone</p><p> call GetKey ; 讀入鍵碼</p><p&
88、gt; cmp al,30h</p><p><b> je L1</b></p><p><b> jmp LP</b></p><p> L1: mov bx, offset LEDBuf</p><p> call DisplayLED</p&
89、gt;<p> mov al, MINUTE</p><p> mov ah, 0</p><p> mov cl, 10</p><p><b> div cl</b></p><p> mov ch, ah</p><p> mov ah, 0
90、</p><p> mov bx, offset LEDMAP</p><p> add bx, ax</p><p> mov al, [bx]</p><p> mov LEDBuf, al</p><p> mov bx, offset LEDMAP</p><p
91、> mov al, ch</p><p> mov ah, 0</p><p> add bx, ax</p><p> mov al, [bx]</p><p> or al, 80h</p><p> mov LEDBuf+1, al</p><p&g
92、t; mov al, SECOND</p><p> mov ah, 0</p><p> mov cl, 10</p><p><b> div cl</b></p><p> mov ch, ah</p><p> mov ah, 0</p>
93、<p> mov bx, offset LEDMAP</p><p> add bx, ax</p><p> mov al, [bx]</p><p> mov LEDBuf+2, al</p><p> mov bx, offset LEDMAP</p><p> mov
94、 al, ch</p><p> mov ah, 0</p><p> add bx, ax</p><p> mov al, [bx]</p><p> or al, 80h</p><p> mov LEDBuf+3, al </p><p> mov
95、 al, MS</p><p> mov ah, 0</p><p> mov cl, 10</p><p><b> div cl</b></p><p> mov ch, ah</p><p> mov ah, 0</p><p> mo
96、v bx, offset LEDMAP</p><p> add bx, ax</p><p> mov al, [bx]</p><p> mov LEDBuf+4, al</p><p> mov bx, offset LEDMAP</p><p> mov al, ch</
97、p><p> mov ah, 0</p><p> add bx, ax</p><p> mov al, [bx]</p><p> or al, 80h</p><p> mov LEDBuf+5, al</p><p> call TestKey</p
98、><p><b> je L1</b></p><p> call GetKey ; 讀入鍵碼</p><p> L6: cmp al,31h</p><p><b> jne L2</b></p><p> call Ton
99、e</p><p> mov LEDBuf, 3fh ; 顯示清零</p><p> mov LEDBuf+1, 3fh</p><p> mov LEDBuf+2, 3fh</p><p> mov LEDBuf+3, 3fh</p><p> mov LEDBuf+4, 3f
100、h</p><p> mov LEDBuf+5, 3fh</p><p><b> jmp LP</b></p><p> L2: cmp al,32h</p><p><b> jne L3</b></p><p> call Tone&l
101、t;/p><p> cmp bp,16</p><p> jz end1</p><p> call write</p><p> L3: cmp al,30h</p><p><b> jne L4</b></p><p> call
102、Tone</p><p><b> sti</b></p><p> L4: cmp al,33h</p><p><b> jne L5</b></p><p> jmp end1</p><p> L5: jmp L1</p&g
103、t;<p><b> end1:</b></p><p> call Tone</p><p><b> cli</b></p><p> mov bx, offset LEDBuf</p><p> lop1: call DisplayLED</p>
104、<p> call TestKey ; 有鍵入?</p><p> je lop1 ; 無鍵入, 繼續(xù)顯示</p><p> call GetKey ; 讀入鍵碼</p><p> cmp al,0fh</p><p><b>
105、jg L6</b></p><p> call Tone</p><p> mov bx,offset LEDBuf1</p><p> mov ah,0</p><p> shl al,1</p><p> mov ch,al</p><p>
106、shl al,1</p><p> add al,ch</p><p> add bx,ax</p><p> jmp lop1</p><p> start endp</p><p> code ends</p><p><b> end start
溫馨提示
- 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)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理課程設(shè)計報告(電子秒表)
- 微機原理電子秒表課程設(shè)計
- 微機課程設(shè)計--數(shù)字秒表
- 微機課程設(shè)計--電子秒表
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 《微機原理》課程設(shè)計報告
- 微機原理課程設(shè)計報告
- 微機原理課程設(shè)計報告21
- 微機原理課程設(shè)計
- 秒表課程設(shè)計報告
- 課程設(shè)計報告---數(shù)字秒表設(shè)計
- 電子秒表課程設(shè)計報告
- 電子秒表課程設(shè)計報告
- 微機原理與接口技術(shù)課程設(shè)計-數(shù)字式秒表
- 數(shù)字秒表課程設(shè)計報告
- 微機原理課程設(shè)計報告--步進電機設(shè)計
- 微機原理課程設(shè)計.rar
- 2017微機原理課程設(shè)計
評論
0/150
提交評論