微機(jī)接口課程設(shè)計(jì)報(bào)告--數(shù)字鐘實(shí)驗(yàn)_第1頁(yè)
已閱讀1頁(yè),還剩24頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  微機(jī)接口課程</b></p><p><b>  設(shè)計(jì)報(bào)告</b></p><p>  2011 年 1 月 13 日</p><p> 課題名稱(chēng)數(shù)字鐘實(shí)驗(yàn)</p><p> 班 級(jí)</p><p> 學(xué) 號(hào)</p>

2、<p> 學(xué)生姓名</p><p><b>  摘要</b></p><p>  數(shù)字鐘實(shí)驗(yàn)的目的是熟悉8255A、8253、8259等I/O接口的編程技術(shù),掌握鍵盤(pán)掃描和LED動(dòng)態(tài)顯示的工作原理。此實(shí)驗(yàn)是制作一個(gè)時(shí)間顯示系統(tǒng)。能實(shí)現(xiàn)C鍵清除,G鍵啟動(dòng),D鍵停止,E鍵終止程序及P鍵設(shè)置初始值等基本功能。</p><p>  關(guān)鍵詞:

3、數(shù)字鐘、LED、時(shí)間顯示系統(tǒng)</p><p><b>  Abstract</b></p><p>  The purpose of this digital clock experiment is having intimate knowledge of the programming technology of the I/O interface of the 8

4、255A、8253、8259 and so on.It could accomplish such function as clear of the “c” key, start of the “g” key , stop of the “d” key, end of the “e” key and set up the initial value of the “p” key.</p><p>  Keywo

5、rds: the digital clock , LED , the system of the time indication</p><p><b>  目錄</b></p><p>  第一章 設(shè)計(jì)要求1</p><p>  第二章 設(shè)計(jì)所用芯片1</p><p>  第三章 設(shè)計(jì)思想1</p>

6、<p>  3.1 設(shè)計(jì)思想1</p><p>  3.2 設(shè)計(jì)原理2</p><p>  第四章 設(shè)計(jì)所用芯片結(jié)構(gòu)2</p><p>  4.1 8255A芯片的內(nèi)部結(jié)構(gòu)及引腳2</p><p>  4.2 8253芯片的內(nèi)部結(jié)構(gòu)及引腳3</p><p>  4.2.1 8253功能用途3&l

7、t;/p><p>  4.2.2 8253的工作方式4</p><p>  4.2.3 8253引腳功能4</p><p>  4.2.4 8253端口地址4</p><p>  4.3 8259芯片的內(nèi)部結(jié)構(gòu)及引腳5</p><p>  第五章 系統(tǒng)各個(gè)模塊設(shè)計(jì)6</p><p>  5

8、.1 系統(tǒng)總體設(shè)計(jì)6</p><p>  5.2 定時(shí)模塊6</p><p>  5.3 中斷處理模塊7</p><p>  5.4 顯示模塊和小鍵盤(pán)模塊8</p><p>  第六章 系統(tǒng)框圖10</p><p><b>  參考流程10</b></p><p&g

9、t;<b>  致謝11</b></p><p><b>  參考文獻(xiàn)12</b></p><p><b>  附錄13</b></p><p>  附錄一:總體原理圖13</p><p>  附錄二:源代碼14</p><p><b&g

10、t;  第一章 設(shè)計(jì)要求</b></p><p>  利用試驗(yàn)平臺(tái)提供的硬件資源設(shè)計(jì)一個(gè)數(shù)字鐘。該數(shù)字鐘以分、秒的形式實(shí)時(shí)顯示當(dāng)前時(shí)間,且具有校表功能,利用小鍵盤(pán)與標(biāo)準(zhǔn)時(shí)間校準(zhǔn)。</p><p>  掌握8255A、8253、8259芯片使用方法和編程方法,通過(guò)本次課程設(shè)計(jì),學(xué)以致用,進(jìn)一步理解所學(xué)的相關(guān)芯片的原理、內(nèi)部結(jié)構(gòu)、使用方法等,學(xué)會(huì)相關(guān)芯片實(shí)際應(yīng)用及編程,系統(tǒng)中采用8

11、088微處理器完成了數(shù)字鐘的小系統(tǒng)的獨(dú)立設(shè)計(jì)。同時(shí)并了解綜合問(wèn)題的程序設(shè)計(jì)掌握實(shí)時(shí)處理程序的編制和調(diào)試方法,掌握一般的設(shè)計(jì)步驟和流程。</p><p>  第二章 設(shè)計(jì)所用芯片</p><p>  8255A:可編程通用并行接口芯片,可作為單片機(jī)與各種外部設(shè)備連接的接口電路。</p><p>  8253定時(shí)器:用于產(chǎn)生秒脈沖,其輸出信號(hào)可作為中斷請(qǐng)求信號(hào)送IRQ2

12、。</p><p>  8259中斷控制器:用于產(chǎn)生中斷</p><p>  LED:四個(gè)LED用于顯示分:秒值。</p><p>  小鍵盤(pán):用于控制設(shè)置。</p><p><b>  第三章 設(shè)計(jì)思想</b></p><p><b>  3.1 設(shè)計(jì)思想</b></

13、p><p>  本系統(tǒng)設(shè)計(jì)的數(shù)字鐘以8088微處理器作為CPU,用8253做定時(shí)計(jì)數(shù)器產(chǎn)生時(shí)鐘頻率,8255A做可編程并行接口顯示時(shí)鐘和鍵盤(pán)電路,8259做中斷控制器產(chǎn)生中斷。在此系統(tǒng)中,8253的功能是定時(shí),接入8253的CLK信號(hào)為周期性時(shí)鐘信號(hào)。8253采用計(jì)數(shù)器0,工作于方式2,使8253的OUT0端輸出周期性的負(fù)脈沖信號(hào)。即每隔20ms,8253的OUT0端就會(huì)輸出一個(gè)負(fù)脈沖的信號(hào),此信號(hào)接8259的IR2

14、,當(dāng)中斷到50次后,CPU即處理,使液晶顯示器上的時(shí)間發(fā)生變化。</p><p>  其中8259只需初始化ICW1,其功能是向8259表明IRx輸入是電平觸發(fā)方式還是上升沿觸發(fā)方式,是單片8259還是多片8259。8259接收到信號(hào)后,產(chǎn)生中斷信號(hào)送CPU處理。</p><p><b>  3.2 設(shè)計(jì)原理</b></p><p>  利用定

15、時(shí)器8253和8259以及鍵盤(pán)和數(shù)碼顯示電路,設(shè)計(jì)一個(gè)數(shù)字鐘,由8253中斷定時(shí),小鍵盤(pán)控制數(shù)字鐘的啟停及初始值的設(shè)置。</p><p>  數(shù)字鐘的顯示格式MM:SS由左到右分別為分、秒,最大計(jì)時(shí)為59:59起過(guò)這個(gè)時(shí)間分秒位都清零從00:00重新開(kāi)始。</p><p>  設(shè)計(jì)一個(gè)定時(shí)顯示裝置,用4個(gè)數(shù)碼管顯示時(shí)間,用小鍵盤(pán)控制計(jì)時(shí),設(shè)置和顯示時(shí)間,系統(tǒng)一運(yùn)行就從00分00秒開(kāi)始計(jì)時(shí),

16、并在數(shù)碼管上顯示分、秒當(dāng)前值,而且可以用小鍵盤(pán)設(shè)置當(dāng)前時(shí)間。</p><p>  基本工作原理:每百分之一秒對(duì)百分之一秒寄存器的內(nèi)容加一,并依次對(duì)秒、分寄存器的內(nèi)容加一;4個(gè)數(shù)碼管動(dòng)態(tài)顯示分、秒的當(dāng)前值。</p><p>  C鍵:清零,顯示初值;</p><p>  G鍵:?jiǎn)?dòng),顯示XXXX變化的時(shí)間;</p><p>  D鍵:停止,顯示

17、XXXX不變;</p><p>  E鍵:終止程序,熄滅數(shù)碼管,程序退出;</p><p>  P鍵:設(shè)置初始值,設(shè)置初值</p><p>  第四章 設(shè)計(jì)所用芯片結(jié)構(gòu)</p><p>  4.1 8255A芯片的內(nèi)部結(jié)構(gòu)及引腳</p><p>  8255A是Intel公司研制的通用可編程并行接口芯片。</p&

18、gt;<p>  鍵盤(pán)部分提供一種掃描的工作方式,可以和具有16個(gè)按鍵的矩陣鍵盤(pán)相連接,能對(duì)鍵盤(pán)不斷掃描,自動(dòng)消抖。</p><p>  顯示部分為發(fā)光二極管、熒光管及其它顯示器提供了按掃描方式工作的顯示接口,它為顯示器提供多路復(fù)用信號(hào)。</p><p>  CS:片選信號(hào),低電平有效,8255A才能和CPU交換信息。</p><p>  RD:讀控制

19、信號(hào),低電平胡效,8255A向CPU傳送數(shù)據(jù)或狀態(tài)信息。</p><p>  WR:寫(xiě)控制信號(hào),低電平有效,8255A接收CPU寫(xiě)入的數(shù)據(jù)或控制字。</p><p>  RESET:復(fù)位信號(hào),高電平有效,所有內(nèi)部寄存器的內(nèi)容都被清除,端口PA、PB、PC都被置成輸入方式。</p><p>  A1、A0:端口選擇線(xiàn),8255A中內(nèi)部共占用4個(gè)端口地址,它們是PA、P

20、B、PC3個(gè)數(shù)據(jù)端口,以及1個(gè)控制寄存器端口,這4個(gè)口用A1、A0的狀態(tài)組合來(lái)進(jìn)行選擇。通常將這兩個(gè)引腳接到地址總線(xiàn)的最低位上,使8255A占用的4個(gè)端口地址是連續(xù)的。</p><p>  4.2 8253芯片的內(nèi)部結(jié)構(gòu)及引腳</p><p>  8253可編程定時(shí)/計(jì)數(shù)器是Intel公司生產(chǎn)的通用外圍芯片之一,有3個(gè)獨(dú)立的十六位計(jì)數(shù)器,技術(shù)頻率范圍為0~2MHZ,它所有的技術(shù)方式和操作方

21、式都通過(guò)編程控制。</p><p>  4.2.1 8253功能用途</p><p>  8253的功能用途是:</p><p><b> ?。?)延時(shí)中斷</b></p><p> ?。?)可編程頻率發(fā)生器</p><p><b>  (3)事件計(jì)數(shù)器</b></p&

22、gt;<p><b>  (4)二進(jìn)倍頻器</b></p><p><b> ?。?)實(shí)時(shí)時(shí)鐘</b></p><p><b>  (6)數(shù)字單穩(wěn)</b></p><p> ?。?)復(fù)雜的電機(jī)控制器</p><p>  4.2.2 8253的工作方式</p&

23、gt;<p>  8253有六種工作方式:</p><p> ?。?)方式0:計(jì)數(shù)結(jié)束中斷</p><p> ?。?)方式1:可編程頻率發(fā)生器</p><p> ?。?)方式2:頻率發(fā)生器</p><p>  (4)方式3:方波頻率發(fā)生器</p><p> ?。?)方式4:軟件觸發(fā)的選通信號(hào)</p&

24、gt;<p>  (6)方式5:硬件觸發(fā)的選通信號(hào)</p><p>  4.2.3 8253引腳功能</p><p>  8253引腳圖如圖所示,各引腳功能如下。</p><p>  D7~D0——八條雙向數(shù)據(jù)線(xiàn);</p><p>  WR(低電平有效)——寫(xiě)輸入信號(hào);</p><p>  RD(低電平有

25、效)——讀輸入信號(hào);</p><p>  CS(低電平有效)——片選輸入信號(hào);</p><p>  A0、A1——片內(nèi)寄存器地址輸入信號(hào);</p><p>  CLK——計(jì)數(shù)輸入,用于輸入定時(shí)基準(zhǔn)脈沖或計(jì)數(shù)脈沖;</p><p>  OUT——輸出信號(hào),以相應(yīng)的電平指示計(jì)數(shù)的完成,或輸出脈沖波形;</p><p>  

26、GATE——選通輸入(門(mén)控輸入),用于啟動(dòng)或禁止計(jì)數(shù)器的操作,以使計(jì)數(shù)器和計(jì)測(cè)對(duì)象同步。</p><p>  4.2.4 8253端口地址</p><p>  4.3 8259芯片的內(nèi)部結(jié)構(gòu)及引腳</p><p>  中斷控制器8259A是Intel公司專(zhuān)為控制優(yōu)先級(jí)中斷而設(shè)計(jì)開(kāi)發(fā)的芯片。它將中斷源優(yōu)先排隊(duì)、辨別中斷源以及提供中斷矢量的電路集中于一片中。因此無(wú)需附加

27、任何電路,只需對(duì)8259A編程,就可以管理8級(jí)中斷,并選擇優(yōu)先模式和中斷請(qǐng)求方式,即中斷結(jié)構(gòu)可以由用戶(hù)編程來(lái)設(shè)定。在MD微機(jī)系統(tǒng)中,8259芯片工作于單片方式。</p><p>  8259引腳圖如圖3.3,各引腳功能如下。</p><p>  D7~D0——八條雙向數(shù)據(jù)線(xiàn);</p><p>  WR(低電平有效)——寫(xiě)輸入信號(hào);</p><p&

28、gt;  RD(低電平有效)——讀輸入信號(hào);</p><p>  CS(低電平有效)——片選輸入信號(hào);</p><p><b>  A0——地址信號(hào);</b></p><p>  INT——中斷請(qǐng)求信號(hào);</p><p>  INTA(低電平有效)——中斷響應(yīng)信號(hào);</p><p>  CAS0~

29、CAS2——級(jí)聯(lián)信號(hào),形成一條專(zhuān)用8259A總線(xiàn),以便多片8259A的級(jí)聯(lián);</p><p>  SP/EN——從編程/允許級(jí)聯(lián)。在緩沖方式中,可用做輸出信號(hào)以控制總線(xiàn)緩沖器的接收和發(fā)送。在非緩沖方式中,作為輸入信號(hào)用于表示主片還是從片;</p><p>  IR0~IR7——外部中斷請(qǐng)求輸入線(xiàn)。要求輸入的中斷請(qǐng)求信號(hào)是由低電平到高電平的上升沿(并保持高電平到CPU響應(yīng)時(shí)為止)或者是高電平

30、。</p><p>  8259中斷矢量地址與中斷信號(hào)之間的關(guān)系如表所示:</p><p>  第五章 系統(tǒng)各個(gè)模塊設(shè)計(jì)</p><p>  5.1 系統(tǒng)總體設(shè)計(jì)</p><p>  本系統(tǒng)設(shè)計(jì)的數(shù)字鐘以8088微處理器作為CPU,用8253做定時(shí)計(jì)數(shù)器產(chǎn)生時(shí)鐘頻率,8255A做可編程并行接口顯示時(shí)鐘和鍵盤(pán)電路,8259做中斷控制器產(chǎn)生中斷。

31、在此系統(tǒng)中,8253的功能是定時(shí),接入8253的CLK信號(hào)為周期性時(shí)鐘信號(hào)。8253采用計(jì)數(shù)器0,工作于方式2,使8253的OUT0端輸出周期性的負(fù)脈沖信號(hào)。即每隔20ms,8253的OUT0端就會(huì)輸出一個(gè)負(fù)脈沖的信號(hào),此信號(hào)接8259的IR2,當(dāng)中斷到50次數(shù)后,CPU即處理,使液晶顯示器上的時(shí)間發(fā)生變化。程序由以下模塊組成:系統(tǒng)共有5個(gè)功能模塊,分別為,主控模塊,顯示模塊,定時(shí)模塊,中斷模塊,小鍵盤(pán)模塊。</p>&l

32、t;p><b>  5.2 定時(shí)模塊</b></p><p>  定時(shí)模塊是為8259提供中斷請(qǐng)求信號(hào)的。由一片8253實(shí)現(xiàn),選用定時(shí)器0#,工作在方式3,由于時(shí)鐘應(yīng)該1秒走動(dòng)一次,所以輸出值應(yīng)為1S,其輸出信號(hào)可作為8259的中斷請(qǐng)求信號(hào)。</p><p><b>  定時(shí)模塊原理圖</b></p><p>  5

33、.3 中斷處理模塊</p><p>  中斷模塊實(shí)現(xiàn)動(dòng)態(tài)顯示的,硬件為一片8259,由于中斷請(qǐng)求信號(hào)為每秒一次,中斷程序該為時(shí)間按秒增加,并顯示,只要開(kāi)中斷,便可實(shí)現(xiàn)每秒顯示時(shí)間增加一秒,從而達(dá)到動(dòng)態(tài)顯示的效果。</p><p><b>  中斷模塊原理圖</b></p><p>  5.4 顯示模塊和小鍵盤(pán)模塊</p><

34、p>  顯示模塊是將顯示緩沖區(qū)的數(shù)值送到LED顯示的功能模塊,顯示緩沖區(qū)是由六個(gè)字節(jié)構(gòu)成,分別保存小時(shí)的高位和低位,分鐘的高位和低位,秒鐘的高位和低位。硬件上由六個(gè)LED構(gòu)成,軟件上由掃描顯示的方法實(shí)現(xiàn)。</p><p>  小鍵盤(pán)模塊送入主控模塊的子功能模塊。由軟件和硬件實(shí)現(xiàn),硬件上由小鍵盤(pán)和8255A互連,將小鍵值由8255A送入主控模塊。軟件上使用行掃描法獲得鍵值并送回主控模塊。本課題只考慮去抖動(dòng)。執(zhí)

35、行一個(gè)約10ms的延時(shí)程序后再掃描鍵盤(pán),若F0=1表示真正有鍵按下,從而消除了抖動(dòng)影響。</p><p><b>  顯示模塊原理圖</b></p><p><b>  鍵盤(pán)部分原理圖:</b></p><p><b>  第六章 系統(tǒng)框圖</b></p><p><b&

36、gt;  參考流程</b></p><p><b>  致謝</b></p><p>  通過(guò)本次課程設(shè)計(jì),我對(duì)利用微機(jī)原理課程所學(xué)的知識(shí)設(shè)計(jì)電子表的基本過(guò)程的設(shè)計(jì)方法、步驟、思路、有一定的了解與認(rèn)識(shí)。它相當(dāng)于實(shí)際工業(yè)設(shè)計(jì)的模擬。在課程設(shè)計(jì)過(guò)程中,我先是收集、調(diào)查有關(guān)資料,然后進(jìn)入草案階段。設(shè)計(jì)方案確定后,又在老師指導(dǎo)下進(jìn)行擴(kuò)初詳細(xì)設(shè)計(jì),并分別設(shè)計(jì)了相應(yīng)的

37、模塊;將這些模塊組合起來(lái),便形成了一個(gè)完整的數(shù)字鐘的設(shè)計(jì)。</p><p>  這門(mén)課周老師上的特別好,而且對(duì)我們要求很?chē)?yán),這樣才是一位好的老師,因?yàn)閷?duì)我們比較負(fù)責(zé)。我們才能真正的學(xué)到東西。在這里要感謝周老師,是她教會(huì)我們?nèi)绾稳W(xué)習(xí),上了大學(xué)以后老師都不怎么管了,很多同學(xué)根本就不學(xué)習(xí)了,整天抄作業(yè)。這樣下去到了畢業(yè)那天都會(huì)后悔的。</p><p>  通過(guò)學(xué)期末的課程設(shè)計(jì)對(duì)自己的幫助很大,

38、感覺(jué)自己就是一位小的工程師一樣,能設(shè)計(jì)東西出來(lái)了,很有成就感。短短的兩周課程設(shè)計(jì)就使自己學(xué)會(huì)了一種思想,通過(guò)這為期兩個(gè)多月的實(shí)驗(yàn)課程的實(shí)踐體會(huì)我收獲了不少,在剛開(kāi)始做實(shí)驗(yàn)時(shí)我真的一點(diǎn)都摸不著頭緒,第一次實(shí)驗(yàn)給我的啟發(fā)也比較深,使我明白了預(yù)習(xí)的重要性,做好預(yù)習(xí)在實(shí)驗(yàn)室里就會(huì)很輕松,如果沒(méi)有預(yù)習(xí)的話(huà)在實(shí)驗(yàn)課上就會(huì)遇到很多問(wèn)題的,可能還不能明白。但通過(guò)這段時(shí)間的學(xué)習(xí)和實(shí)驗(yàn)課中也充分暴露出我對(duì)這門(mén)課的學(xué)習(xí)和掌握情況不是太好!每次實(shí)驗(yàn)都不能進(jìn)行順

39、利的寫(xiě)出和分析程序的原因之所在。用一句話(huà)講:不是自己學(xué)不會(huì)而是自己下的功夫不到吧!針對(duì)以上這些情況,在這段時(shí)間我一定加倍努力把微機(jī)原理學(xué)好,不僅僅是為了考試,更重要的是為將來(lái)的工作增加自己的競(jìng)爭(zhēng)力。</p><p>  俗話(huà)說(shuō):“難者不會(huì),會(huì)者不難?!逼鋵?shí)學(xué)好一門(mén)課并不難,關(guān)鍵看自己有沒(méi)有理解,如果理解的話(huà)很多問(wèn)題都迎刃而解了,當(dāng)然理解也要下工夫才行。學(xué)習(xí)這門(mén)課更需要理解,如果對(duì)這門(mén)課理解學(xué)起來(lái)會(huì)很輕松,如果沒(méi)有

40、理解的話(huà),那是寸步難行啊,我相信自己最終對(duì)這門(mén)課會(huì)理解的!</p><p>  經(jīng)過(guò)這次成功的設(shè)計(jì),我更加深刻的理解了微機(jī)原理的相關(guān)知識(shí)。對(duì)一些常用芯片有了更深一步的認(rèn)識(shí),并且能夠很好的使用它們。應(yīng)該說(shuō),這次課程設(shè)計(jì)達(dá)到了目的。 </p><p><b>  參考文獻(xiàn)</b></p><p>  韓雁.《現(xiàn)代微機(jī)原理與接口技術(shù)》.北京:電子工業(yè)

41、出版社,2010.8</p><p>  楊立新.《微型計(jì)算機(jī)原理和應(yīng)用》.北京:科學(xué)技術(shù)文獻(xiàn)出版社,1986.11</p><p>  眭碧霞.《微型計(jì)算機(jī)原理與組成》.人民郵電出版社,2003.8</p><p>  李大友.《微型計(jì)算機(jī)原理》.北京:清華大學(xué)出版社,1998.7</p><p>  李順增,吳國(guó)東,趙河明等.《微機(jī)原理及

42、接口技術(shù)》.北京:機(jī)械工業(yè)出版社,2006</p><p>  周明德.《微型計(jì)算機(jī)系統(tǒng)原理及應(yīng)用》.北京:清華大學(xué)出版社,2002</p><p><b>  附錄</b></p><p><b>  附錄一:總體原理圖</b></p><p><b>  附錄二:源代碼</b&g

43、t;</p><p>  inttype equ 08h</p><p>  p8253ctrl equ 43h</p><p>  p8253cto equ 40h</p><p>  cnto equ 11930</p><p>  .model small</p><p><b>

44、;  .data</b></p><p>  buff db 0,0,0,0</p><p><b>  bit db 1</b></p><p><b>  k db 0</b></p><p><b>  flag db 0</b></p><

45、;p>  dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h ;共陽(yáng)段碼</p><p>  mess db 0dh,0ah,"this is A 8259 inTERUPT$"</p><p>  ASCTAB db "0123456789cgdepr" </p>&

46、lt;p>  buf db 32 dup(0) </p><p>  count db 0</p><p><b>  time db 0</b></p><p><b>  .code</b></p><p><b>  .startup</b></p>

47、<p>  mov al,36h</p><p>  mov dx,p8253ctrl </p><p><b>  out dx,al</b></p><p>  mov ax,cnto</p><p>  mov dx,p8253cto</p><p><b>  out

48、 dx,al</b></p><p><b>  mov al,ah</b></p><p><b>  out dx,al</b></p><p>  mov dx,0c803h;寫(xiě)方式字,A口工作方式口輸出</p><p>  mov al,10000001b;

49、PB口為輸出(行),PC口為工作于輸入</p><p><b>  out dx,al</b></p><p>  mov al,inttype</p><p>  mov ah,35h</p><p><b>  int 21h</b></p><p><b> 

50、 push es</b></p><p><b>  push bx</b></p><p>  mov dx,offset intp;把用戶(hù)定義的8號(hào)中斷寫(xiě)入</p><p>  mov cx,seg intp</p><p><b>  push ds</b></p&

51、gt;<p><b>  mov ds,cx</b></p><p>  mov al,inttype</p><p>  mov ah,25h</p><p><b>  int 21h</b></p><p><b>  pop ds</b></p>

52、;<p><b>  in al,21h</b></p><p>  and al,11111110b</p><p>  out 21h,al</p><p><b>  sti</b></p><p>  ab:call key</p><p>  cmp

53、 k,"r" ;按R鍵終止程序</p><p><b>  jnz abg</b></p><p><b>  cli</b></p><p><b>  pop dx</b></p><p><b>

54、  pop ds</b></p><p>  mov al,inttype</p><p>  mov ah,25h</p><p><b>  int 21h</b></p><p><b>  .exit 0</b></p><p><b>  ab

55、g: </b></p><p>  cmp k,"g" ;按g鍵開(kāi)始</p><p><b>  jnz abd</b></p><p>  or flag ,00000101b </p><p><b>  jmp ab<

56、;/b></p><p><b>  abd:</b></p><p>  cmp k,"d" ;按D鍵停止</p><p><b>  jnz abc</b></p><p>  and flag ,00000010b&l

57、t;/p><p><b>  jmp ab</b></p><p><b>  abc:</b></p><p>  cmp k,"c" ;按C鍵清0</p><p><b>  jnz abp</b><

58、/p><p>  and flag,00000000b</p><p>  mov buff,0</p><p>  mov buff+1,0</p><p>  mov buff+2,0</p><p>  mov buff+3,0</p><p><b>  jmp ab</b&

59、gt;</p><p><b>  abp:</b></p><p>  cmp k,"p" ;按p鍵初值</p><p><b>  jnz ab</b></p><p>  and flag,00000000b</p&g

60、t;<p>  mov buff,0</p><p>  mov buff+1,0</p><p>  mov buff+2,0</p><p>  mov buff+3,0</p><p><b>  aa1: </b></p><p>  call key </p>

61、<p><b>  cmp k,"0"</b></p><p><b>  jz a1</b></p><p><b>  cmp k,"1"</b></p><p><b>  jz a1</b></p>&l

62、t;p><b>  cmp k,"2"</b></p><p><b>  jz a1</b></p><p><b>  jnz aa1</b></p><p><b>  a1: </b></p><p><b> 

63、 sub k,30h</b></p><p><b>  mov al,k</b></p><p>  mov buff,al</p><p><b>  aa2: </b></p><p><b>  call key</b></p><p&g

64、t;  cmp buff,2</p><p><b>  jnz a2</b></p><p><b>  cmp k,"0"</b></p><p><b>  jz a2</b></p><p><b>  cmp k,"1"

65、;</b></p><p><b>  jz a2</b></p><p><b>  cmp k,"2"</b></p><p><b>  jz a2</b></p><p><b>  cmp k,"3"<

66、;/b></p><p><b>  jz a2</b></p><p><b>  cmp k,"4"</b></p><p><b>  jz a2</b></p><p><b>  jnz aa2</b></p>

67、;<p>  a2: sub k,30h</p><p><b>  mov al,k</b></p><p>  mov buff+1,al</p><p><b>  aa3: </b></p><p><b>  call key</b></p>

68、<p>  cmp buff,2</p><p><b>  jnz a31</b></p><p>  cmp buff+1,4</p><p><b>  jnz a31</b></p><p><b>  cmp k,"0"</b><

69、;/p><p><b>  jz a3</b></p><p><b>  jnz aa3 </b></p><p><b>  a31:</b></p><p>  cmp k,"0" </p><p><b>  jz

70、a3</b></p><p><b>  cmp k,"1"</b></p><p><b>  jz a3</b></p><p><b>  cmp k,"2"</b></p><p><b>  jz a3&l

71、t;/b></p><p>  cmp k,"3" </p><p><b>  jz a3</b></p><p>  cmp k,"4" </p><p><b>  jz a3</b></p><p>  cmp k,&qu

72、ot;5" </p><p><b>  jz a3</b></p><p><b>  jnz aa3</b></p><p>  a3:sub k,30h</p><p><b>  mov al,k</b></p><p>  mov

73、buff+2,al</p><p><b>  aa4:</b></p><p><b>  call key</b></p><p>  cmp buff,2</p><p><b>  jnz a4 </b></p><p>  cmp buff+1

74、,4</p><p><b>  jnz a4</b></p><p><b>  cmp k,"0"</b></p><p><b>  jz a4</b></p><p><b>  jnz aa4 </b></p>

75、<p>  a4: sub k,30h</p><p><b>  mov al,k</b></p><p>  mov buff+3,al</p><p><b>  jmp ab</b></p><p><b>  intp:</b></p>&l

76、t;p><b>  push ax</b></p><p><b>  push bx</b></p><p><b>  push cx</b></p><p><b>  push dx</b></p><p><b>  push s

77、i</b></p><p><b>  push di</b></p><p>  test flag,1</p><p><b>  jz iexit</b></p><p><b>  Inc time</b></p><p>  cmp

78、 time,10</p><p><b>  jnz iexit</b></p><p>  inc buff+3</p><p>  mov time,0</p><p>  cmp buff+3,10</p><p><b>  jnz iexit</b></p&g

79、t;<p>  mov buff+3,0</p><p>  inc buff+2</p><p>  cmp buff+2,6</p><p><b>  jnz iexit</b></p><p>  mov buff+2,0</p><p>  inc buff+1</p

80、><p>  cmp buff+1,10</p><p><b>  jnz iexit</b></p><p>  mov buff+1 ,0</p><p><b>  inc buff</b></p><p>  cmp buff,6</p><p>

81、;<b>  jnz iexit</b></p><p>  mov buff ,0 </p><p><b>  iexit:</b></p><p>  call display</p><p>  mov al,20h</p><p>  out 20h,al&

82、lt;/p><p><b>  pop di</b></p><p><b>  pop si</b></p><p><b>  pop dx</b></p><p><b>  pop cx</b></p><p><b>

83、;  pop bx</b></p><p><b>  pop ax</b></p><p><b>  iret</b></p><p><b>  display:</b></p><p>  lea bx,dseg;BX指向段表首址</p

84、><p>  lea si,buff;Si指向緩沖器首址</p><p><b>  agi:</b></p><p>  mov al,[si];取當(dāng)前所要顯示的內(nèi)容</p><p>  xlat;將顯示的內(nèi)容轉(zhuǎn)化為段碼</p><p>  mov

85、 dx,0c800h;Dx指向段碼口PA,輸出段碼,經(jīng)反向驅(qū)動(dòng)變大</p><p><b>  out dx,al</b></p><p>  mov dx,0c801h;DX指向位碼口PB,輸出位碼,1有效</p><p>  mov al,bit</p><p><b>  out dx,al&

86、lt;/b></p><p><b>  mov di,10</b></p><p>  mov cx,6000h;延時(shí)</p><p><b>  delay:</b></p><p>  loop delay</p><p><b>  dec di

87、</b></p><p><b>  jnz delay</b></p><p><b>  inc si</b></p><p><b>  shl bit,1</b></p><p>  cmp bit,10h</p><p><b

88、>  jnz agi</b></p><p><b>  mov bit,1</b></p><p><b>  mov al,0</b></p><p><b>  out dx,al</b></p><p><b>  ret</b>

89、</p><p><b>  key: </b></p><p>  mov dx,0c801h;使PB口的行線(xiàn)為全0電平</p><p><b>  mov al,0</b></p><p><b>  out dx,al</b></p><p&g

90、t;  inc dx;判斷是否全為1,DX指向PC口</p><p><b>  ab11:</b></p><p>  in al,dx;讀列線(xiàn),判斷是否有鍵按下</p><p>  and al,0fh;高4位清零,接低4位</p><p>  cmp al,0fh;全1無(wú)

91、鍵按下,繼續(xù)等待按鍵</p><p><b>  jz ab11</b></p><p>  mov cx,8000h;延時(shí),去抖動(dòng)</p><p><b>  delay12:</b></p><p>  loop delay12</p><p>  mov bh,

92、0;bh為首行號(hào)</p><p>  mov bl,0;bl為列號(hào)</p><p>  mov cx,4;判別行數(shù)CX,掃描4行</p><p>  mov ah,0feh</p><p>  again:mov al,ah;PB口逐行輸出為0,判斷該行是否有鍵按下</p><p&g

93、t;  mov dx,0c801h</p><p><b>  out dx,al</b></p><p><b>  inc dx</b></p><p><b>  in al,dx</b></p><p>  and al,0fh</p><p>

94、  cmp al,0fh</p><p><b>  jnz ab1</b></p><p>  add bh,4;無(wú)鍵按下,則首行號(hào)加8</p><p>  rol ah,1;輸出碼0電平左環(huán)移1位,判別所有行都判別完沒(méi)?</p><p>  loop again</p><p>

95、;<b>  jmp key</b></p><p><b>  ab1:</b></p><p><b>  mov cx,4</b></p><p><b>  ab3:</b></p><p><b>  shr al,1</b>

96、;</p><p><b>  jc ab2</b></p><p><b>  jmp ab4</b></p><p><b>  ab2:</b></p><p><b>  inc bl</b></p><p><b&g

97、t;  loop ab3</b></p><p><b>  ab4:</b></p><p><b>  add bh,bl</b></p><p><b>  mov al,bh</b></p><p>  lea bx,ASCTAB</p>&l

98、t;p><b>  xlat</b></p><p><b>  mov ah,2</b></p><p><b>  mov dl,al</b></p><p><b>  mov k,al</b></p><p><b>  int 2

99、1h</b></p><p>  push dx;是否釋放</p><p>  mov dx,0c801h</p><p><b>  mov al,0</b></p><p><b>  out dx,al</b></p><p><b&g

100、t;  inc dx</b></p><p><b>  ab5:</b></p><p><b>  in al,dx</b></p><p>  and al,0fh</p><p>  cmp al,0fh</p><p><b>  jnz ab

101、5</b></p><p>  mov cx,8000h;延時(shí)抖動(dòng)</p><p><b>  delay11:</b></p><p>  loop delay11</p><p><b>  pop dx</b></p><p><b>

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論