版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 微機接口課程</b></p><p><b> 設計報告</b></p><p> 2011 年 1 月 13 日</p><p> 課題名稱數字鐘實驗</p><p> 班 級</p><p> 學 號</p>
2、<p> 學生姓名</p><p><b> 摘要</b></p><p> 數字鐘實驗的目的是熟悉8255A、8253、8259等I/O接口的編程技術,掌握鍵盤掃描和LED動態(tài)顯示的工作原理。此實驗是制作一個時間顯示系統(tǒng)。能實現(xiàn)C鍵清除,G鍵啟動,D鍵停止,E鍵終止程序及P鍵設置初始值等基本功能。</p><p> 關鍵詞:
3、數字鐘、LED、時間顯示系統(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> 第一章 設計要求1</p><p> 第二章 設計所用芯片1</p><p> 第三章 設計思想1</p>
6、<p> 3.1 設計思想1</p><p> 3.2 設計原理2</p><p> 第四章 設計所用芯片結構2</p><p> 4.1 8255A芯片的內部結構及引腳2</p><p> 4.2 8253芯片的內部結構及引腳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芯片的內部結構及引腳5</p><p> 第五章 系統(tǒng)各個模塊設計6</p><p> 5
8、.1 系統(tǒng)總體設計6</p><p> 5.2 定時模塊6</p><p> 5.3 中斷處理模塊7</p><p> 5.4 顯示模塊和小鍵盤模塊8</p><p> 第六章 系統(tǒng)框圖10</p><p><b> 參考流程10</b></p><p&g
9、t;<b> 致謝11</b></p><p><b> 參考文獻12</b></p><p><b> 附錄13</b></p><p> 附錄一:總體原理圖13</p><p> 附錄二:源代碼14</p><p><b&g
10、t; 第一章 設計要求</b></p><p> 利用試驗平臺提供的硬件資源設計一個數字鐘。該數字鐘以分、秒的形式實時顯示當前時間,且具有校表功能,利用小鍵盤與標準時間校準。</p><p> 掌握8255A、8253、8259芯片使用方法和編程方法,通過本次課程設計,學以致用,進一步理解所學的相關芯片的原理、內部結構、使用方法等,學會相關芯片實際應用及編程,系統(tǒng)中采用8
11、088微處理器完成了數字鐘的小系統(tǒng)的獨立設計。同時并了解綜合問題的程序設計掌握實時處理程序的編制和調試方法,掌握一般的設計步驟和流程。</p><p> 第二章 設計所用芯片</p><p> 8255A:可編程通用并行接口芯片,可作為單片機與各種外部設備連接的接口電路。</p><p> 8253定時器:用于產生秒脈沖,其輸出信號可作為中斷請求信號送IRQ2
12、。</p><p> 8259中斷控制器:用于產生中斷</p><p> LED:四個LED用于顯示分:秒值。</p><p> 小鍵盤:用于控制設置。</p><p><b> 第三章 設計思想</b></p><p><b> 3.1 設計思想</b></
13、p><p> 本系統(tǒng)設計的數字鐘以8088微處理器作為CPU,用8253做定時計數器產生時鐘頻率,8255A做可編程并行接口顯示時鐘和鍵盤電路,8259做中斷控制器產生中斷。在此系統(tǒng)中,8253的功能是定時,接入8253的CLK信號為周期性時鐘信號。8253采用計數器0,工作于方式2,使8253的OUT0端輸出周期性的負脈沖信號。即每隔20ms,8253的OUT0端就會輸出一個負脈沖的信號,此信號接8259的IR2
14、,當中斷到50次后,CPU即處理,使液晶顯示器上的時間發(fā)生變化。</p><p> 其中8259只需初始化ICW1,其功能是向8259表明IRx輸入是電平觸發(fā)方式還是上升沿觸發(fā)方式,是單片8259還是多片8259。8259接收到信號后,產生中斷信號送CPU處理。</p><p><b> 3.2 設計原理</b></p><p> 利用定
15、時器8253和8259以及鍵盤和數碼顯示電路,設計一個數字鐘,由8253中斷定時,小鍵盤控制數字鐘的啟停及初始值的設置。</p><p> 數字鐘的顯示格式MM:SS由左到右分別為分、秒,最大計時為59:59起過這個時間分秒位都清零從00:00重新開始。</p><p> 設計一個定時顯示裝置,用4個數碼管顯示時間,用小鍵盤控制計時,設置和顯示時間,系統(tǒng)一運行就從00分00秒開始計時,
16、并在數碼管上顯示分、秒當前值,而且可以用小鍵盤設置當前時間。</p><p> 基本工作原理:每百分之一秒對百分之一秒寄存器的內容加一,并依次對秒、分寄存器的內容加一;4個數碼管動態(tài)顯示分、秒的當前值。</p><p> C鍵:清零,顯示初值;</p><p> G鍵:啟動,顯示XXXX變化的時間;</p><p> D鍵:停止,顯示
17、XXXX不變;</p><p> E鍵:終止程序,熄滅數碼管,程序退出;</p><p> P鍵:設置初始值,設置初值</p><p> 第四章 設計所用芯片結構</p><p> 4.1 8255A芯片的內部結構及引腳</p><p> 8255A是Intel公司研制的通用可編程并行接口芯片。</p&
18、gt;<p> 鍵盤部分提供一種掃描的工作方式,可以和具有16個按鍵的矩陣鍵盤相連接,能對鍵盤不斷掃描,自動消抖。</p><p> 顯示部分為發(fā)光二極管、熒光管及其它顯示器提供了按掃描方式工作的顯示接口,它為顯示器提供多路復用信號。</p><p> CS:片選信號,低電平有效,8255A才能和CPU交換信息。</p><p> RD:讀控制
19、信號,低電平胡效,8255A向CPU傳送數據或狀態(tài)信息。</p><p> WR:寫控制信號,低電平有效,8255A接收CPU寫入的數據或控制字。</p><p> RESET:復位信號,高電平有效,所有內部寄存器的內容都被清除,端口PA、PB、PC都被置成輸入方式。</p><p> A1、A0:端口選擇線,8255A中內部共占用4個端口地址,它們是PA、P
20、B、PC3個數據端口,以及1個控制寄存器端口,這4個口用A1、A0的狀態(tài)組合來進行選擇。通常將這兩個引腳接到地址總線的最低位上,使8255A占用的4個端口地址是連續(xù)的。</p><p> 4.2 8253芯片的內部結構及引腳</p><p> 8253可編程定時/計數器是Intel公司生產的通用外圍芯片之一,有3個獨立的十六位計數器,技術頻率范圍為0~2MHZ,它所有的技術方式和操作方
21、式都通過編程控制。</p><p> 4.2.1 8253功能用途</p><p> 8253的功能用途是:</p><p><b> ?。?)延時中斷</b></p><p> (2)可編程頻率發(fā)生器</p><p><b> ?。?)事件計數器</b></p&
22、gt;<p><b> ?。?)二進倍頻器</b></p><p><b> ?。?)實時時鐘</b></p><p><b> ?。?)數字單穩(wěn)</b></p><p> (7)復雜的電機控制器</p><p> 4.2.2 8253的工作方式</p&
23、gt;<p> 8253有六種工作方式:</p><p> ?。?)方式0:計數結束中斷</p><p> ?。?)方式1:可編程頻率發(fā)生器</p><p> (3)方式2:頻率發(fā)生器</p><p> ?。?)方式3:方波頻率發(fā)生器</p><p> ?。?)方式4:軟件觸發(fā)的選通信號</p&
24、gt;<p> (6)方式5:硬件觸發(fā)的選通信號</p><p> 4.2.3 8253引腳功能</p><p> 8253引腳圖如圖所示,各引腳功能如下。</p><p> D7~D0——八條雙向數據線;</p><p> WR(低電平有效)——寫輸入信號;</p><p> RD(低電平有
25、效)——讀輸入信號;</p><p> CS(低電平有效)——片選輸入信號;</p><p> A0、A1——片內寄存器地址輸入信號;</p><p> CLK——計數輸入,用于輸入定時基準脈沖或計數脈沖;</p><p> OUT——輸出信號,以相應的電平指示計數的完成,或輸出脈沖波形;</p><p>
26、GATE——選通輸入(門控輸入),用于啟動或禁止計數器的操作,以使計數器和計測對象同步。</p><p> 4.2.4 8253端口地址</p><p> 4.3 8259芯片的內部結構及引腳</p><p> 中斷控制器8259A是Intel公司專為控制優(yōu)先級中斷而設計開發(fā)的芯片。它將中斷源優(yōu)先排隊、辨別中斷源以及提供中斷矢量的電路集中于一片中。因此無需附加
27、任何電路,只需對8259A編程,就可以管理8級中斷,并選擇優(yōu)先模式和中斷請求方式,即中斷結構可以由用戶編程來設定。在MD微機系統(tǒng)中,8259芯片工作于單片方式。</p><p> 8259引腳圖如圖3.3,各引腳功能如下。</p><p> D7~D0——八條雙向數據線;</p><p> WR(低電平有效)——寫輸入信號;</p><p&
28、gt; RD(低電平有效)——讀輸入信號;</p><p> CS(低電平有效)——片選輸入信號;</p><p><b> A0——地址信號;</b></p><p> INT——中斷請求信號;</p><p> INTA(低電平有效)——中斷響應信號;</p><p> CAS0~
29、CAS2——級聯(lián)信號,形成一條專用8259A總線,以便多片8259A的級聯(lián);</p><p> SP/EN——從編程/允許級聯(lián)。在緩沖方式中,可用做輸出信號以控制總線緩沖器的接收和發(fā)送。在非緩沖方式中,作為輸入信號用于表示主片還是從片;</p><p> IR0~IR7——外部中斷請求輸入線。要求輸入的中斷請求信號是由低電平到高電平的上升沿(并保持高電平到CPU響應時為止)或者是高電平
30、。</p><p> 8259中斷矢量地址與中斷信號之間的關系如表所示:</p><p> 第五章 系統(tǒng)各個模塊設計</p><p> 5.1 系統(tǒng)總體設計</p><p> 本系統(tǒng)設計的數字鐘以8088微處理器作為CPU,用8253做定時計數器產生時鐘頻率,8255A做可編程并行接口顯示時鐘和鍵盤電路,8259做中斷控制器產生中斷。
31、在此系統(tǒng)中,8253的功能是定時,接入8253的CLK信號為周期性時鐘信號。8253采用計數器0,工作于方式2,使8253的OUT0端輸出周期性的負脈沖信號。即每隔20ms,8253的OUT0端就會輸出一個負脈沖的信號,此信號接8259的IR2,當中斷到50次數后,CPU即處理,使液晶顯示器上的時間發(fā)生變化。程序由以下模塊組成:系統(tǒng)共有5個功能模塊,分別為,主控模塊,顯示模塊,定時模塊,中斷模塊,小鍵盤模塊。</p>&l
32、t;p><b> 5.2 定時模塊</b></p><p> 定時模塊是為8259提供中斷請求信號的。由一片8253實現(xiàn),選用定時器0#,工作在方式3,由于時鐘應該1秒走動一次,所以輸出值應為1S,其輸出信號可作為8259的中斷請求信號。</p><p><b> 定時模塊原理圖</b></p><p> 5
33、.3 中斷處理模塊</p><p> 中斷模塊實現(xiàn)動態(tài)顯示的,硬件為一片8259,由于中斷請求信號為每秒一次,中斷程序該為時間按秒增加,并顯示,只要開中斷,便可實現(xiàn)每秒顯示時間增加一秒,從而達到動態(tài)顯示的效果。</p><p><b> 中斷模塊原理圖</b></p><p> 5.4 顯示模塊和小鍵盤模塊</p><
34、p> 顯示模塊是將顯示緩沖區(qū)的數值送到LED顯示的功能模塊,顯示緩沖區(qū)是由六個字節(jié)構成,分別保存小時的高位和低位,分鐘的高位和低位,秒鐘的高位和低位。硬件上由六個LED構成,軟件上由掃描顯示的方法實現(xiàn)。</p><p> 小鍵盤模塊送入主控模塊的子功能模塊。由軟件和硬件實現(xiàn),硬件上由小鍵盤和8255A互連,將小鍵值由8255A送入主控模塊。軟件上使用行掃描法獲得鍵值并送回主控模塊。本課題只考慮去抖動。執(zhí)
35、行一個約10ms的延時程序后再掃描鍵盤,若F0=1表示真正有鍵按下,從而消除了抖動影響。</p><p><b> 顯示模塊原理圖</b></p><p><b> 鍵盤部分原理圖:</b></p><p><b> 第六章 系統(tǒng)框圖</b></p><p><b&
36、gt; 參考流程</b></p><p><b> 致謝</b></p><p> 通過本次課程設計,我對利用微機原理課程所學的知識設計電子表的基本過程的設計方法、步驟、思路、有一定的了解與認識。它相當于實際工業(yè)設計的模擬。在課程設計過程中,我先是收集、調查有關資料,然后進入草案階段。設計方案確定后,又在老師指導下進行擴初詳細設計,并分別設計了相應的
37、模塊;將這些模塊組合起來,便形成了一個完整的數字鐘的設計。</p><p> 這門課周老師上的特別好,而且對我們要求很嚴,這樣才是一位好的老師,因為對我們比較負責。我們才能真正的學到東西。在這里要感謝周老師,是她教會我們如何去學習,上了大學以后老師都不怎么管了,很多同學根本就不學習了,整天抄作業(yè)。這樣下去到了畢業(yè)那天都會后悔的。</p><p> 通過學期末的課程設計對自己的幫助很大,
38、感覺自己就是一位小的工程師一樣,能設計東西出來了,很有成就感。短短的兩周課程設計就使自己學會了一種思想,通過這為期兩個多月的實驗課程的實踐體會我收獲了不少,在剛開始做實驗時我真的一點都摸不著頭緒,第一次實驗給我的啟發(fā)也比較深,使我明白了預習的重要性,做好預習在實驗室里就會很輕松,如果沒有預習的話在實驗課上就會遇到很多問題的,可能還不能明白。但通過這段時間的學習和實驗課中也充分暴露出我對這門課的學習和掌握情況不是太好!每次實驗都不能進行順
39、利的寫出和分析程序的原因之所在。用一句話講:不是自己學不會而是自己下的功夫不到吧!針對以上這些情況,在這段時間我一定加倍努力把微機原理學好,不僅僅是為了考試,更重要的是為將來的工作增加自己的競爭力。</p><p> 俗話說:“難者不會,會者不難?!逼鋵崒W好一門課并不難,關鍵看自己有沒有理解,如果理解的話很多問題都迎刃而解了,當然理解也要下工夫才行。學習這門課更需要理解,如果對這門課理解學起來會很輕松,如果沒有
40、理解的話,那是寸步難行啊,我相信自己最終對這門課會理解的!</p><p> 經過這次成功的設計,我更加深刻的理解了微機原理的相關知識。對一些常用芯片有了更深一步的認識,并且能夠很好的使用它們。應該說,這次課程設計達到了目的。 </p><p><b> 參考文獻</b></p><p> 韓雁.《現(xiàn)代微機原理與接口技術》.北京:電子工業(yè)
41、出版社,2010.8</p><p> 楊立新.《微型計算機原理和應用》.北京:科學技術文獻出版社,1986.11</p><p> 眭碧霞.《微型計算機原理與組成》.人民郵電出版社,2003.8</p><p> 李大友.《微型計算機原理》.北京:清華大學出版社,1998.7</p><p> 李順增,吳國東,趙河明等.《微機原理及
42、接口技術》.北京:機械工業(yè)出版社,2006</p><p> 周明德.《微型計算機系統(tǒng)原理及應用》.北京:清華大學出版社,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 ;共陽段碼</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;寫方式字,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;把用戶定義的8號中斷寫入</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鍵開始</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];取當前所要顯示的內容</p><p> xlat;將顯示的內容轉化為段碼</p><p> mov
85、 dx,0c800h;Dx指向段碼口PA,輸出段碼,經反向驅動變大</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;延時</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口的行線為全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;讀列線,判斷是否有鍵按下</p><p> and al,0fh;高4位清零,接低4位</p><p> cmp al,0fh;全1無
91、鍵按下,繼續(xù)等待按鍵</p><p><b> jz ab11</b></p><p> mov cx,8000h;延時,去抖動</p><p><b> delay12:</b></p><p> loop delay12</p><p> mov bh,
92、0;bh為首行號</p><p> mov bl,0;bl為列號</p><p> mov cx,4;判別行數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;無鍵按下,則首行號加8</p><p> rol ah,1;輸出碼0電平左環(huán)移1位,判別所有行都判別完沒?</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;延時抖動</p><p><b> delay11:</b></p><p> loop delay11</p><p><b> pop dx</b></p><p><b>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論