

版權(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機(jī)原理數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 微機(jī)接口電子表數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告(正文)
- 數(shù)字邏輯課程設(shè)計(jì)報(bào)告---數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)報(bào)告 (2)
- 數(shù)字鐘eda課程設(shè)計(jì)報(bào)告
- eda課程設(shè)計(jì)報(bào)告--數(shù)字鐘
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)--數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)--數(shù)字時(shí)鐘設(shè)計(jì)報(bào)告
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
- eda課程設(shè)計(jì)報(bào)告---數(shù)字鐘設(shè)計(jì)
- 數(shù)字鐘課程設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論