2023年全國碩士研究生考試考研英語一試題真題(含答案詳解+作文范文)_第1頁
已閱讀1頁,還剩21頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、<p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  ( 2013—2014 年度第 一 學(xué)期)</p><p>  課 程: 微機(jī)原理及應(yīng)用 </p><p>  題 目: 秒表設(shè)計(jì) </p><p>  院 系: 自動(dòng)化系 </p>

2、<p>  班 級(jí): </p><p>  學(xué) 號(hào): </p><p>  學(xué)生姓名: </p><p>  指導(dǎo)教師: </p><p>  設(shè)計(jì)周數(shù): 一周 &l

3、t;/p><p>  成 績: </p><p>  日期:2014年 1 月 10</p><p>  一、課程設(shè)計(jì)目的與要求</p><p>  通過對(duì)微機(jī)系統(tǒng)分析和具體設(shè)計(jì),使學(xué)生加深對(duì)所學(xué)課程的理解。</p><p>  掌握匯編語言程序設(shè)計(jì)的基本方法和典型接口電路的基本設(shè)

4、計(jì)方法。</p><p>  培養(yǎng)學(xué)生分析問題、解決問題的能力。</p><p>  培養(yǎng)學(xué)生對(duì)微型計(jì)算機(jī)應(yīng)用系統(tǒng)的基本設(shè)計(jì)能力。</p><p>  提高學(xué)生的實(shí)踐動(dòng)手能力和創(chuàng)新能力</p><p><b>  課程設(shè)計(jì)正文</b></p><p><b> ?。ㄒ唬┰O(shè)計(jì)題目:<

5、/b></p><p>  秒表設(shè)計(jì):利用實(shí)驗(yàn)箱上的小鍵盤,自定義各按鍵為啟動(dòng)計(jì)時(shí),數(shù)據(jù)清零,停止并顯示。利用六個(gè)數(shù)碼管顯示分、秒、毫秒。8253產(chǎn)生10ms定時(shí)中斷,在中斷服務(wù)子程序中顯示秒表計(jì)時(shí)。</p><p>  附加部分:加入記錄功能,可通過按鍵記錄多次時(shí)間,然后在停止計(jì)時(shí)后,通過鍵盤上的0,1,2……等按鍵再把記錄的時(shí)間取出并顯示,達(dá)到實(shí)際秒表的分別計(jì)時(shí)功能。</p

6、><p> ?。ǘ┛傮w設(shè)計(jì)方案:</p><p>  1. 自定義小鍵盤中的三個(gè)按鍵分別為啟動(dòng)鍵、清零鍵、分別計(jì)時(shí)鍵、停止顯示鍵(我們依次選擇了MON、LAST、NEXT、RES這三個(gè)按鍵)。</p><p>  2. 利用8253產(chǎn)生的10ms的方波來觸發(fā)8259產(chǎn)生中斷,對(duì)秒表進(jìn)行增1操作</p><p>  3. 動(dòng)態(tài)掃描鍵盤,判斷按

7、鍵情況,并利用蜂鳴器模擬按鍵聲音</p><p>  4. 根據(jù)按鍵情況確定要顯示的內(nèi)容, 然后對(duì)六位數(shù)碼管進(jìn)行掃描顯示 </p><p> ?。ㄈ┫到y(tǒng)的功能作用:</p><p>  實(shí)驗(yàn)箱啟動(dòng)后,六位數(shù)碼管全部顯示為0,如果不對(duì)鍵盤進(jìn)行操作將始終保持這個(gè)狀態(tài)</p><p><b>  普通計(jì)時(shí)功能:</b>&l

8、t;/p><p>  按下MON(啟動(dòng)鍵),數(shù)碼管開始從零開始顯示計(jì)時(shí),從左到右依次顯示每兩位之間用八段數(shù)碼管的小數(shù)點(diǎn)了隔開來作為分、秒、毫秒的區(qū)分,按下停止鍵RES,計(jì)時(shí)結(jié)束,顯示停止時(shí)的時(shí)間。</p><p><b>  分記功能:</b></p><p>  在計(jì)時(shí)過程中按下分別計(jì)時(shí)按鍵NEXT,將按下瞬間的顯示值存儲(chǔ)起來(最多可取16次),

9、再停止計(jì)時(shí)后,可通過按下0、1、2等按鍵依次讀出第1次、第2次、第3次按鍵時(shí)記錄下的時(shí)間,并在數(shù)碼管上顯示,達(dá)到實(shí)際秒表的分別計(jì)時(shí)功能。</p><p><b>  清零復(fù)位: </b></p><p>  按下清零鍵LAST,六位數(shù)碼管全部顯示為0,實(shí)現(xiàn)清零功能。清零后再按下啟動(dòng)鍵MON,系統(tǒng)將又重新從0開始計(jì)時(shí)。</p><p>&l

10、t;b>  按鍵同時(shí)伴隨音效:</b></p><p>  在按下小鍵盤上的按鍵時(shí),會(huì)激活蜂鳴器發(fā)出短暫的聲音,模擬實(shí)際秒表中按鍵的聲音</p><p><b>  備注:</b></p><p>  注意最后兩位毫秒表示位實(shí)際單位為10ms,所以每加到99后向秒進(jìn)位再重新從零開始依次增1。</p><p&

11、gt;  秒表計(jì)時(shí)最長時(shí)間為60分鐘,當(dāng)大于這個(gè)時(shí)間后,數(shù)碼管將又重新從零開始計(jì)時(shí)。</p><p>  考慮到鍵盤上0——F共十六個(gè)鍵,所以我們?cè)O(shè)計(jì)的系統(tǒng)對(duì)分記有次數(shù)限制,最多為16次,超過16次時(shí),計(jì)時(shí)自動(dòng)停止,但仍可以讀出存儲(chǔ)下的16個(gè)時(shí)間。</p><p> ?。ㄋ模┚唧w硬件電路設(shè)計(jì):</p><p>  1.片選地址的設(shè)計(jì):</p><

12、p>  對(duì)8086地址線進(jìn)行鎖存后,利用3-8譯碼器進(jìn)行譯碼,為匹配實(shí)驗(yàn)箱上的片選地址在電路中我們選擇了A12,A13,A14分別接A,B,C,A15接入高電平使能端E1,這樣Y0就對(duì)應(yīng)8000h-8fffh,Y1對(duì)應(yīng)9000h-9fffh,依此類推。</p><p><b>  地址線的鎖存:</b></p><p>  CPU接線設(shè)計(jì)

13、 譯碼器設(shè)計(jì) </p><p><b>  1.8253設(shè)計(jì):</b></p><p>  8253片選信號(hào)地址為0C000H ,即8253片選接CS4。</p><p>  分頻器的Fin接4MHz時(shí)鐘。8253的GATE1,GATE0接VCC。</p

14、><p>  8253時(shí)鐘源CLK0接分頻電路的F/4輸出,8253時(shí)鐘源CLK1接分頻電路的F/64輸出。</p><p>  兩個(gè)計(jì)數(shù)器都工作在方式3下。其中out1產(chǎn)生100Hz方波作為8259的中斷申請(qǐng)信號(hào),上升沿觸發(fā)中斷;out0產(chǎn)生的方波控制蜂鳴器在按鍵時(shí)同時(shí)響起。</p><p>  8253線路圖與蜂鳴器的接線</p><p> 

15、 2.8259中斷設(shè)計(jì):</p><p>  8259片選信號(hào)地址為0D000H ,即8253片選接CS5。</p><p>  8259中斷INT0接8253的OUT1,進(jìn)行中斷申請(qǐng)</p><p>  8259的接線設(shè)計(jì) </p><p>  3. 數(shù)碼管與鍵盤設(shè)計(jì):</p><p>  為簡化接線,直

16、接利用硬件實(shí)驗(yàn)箱中的數(shù)碼管與CPU總線相連的特性(其中8002h為位控制口08004h為段控制口),用8000H做片選信號(hào),即片選接CS0即可控制數(shù)碼管與鍵盤。</p><p>  具體硬件電路接線如下圖:</p><p>  從電路圖中可以看到,數(shù)碼管位控制口8002h,數(shù)碼管段控制口8004h,鍵盤讀入口8001h</p><p>  注:最右側(cè)一列的四個(gè)按鍵依

17、次為停止鍵RES,啟動(dòng)鍵MON,清零鍵LAST,分別計(jì)時(shí)按鍵NEXT</p><p><b>  (五)編寫程序:</b></p><p>  根據(jù)電路設(shè)計(jì),確定端口</p><p>  8259端口為:偶地址端口D000h,奇地址端口D001h</p><p>  8253的端口為:計(jì)數(shù)器0 C000h,計(jì)數(shù)器1

18、C001,控制寄存器 C003h </p><p>  數(shù)碼管位控制口8002h</p><p>  數(shù)碼管段控制口8004h</p><p>  鍵盤讀入口8001h</p><p>  根據(jù)設(shè)計(jì)方案,確定8253的初始化命令</p><p>  計(jì)數(shù)器0的控制字00110110 即36h</p>

19、<p>  計(jì)數(shù)器1的控制字01110110 即76h</p><p>  計(jì)數(shù)器0將會(huì)輸出方波控制蜂鳴器</p><p>  計(jì)數(shù)器1賦初值625D,這樣就會(huì)將1/16MHz(62.5KHz)的方波轉(zhuǎn)換成100Hz的方波輸出,申請(qǐng)中斷。</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的中斷類型號(hào)就是20H,根據(jù)中斷向量等相

21、關(guān)知識(shí),編寫中斷向量裝入的程序段。</p><p><b>  編寫服務(wù)中斷子程序</b></p><p>  中斷子程序中實(shí)現(xiàn)對(duì)顯示時(shí)間的增1操作,每進(jìn)入一次中斷最末尾數(shù)加一,并判斷是否有向高位的進(jìn)位。得到正確的時(shí)間。</p><p>  編寫鍵盤讀入,數(shù)碼管掃描顯示,延時(shí)等程序,合理安排編程順序?qū)⒄麄€(gè)程序連接起來。</p>&

22、lt;p><b> ?。┏绦蛄鞒虉D:</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>  按下分別計(jì)時(shí)鍵按下清零鍵</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è)計(jì)總結(jié)</b></p><p><b>  課設(shè)過程</b></p><p>  為更快更準(zhǔn)的完成課程設(shè)計(jì),我們根據(jù)選擇的設(shè)計(jì)題目先分步了解相關(guān)知識(shí),<

26、/p><p>  1.首先對(duì)數(shù)碼管的顯示做了了解:</p><p>  為了對(duì)數(shù)碼管更熟悉,在protues上自己繪制了相關(guān)電路并編寫程序進(jìn)行仿真,實(shí)現(xiàn)一個(gè)六位數(shù)碼管依次循環(huán)顯示0~A的功能</p><p>  2.然后對(duì)小鍵盤的讀入做了了解:</p><p>  根據(jù)wave自帶的范例程序,利用硬件電路實(shí)現(xiàn)按下按鍵在數(shù)碼管上顯示相應(yīng)的數(shù)據(jù),以此

27、為基礎(chǔ)了解鍵盤掃描讀入的過程。</p><p>  至此所需模塊都所了解后,根據(jù)題設(shè)要求來構(gòu)思并繪制主程序流程圖。跟據(jù)流程圖和前期對(duì)數(shù)碼管和小鍵盤做的了解編寫匯編程序,并進(jìn)行上機(jī)調(diào)試</p><p> ?。ǘ┯龅降膯栴}與解決辦法</p><p>  調(diào)試過程中,我們先將任務(wù)分散化分模塊來攻克整個(gè)任務(wù)。</p><p>  首先只利用中斷控制

28、數(shù)碼管計(jì)時(shí),因?yàn)橛星耙惶熳龅幕A(chǔ),我們很順利實(shí)現(xiàn)計(jì)時(shí)功能,然后考慮加入按鍵讀入部分,問題開始出現(xiàn)</p><p>  由于開始并沒有將按鍵之間的聯(lián)系與銜接處理好,所以在初步的調(diào)試中只有一個(gè)啟動(dòng)鍵實(shí)現(xiàn)功能,其他鍵的功能讀出現(xiàn)問題,然后我們花了大概一個(gè)小時(shí)來仔細(xì)討論與編寫功能鍵之間的跳轉(zhuǎn),不斷進(jìn)行調(diào)試,最終順利實(shí)現(xiàn)各鍵的功能。</p><p>  在調(diào)試程序過程中有的條件跳轉(zhuǎn)間隔太長,而條件跳

29、轉(zhuǎn)只能是短轉(zhuǎn)移,所以我們先利用條件轉(zhuǎn)移跳到近出,在通過jmp跳到目的指令處。</p><p>  在調(diào)試過程中發(fā)現(xiàn)數(shù)碼管的顯示亮度與掃描速度之間存在矛盾,顯示的很清晰的時(shí)候就會(huì)發(fā)現(xiàn)6個(gè)數(shù)碼管掃描速度減慢,為依次點(diǎn)亮;而掃描速度變快時(shí)清晰度又就會(huì)降低。所以為得到一個(gè)合適的延時(shí)時(shí)間調(diào)試了一段時(shí)間。</p><p>  加入蜂鳴器模擬按鍵音,花了一定的時(shí)間來確定合適的頻率,使得音調(diào)合適沒有雜音。

30、而且調(diào)試延時(shí)程序使得發(fā)音的時(shí)間長短合適。在延時(shí)過后重寫8253控制字,使計(jì)數(shù)器復(fù)位,蜂鳴器就不再響了。</p><p>  在所有功能實(shí)現(xiàn)后又對(duì)程序進(jìn)行了進(jìn)一步優(yōu)化,使邏輯更加清晰明了,精簡不必要的語句,比如</p><p>  在我們的系統(tǒng)中只涉及到鍵盤的一列,所以就舍棄了對(duì)其他鍵的選中等問題,盡量精簡程序。</p><p>  6. 加入分別計(jì)時(shí)的功能后,新添加

31、了幾段子程序,子程序的嵌套、調(diào)用等操作增多,由于沒有對(duì)寄存值進(jìn)行壓棧保護(hù),使得各個(gè)子程序中使用的寄存器中的值互相影響,出現(xiàn)了數(shù)碼管亂碼現(xiàn)象,經(jīng)過單步運(yùn)行調(diào)試發(fā)現(xiàn)了原因,對(duì)每個(gè)子程序用到的寄存器值都先進(jìn)行壓棧保護(hù),最終順利實(shí)現(xiàn)了該功能。</p><p><b>  (三)收獲:</b></p><p>  1. 通過這次程序的制作,使我們對(duì)匯編語言的基本知識(shí)的使用更加熟

32、練,同時(shí)也增加了我們對(duì)8253、8259、數(shù)碼管、鍵盤等硬件設(shè)備的進(jìn)一步認(rèn)識(shí)</p><p>  2. 在課程設(shè)計(jì)完成過程中通過和同學(xué)的交流,相互啟發(fā),使得課設(shè)進(jìn)行的更加有效率,也增加了小組成員的合作的技巧與溝通能力。</p><p>  3. 通過查閱資料也學(xué)到了一些課本上沒有的東西,拓寬了自己的知識(shí)面,增加了學(xué)習(xí)匯相互編語言的樂趣。</p><p>  4.由于

33、這次編寫的程序段較為長,所以需要更為嚴(yán)謹(jǐn)?shù)倪壿嫴拍鼙WC程序順利執(zhí)行,而且通過后期對(duì)程序的精簡與優(yōu)化,很大程度上提高了我們的程序編寫能力。</p><p> ?。ㄋ模┬牡门c體會(huì) 這并不是第一次用匯編語言來設(shè)計(jì)一個(gè)小程序,經(jīng)過平時(shí)實(shí)驗(yàn)經(jīng)驗(yàn)的積累,使得我們面對(duì)題目更加有信心,不論是之前的編程實(shí)驗(yàn)還是protues硬件仿真和實(shí)驗(yàn)箱硬件實(shí)驗(yàn)都給我們打下了良好的基礎(chǔ)。除了涉及到數(shù)碼管和鍵盤的相關(guān)知識(shí)較為生疏外,對(duì)其

34、他硬件的操作還是游刃有余的。</p><p>  在這次課程設(shè)計(jì)中,我真正體會(huì)到了合作的重要性,遇到很多問題時(shí),當(dāng)一個(gè)人看書查資料不能解決時(shí),跟隊(duì)友討論一下,互相啟發(fā),收獲很大,可以使很多問題迎刃而解,而且互相學(xué)到很多東西。 不可否認(rèn),本程序仍存在不少缺點(diǎn)和不足,但通過這次課程設(shè)計(jì)的確找出了自己在學(xué)習(xí)上的不足,對(duì)以后的學(xué)習(xí)工作也有指導(dǎo)作用。相信在以后的學(xué)習(xí)中會(huì)克服這些不足,更加熟練掌握匯編語言!<

35、;/p><p><b>  四、參考文獻(xiàn)</b></p><p>  [1] 張永祥. 《微型計(jì)算機(jī)原理》. 中國電力出版社. 2005年8月</p><p>  [2] 武新. 《匯編語言程序設(shè)計(jì)》. 武漢理工大學(xué)出版社. 2006年7月</p><p>  [3] 馬力. 《8086匯編語言程序設(shè)計(jì)》. 機(jī)械工

36、業(yè)出版社. 2006年9月</p><p>  [4] 楊季文. 《匯編語言程序設(shè)計(jì)教程》. 清華大學(xué)出版社. 2008年3月</p><p><b>  附錄</b></p><p><b>  源程序:</b></p><p>  ; 本實(shí)驗(yàn)利用8253做定時(shí)器,用定時(shí)器輸出的脈沖控制82

37、59產(chǎn)生中斷</p><p>  ; 在8259中斷處理程序中,對(duì)分、秒、毫秒進(jìn)行計(jì)數(shù),在等待中斷的循</p><p>  ; 環(huán)中用LED顯示時(shí)間。</p><p>  ; 8253用定時(shí)器/計(jì)數(shù)器1,8253片選接CS4,地址為0C000H。8253時(shí)鐘</p><p>  ; 源CLK1接分頻電路的F/64輸出。分頻器的Fin接4MHz

38、時(shí)鐘。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 ; 中斷號(hào)為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 ; 延時(shí)子程序<

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個(gè)八段管</p><p>  mov ah, 20h ; 作為選通信號(hào),高電平有效</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 ; 延時(shí)</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 ; 計(jì)數(shù)器0,二進(jìn)制,方式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 ; 計(jì)數(shù)器1,方式3,二進(jìn)制</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 ; 計(jì)數(shù)器低字節(jié)</p><p>  mov al, ah</p><p>  out dx, al ; 計(jì)數(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等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 眾賞文庫僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論