版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、<p><b> 目 錄</b></p><p> 一、課程設計要求及目的2</p><p> 二、開發(fā)環(huán)境及設備2</p><p><b> 1、設計環(huán)境2</b></p><p> 2、設計所用設備2</p><p> 三、設計思想與原理2
2、</p><p><b> 1、設計思想2</b></p><p><b> 2、設計原理3</b></p><p><b> 1、內容3</b></p><p><b> 2、要求3</b></p><p><
3、;b> 3、設計環(huán)境4</b></p><p> 4、設計所用設備4</p><p> 三、設計所用芯片結構4</p><p> 1、8259A芯片的內部結構及引腳4</p><p> 2、8255芯片的內部結構及引腳5</p><p> 3、8255端口地址6</p&g
4、t;<p> 4、8254芯片的內部結構及引腳6</p><p> 5、8254引腳圖如圖3示,各引腳功能如下。7</p><p> 四、具體模塊設計8</p><p><b> 1、概述8</b></p><p><b> 2、主程序模塊8</b></p&g
5、t;<p><b> 3、小鍵盤模塊9</b></p><p><b> 4、顯示模塊10</b></p><p><b> 5、定時模塊10</b></p><p> 6、中斷處理模塊10</p><p><b> 7、芯片引腳11
6、</b></p><p> 五、程序流程圖12</p><p> 1、主程序流程圖如圖6所示12</p><p> 2、鍵盤掃描程序流程圖:(KEY)如圖7所示13</p><p> 3、中斷處理程序流程圖如圖8所示:14</p><p><b> 六、心得體會15</b
7、></p><p> 附錄一:參考書目15</p><p> 附錄二 相關程序16</p><p> 一、課程設計要求及目的</p><p> 1、用8255的A口驅動六個七段數(shù)碼管(LED)的字段,C口驅動六位七段數(shù)碼管(LED)的為控制端,右側兩位顯示分值,左側兩位顯示秒值,</p><p>
8、 2、數(shù)碼管采用動態(tài)掃描方式,用8253做定時器(采用查詢方式),每位顯示的時間<5ms,掃描頻率>50HZ。</p><p> 3以5ms為基本時間單位,計數(shù)產(chǎn)生秒時間值,秒計數(shù)到60時對分計數(shù),分計數(shù)到60時對時計數(shù)。</p><p><b> 二、開發(fā)環(huán)境及設備</b></p><p><b> 1、設計環(huán)境&
9、lt;/b></p><p> PC機一臺、windows XP系統(tǒng)、實驗箱、導線若干。</p><p><b> 2、設計所用設備</b></p><p> 8254定時器:用于產(chǎn)生秒脈沖,其輸出信號可作為中斷請示信號送IRQ2。</p><p> 8255并口:用做接口芯片,和小鍵盤相連。</p&
10、gt;<p> 8259中斷控制器:用于產(chǎn)生中斷。</p><p> LED:七個LED用于顯示時:分:秒值。</p><p> 小鍵盤:用于控制設置。</p><p><b> 三、設計思想與原理</b></p><p><b> 1、設計思想</b></p>
11、<p> 本系統(tǒng)設計的電子時鐘以8088微處理器作為CPU,用8254做定時計數(shù)器產(chǎn)生時鐘頻率,8255做可編程并行接口顯示時鐘和鍵盤電路,8259做中斷控制器產(chǎn)生中斷。在此系統(tǒng)中,8254的功能是定時,接入8254的CLK信號為周期性時鐘信號。8254采用計數(shù)器0,工作于方式2,使8254的OUT0端輸出周期性的負脈沖信號。即每隔20ms,8254的OUT0端就會輸出一個負脈沖的信號,此信號接8259的IR2,當中斷到5
12、0次數(shù)后,CPU即處理,使液晶顯示器上的時間發(fā)生變化。其中8259只需初始化ICW1,其功能是向8259表明IRx輸入是電瓶觸發(fā)方式還是上升沿觸發(fā)方式,是單片8259還是多片8259。8259接收到信號后,產(chǎn)生中斷信號送CPU處理。</p><p><b> 2、設計原理</b></p><p> 利用實驗臺上提供的定時器8254和擴展板上提供的8259以及鍵盤和
13、數(shù)碼顯示電路,設計一個電子時鐘,由8254中斷定時,小鍵盤控制電子時鐘的啟停及初始值的預置。電子時鐘的顯示格式HH:MM:SS由左到右分別為時、分、秒,最大記時59:59:59超過這個時間時分秒位都清零從00:00:00重新開始。</p><p> 基本工作原理:每百分之一秒對百分之一秒寄存器的內容加一,并依次對秒、分、小時寄存器的內容加一,六個數(shù)碼管動態(tài)顯示時、分、秒的當前值。</p><
14、p><b> 1、內容</b></p><p> 利用實驗臺上提供的定時器8254和擴展板上提供的8259以及鍵盤和數(shù)碼顯示電路,設計一個電子時鐘,由8254中斷定時,小鍵盤控制電子時鐘的啟停及初始值的預置。</p><p> 電子時鐘的顯示格式HH:MM:SS由左到右分別為時、分、秒,最大記時59:59:59超過這個時間時分秒位都清零從00:00:00重
15、新開始。</p><p><b> 2、要求</b></p><p> 本實驗要求設計一個定時顯示裝置,用六個數(shù)碼管顯示時間,用小鍵盤控制計時,設置和顯示時間。系統(tǒng)一運行就從00點00分00秒開始計時,并在數(shù)碼管上顯示時、分、秒當前值,而且,可以用鍵盤設置當前時間。</p><p> 基本工作原理:每百分之一秒對百分之一秒寄存器的內容加一
16、,并依次對秒、分、小時寄存器的內容加一;六個數(shù)碼管動態(tài)顯示時、分、秒的當前值。</p><p> C鍵:置初值,顯示00:00:00</p><p> G鍵:顯示動態(tài)變化(啟動表);</p><p> D鍵:顯示靜態(tài)不變(表停止);</p><p> E鍵:終止程序,返回DOS;</p><p> P鍵:設置
17、時:分:秒的值</p><p><b> 3、設計環(huán)境</b></p><p> PC機一臺、windows XP系統(tǒng)、實驗箱,導線若干。</p><p><b> 4、設計所用設備</b></p><p> 8254定時器:用于產(chǎn)生秒脈沖,其輸出信號可作</p><p&
18、gt; 為中斷請示信號送IRQ2。</p><p> 8255并口:用做接口芯片,和小鍵盤相連。</p><p> 8259中斷控制器:用于產(chǎn)生中斷。</p><p> LED:七個LED用于顯示時:分:秒值。</p><p> 小鍵盤:用于控制設置。</p><p> 三、設計所用芯片結構</p&g
19、t;<p> 1、8259A芯片的內部結構及引腳</p><p> 中斷控制器8259A是Intel公司專為控制優(yōu)先級中斷而設計開發(fā)的芯片。它將中斷源優(yōu)先排隊、辨別中斷源以及提供中斷矢量的電路集中于一片中。因此無需附加任何電路,只需對8259A編程,就可以管理8級中斷,并選擇優(yōu)先模式和中斷請求方式,即中斷結構可以由用戶編程來設定。在MD微機系統(tǒng)中,8259芯片工作于單片方式。</p>
20、<p> 8259引腳圖如圖1,各引腳功能如下。</p><p> D7~D0——八條雙向數(shù)據(jù)線;</p><p> WR(低電平有效)——寫輸入信號;</p><p> RD(低電平有效)——讀輸入信號;</p><p> CS(低電平有效)——片選輸入信號;</p><p><b>
21、; A0——地址信號;</b></p><p> INT——中斷請求信號;</p><p> INTA(低電平有效)——中斷響應信號;</p><p> CAS0~CAS2——級聯(lián)信號,形成一條專用8259A總線,以便多片8259A的級聯(lián);</p><p> SP/EN——從編程/允許級聯(lián)。在緩沖方式中,可用做輸出信號以
22、控制總線緩沖器的接收和發(fā)送。在非緩沖方式中,作為輸入信號用于表示主片還是從片;</p><p> IR0~IR7——外部中斷請求輸入線。要求輸入的中斷請求信號是由低電平到高電平的上升沿(并保持高電平到CPU響應時為止)或者是高電平。</p><p> 8259中斷矢量地址與中斷信號之間的關系如表3.1所示:</p><p> 2、8255芯片的內部結構及引腳&
23、lt;/p><p> 8255可編程外圍接口芯片是Intel公司生產(chǎn)的通用并行I/O接口芯片,它具有A、B、C三個并行接口,用+5V單電源供電,</p><p> 能在以下三種工作方式下工作:</p><p> 方式0—基本輸入/輸出方式</p><p> 方式1—選通輸入/輸出方式</p><p> 方式2—雙
24、向選通輸入/輸出方式</p><p> 8255引腳圖如圖2示,各引腳功能如下。</p><p> D7~D0——與CPU側連接的八條雙向數(shù)據(jù)線;</p><p> WR(低電平有效)——寫輸入信號; </p><p> RD(低電平有效)——讀輸入信號;
25、 圖2 8255引腳圖</p><p> CS(低電平有效)——片選輸入信號;</p><p> A0、A1——片內寄存器選擇輸入信號;</p><p> PA7~PA0——A口外設雙向數(shù)據(jù)線;</p><p> PB7~PB0——B口外設雙向數(shù)據(jù)線;</p><p> PC7~PC0——C口外設
26、雙向數(shù)據(jù)線;</p><p> RESET——復位輸入信號</p><p> 3、8255端口地址</p><p> 4、8254芯片的內部結構及引腳</p><p> 8254可編程定時/計數(shù)器是Intel公司生產(chǎn)的通用外圍芯片之一,有3個獨立的十六位計數(shù)器,技術頻率范圍為0~2MHZ,它所有的技術方式和操作方式都通過編程控制。&l
27、t;/p><p> 8254的功能用途是:</p><p> 延時中斷 </p><p> 可編程頻率發(fā)生器 </p><p> 事件計數(shù)器 </p><p><b> 二進倍頻器 &l
28、t;/b></p><p><b> 實時時鐘</b></p><p><b> 數(shù)字單穩(wěn)</b></p><p><b> 復雜的電機控制器</b></p><p> 8254有六種工作方式:</p><p> 方式0:計數(shù)結束中斷&l
29、t;/p><p> 方式1:可編程頻率發(fā)生器</p><p> 方式2:頻率發(fā)生器 </p><p> 方式3:方波頻率發(fā)生器 </p><p> 方式4:軟件觸發(fā)的選通信號</p><p> ?。?) 方式5:硬件觸發(fā)的
30、選通信號</p><p> 5、8254引腳圖如圖3示,各引腳功能如下。</p><p> D7~D0——八條雙向數(shù)據(jù)線;</p><p> WR(低電平有效)——寫輸入信號;</p><p> RD(低電平有效)——讀輸入信號;</p><p> CS(低電平有效)——片選輸入信號;</p>
31、<p> A0、A1——片內寄存器地址輸入信號;</p><p> CLK——計數(shù)輸入,用于輸入定時基準脈沖或計數(shù)脈沖;</p><p> OUT——輸出信號,以相應的電平指示計數(shù)的完成,或輸出脈沖波形;</p><p> GATE——選通輸入(門控輸入),用于啟動或禁止計數(shù)器的操作,以使計數(shù)器和計測對象同步。</p><p&g
32、t; 2、8254端口地址</p><p> 表3.3 8254端口地址表</p><p><b> 四、具體模塊設計</b></p><p><b> 1、概述</b></p><p> 本系統(tǒng)設計的電子鐘以8088微處理器作為CPU,用8254做定時計數(shù)器產(chǎn)生時鐘頻率,8255做可編
33、程并行接口顯示時鐘和鍵盤電路,8259做中斷控制器產(chǎn)生中斷。在此系統(tǒng)中,8254的功能是定時,接入8254的CLK信號為周期性時鐘信號。8254采用計數(shù)器0,工作于方式2,使8254的OUT0端輸出周期性的負脈沖信號。即每隔5ms,8254的OUT0端就會輸出一個負脈沖的信號,此信號接8259的IR2,當中斷到50次數(shù)后,CPU即處理,使液晶顯示器上的時間發(fā)生變化。程序由以下模塊組成:系統(tǒng)共有5個功能模塊,分別為,主控模塊,顯示模塊,定
34、時模塊,中斷模塊,小鍵盤模塊。</p><p><b> 系統(tǒng)框圖如下:</b></p><p><b> 圖4 系統(tǒng)框圖</b></p><p><b> 2、主程序模塊</b></p><p> 主控模塊是系的核心模塊,對8254、8255A進行初始化,設置中斷向量
35、,掃描鍵盤根據(jù)按鍵值作相應的處理。主要由軟件實現(xiàn)。它的主要功能是調用其它模塊對系統(tǒng)工作進行協(xié)調,它的主要功能是讀小鍵盤輸入鍵值并執(zhí)行要做的工作,如果鍵值為C則將顯示初始值00:00:00置入顯示緩沖,并調用顯示模塊顯示。如果鍵值為G則開中斷,(中斷程序為秒最低位加一)。如果鍵值為D則關中斷,停止動態(tài)顯示。如健值為P則連續(xù)六次調用小鍵盤模塊,將鍵值依次存入顯示緩沖。并調用顯示模塊顯示。如果健值為E,則終止程序,返回DOS。</p&g
36、t;<p><b> 3、小鍵盤模塊</b></p><p> 小鍵盤模塊送入主控模塊的子功能模塊。由軟件和硬件實現(xiàn),硬件上由小鍵盤和8255互連,將小鍵值由8255送入主控模塊。軟件上使用行掃描法獲得鍵值并送回主控模塊。本課題只考慮去抖動。執(zhí)行一個約10ms的延時程序后再掃描鍵盤,若F0=1表示真正有鍵按下,從而消除了抖動影響。</p><p>&
37、lt;b> 實現(xiàn)代碼如下:</b></p><p> KEY ROC NEAR</p><p><b> PUSH CX</b></p><p> KST: MOV AL,82H</p><p> MOV DX,P55CTL</p><p><
38、b> OUT DX,AL</b></p><p> MOV AL,00H</p><p> MOV DX,PA55</p><p><b> OUT DX,AL</b></p><p> MOV DX,PB55</p><p><b> IN AL,DX&l
39、t;/b></p><p> OR AL,0F8H</p><p> CMP AL,0FFH</p><p><b> JZ DELAY</b></p><p> MOV CX,0300H</p><p> DLY: LOOP DLY</p><p&g
40、t; MOV CL,08H</p><p> MOV AH,0FEH</p><p> SCAN1: MOV DX,PA55</p><p><b> MOV AL,AH</b></p><p><b> OUT DX,AL</b></p><p> MOV
41、 DX,PB55</p><p><b> IN AL,DX</b></p><p> OR AL,0F8H</p><p> CMP AL,0FFH</p><p><b> JNZ KEYN</b></p><p><b> ROL AH,1</
42、b></p><p><b> DEC CL</b></p><p><b> JNZ SCAN1</b></p><p><b> JMP KST</b></p><p> KEYN: PUSH AX</p><p> MOV D
43、X,PB55</p><p> RELEA: IN AL,DX</p><p> OR AL,0F8H</p><p> CMP AL,0FFH</p><p><b> JNZ RELEA</b></p><p><b> POP AX</b></p&g
44、t;<p><b> NOT AX</b></p><p> MOV SI,OFFSET TABLE</p><p> MOV DI,OFFSET CHAR</p><p><b> MOV CX,24</b></p><p> TT: CMP AX,[SI]</p
45、><p><b> JZ NN</b></p><p><b> DEC CX</b></p><p><b> JZ KST</b></p><p><b> ADD SI,02</b></p><p><b>
46、INC DI</b></p><p><b> JMP TT</b></p><p> NN: MOV DL,[DI]</p><p> MOV [CHAR1],DL </p><p> MOV AH,02H</p><p><b> INT 21H</b
47、></p><p><b> POP CX</b></p><p><b> JMP YANG</b></p><p> DELAY: CALL DISPLY</p><p><b> JMP KST</b></p><p> YANG:
48、 RET</p><p> KEY ENDP</p><p><b> 4、顯示模塊</b></p><p> 顯示模塊是將顯示緩沖區(qū)的數(shù)值送到LED顯示的功能模塊,顯示緩沖區(qū)是由六個字節(jié)構成,分別保存小時的高位和低位,分鐘的高位和低位,秒鐘的高位和低位。硬件上由六個LED構成,軟件上由掃描顯示的方法實現(xiàn)。</p
49、><p><b> 實現(xiàn)代碼如下:</b></p><p> DISPLAY PROC NEAR</p><p> MOV CX,77FFH</p><p> LED52: CALL DISUP</p><p> LOOP LED52</p><p> DISU
50、P: PUSH CX</p><p> MOV DI,OFFSET MIN1</p><p><b> MOV CL,01</b></p><p> DISUP1: MOV AL,0</p><p> MOV DX,PORTBIT</p><p><b> OUT DX,
51、AL</b></p><p> MOV AL,[DI]</p><p> MOV BX,OFFSET LED</p><p><b> XLAT</b></p><p> MOV DX,PORTSEG</p><p><b> OUT DX,AL</b>
52、</p><p><b> MOV AL,CL</b></p><p> MOV DX,PORTBIT</p><p><b> OUT DX,AL</b></p><p> MOV BX,35H</p><p> DELAY1: DEC BX</p>
53、<p> JNZ DELAY1</p><p> CMP CL,20H</p><p><b> JZ DISUP2</b></p><p><b> INC DI</b></p><p><b> SHL CL,1</b></p><
54、;p> JMP DISUP1</p><p> DISUP2: POP CX</p><p><b> RET</b></p><p> DISPLAY ENDP</p><p><b> 5、定時模塊</b></p><p> 定時模塊是為8259提供中
55、斷請求信號的。由一片8254實現(xiàn),選用定時器0#,工作在方式3,由4時鐘應該1秒走動一次,所以輸出值應為1S,其輸出信號可作為8259的中斷請求信號。</p><p><b> 6、中斷處理模塊</b></p><p> 中斷模塊實現(xiàn)動態(tài)顯示的,硬件為一片8259,由于中斷請求信號為每秒一次,中斷程序該為時間按秒增加,并顯示,只要開中斷,便可實現(xiàn)每秒顯示時間增加一
56、秒,從而達到動態(tài)顯示的效果。</p><p><b> 7、芯片引腳</b></p><p> 按如下圖4接線圖連接好試驗箱上的芯片引腳, 主要用到器件有8255,8254,LED,8259,小鍵盤。8254的片選接地址208-20F,OUT1,OUT0接燈(測試用),GATE0,GATE1接+5V,CLK1接8259的IRQ2,CLK0接Q12(12分頻)。&l
57、t;/p><p> 8255的片選接地址218-21F,實驗箱已將其和小鍵盤相連。</p><p> LED的片選接地址210-217。</p><p><b> 圖5 試驗接線圖</b></p><p><b> 五、程序流程圖</b></p><p> 1、主程序
58、流程圖如圖6所示</p><p> 2、鍵盤掃描程序流程圖:(KEY)如圖7所示</p><p> 圖7 鍵盤掃描程序流程圖</p><p> 3、中斷處理程序流程圖如圖8所示:</p><p> 圖8 中斷處理程序流程圖</p><p><b> 六、心得體會</b></p>
59、;<p> 經(jīng)過以上步驟,課程設計所要求設計的電子鐘顯示設計軟件便成功完成了,它能顯示數(shù)字式的時鐘,并且能設置初值和時鐘進制。整個頁面簡潔清晰,方便用戶讀取,且操作簡捷,符合課程設計中的各項要求。通過這次課程設計,我們對日常生活中司空見慣的時鐘的工作原理有了一個比較深入的了解,將書本中的知識更好地與實際生活中的應用結合在了一起。</p><p> 通過這次微機原理課程設計學到了很多很多的的東西,
60、同時不僅可以鞏固了以前所學過的知識,而且學到了很多在書本上所沒有學到過的知識。而且我第一次感受到在寫一個程序的時候,一定要事先把程序原理方框圖畫出來的重要性。在課程設計中碰到的那些需要很多代碼才能完成的任務,畫程序方框圖是很有必要的。因為通過程序方框圖,在做設計的過程中,我們每一步要做什么,每一步要完成什么任務都有一個很清楚的思路,而且在程序測試的過程中也有利于查錯。</p><p> 本次課程設計的過程中遇到
61、了很多問題,比如時間走得太快、光標的位置無法定位等等。對每個問題的解決都是一種對知識的重新整理和考察。我更加感到愉悅的,此次的課程設計鍛煉了我的編程能力。</p><p> 到此為止,我們接近兩周的課程設計也告一段落。通過這次課程設計,使我認識到理論與實際相結合的重要性,對課本上的只是在實際生活中的運用也有了進一步的了解,同時基本上能夠掌握匯編語言編程中編程的步驟,可以說是從中受益匪淺。</p>
62、<p> 通過本次課設我也學到很多課堂上學不到的調試知識。很感謝學校給我們提供了這么好的學習機會,感謝老師的指導,從老師的身上學到了對知識真正嚴謹細致的態(tài)度,讓我受益匪淺。</p><p><b> 附錄一:參考書目</b></p><p> 1、戴梅萼,史嘉權編著.微型計算機技術及應用(第三版).北京:清華大學出版社,2003</p>
63、<p> 2、周明德編著.微型計算機系統(tǒng)原理及應用(第四版).北京:清華大學出版社,2002</p><p> 3、李順增,吳國東,趙河明等.微機原理及接口技術.北京:機械工業(yè)出版社,2006</p><p> 4、楊立新.微型計算機原理和應用[M].北京:科學技術文獻出版社,1986.11 </p><p> 5、李大友.微型計算機原理[M].北
64、京:清華大學出版社,1998.7</p><p> 6、眭碧霞.微型計算機原理與組成[M].人民郵電出版社,2003.8</p><p><b> 附錄二 相關程序</b></p><p><b> 電子時鐘程序</b></p><p> ;8255用作讀鍵盤信息</p>&
65、lt;p> ;8253提供時鐘信號</p><p> ;led采用動態(tài)顯示</p><p> model small</p><p><b> .stack 50</b></p><p><b> ,數(shù)據(jù)段</b></p><p><b> dat
66、a</b></p><p> buf d6 0,0,0,0,0,0;顯示緩沖區(qū)</p><p><b> ;數(shù)碼管筆形碼</b></p><p> led d63FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,80h</p><p> hour d6 08h;時緩沖單元&
67、lt;/p><p> min db 30h;分緩沖單元</p><p> see d6 30h;秒緩沖單元</p><p> mseo d6 0;毫秒緩沖單元</p><p> dex db 0;筆形碼索引值</p><p><b> ;鍵盤編碼表</b></p><p&
68、gt; keytab DW 57FH,5BFH,5DFH,5EFH,5FEH,5FDH,5FBH,5F7H</p><p> DW 67FH,6BFH,6DFH,6EFH,6FEH,6FDH,6FBH,6F7H</p><p> keyend dw 7ffh</p><p> agekey db 12;鍵齡</p><p> old
69、key dw 0;鍵碼字保存</p><p> keynum d6 0;鍵號</p><p> keyok db 0;按鍵響應標記</p><p> state d6 0;系統(tǒng)狀態(tài),。一運行態(tài);1一修改態(tài)</p><p> keymd db 0;修改鍵標記,B一修改時;C一修改分;D-修改秒</p><p>
70、 some d6 0;時間設定單元,保存鍵盤輸入的時間</p><p><b> 二代碼段</b></p><p><b> code</b></p><p><b> ;主程序:</b></p><p> ;實現(xiàn)8253的設置,中斷向量的設置,檢測系統(tǒng)大鍵盤信號,有按
71、鍵就結束程序返回系統(tǒng)。</p><p> main proc far</p><p> start: mov ax,data;設置數(shù)據(jù)段和附加段</p><p><b> mov ds,ax</b></p><p><b> mov es,ax</b></p><p>
72、;<b> cli;關中斷</b></p><p> ;設置8253, 2l,方式2,輸入250kHz,輸出200Hz</p><p> mov dx,233h</p><p> mov a1,74h</p><p><b> out dx,al</b></p><p&
73、gt; m- dx.231h</p><p> mov ax,1250</p><p><b> out dx,al</b></p><p><b> mov al,ah</b></p><p><b> out dx,al</b></p><p&
74、gt;<b> ;保存原中斷向量</b></p><p><b> a1,Obh</b></p><p><b> ah,35b</b></p><p><b> 21h</b></p><p><b> es bxds</b&g
75、t;</p><p> ︸︸int nush vushPush</p><p><b> ;設置新中斷向量</b></p><p> mov dx, offset intpro</p><p> mov ax,seg intpro</p><p><b> mov ds,ax&
76、lt;/b></p><p> mov a1,Obh</p><p> mov ah,25h</p><p><b> tm 21h</b></p><p><b> ;打開中斷屏蔽</b></p><p><b> Pop ds</b>
77、</p><p> in a1, 21h</p><p> And al, Of7h</p><p> out 21h,a1</p><p><b> sti;開中斷</b></p><p> ;等持按鍵,返回系統(tǒng)</p><p> wat: mov ah,l&
78、lt;/p><p><b> int lbh</b></p><p><b> jz wat</b></p><p><b> ;回復中斷向量</b></p><p><b> pop dx</b></p><p><b&
79、gt; pop ds</b></p><p> mov a1,Obh</p><p> mov ah,25h</p><p><b> int 21h</b></p><p> ;退出程序,返回系統(tǒng)</p><p> mov ax,4e00h</p><
80、p><b> In 21h</b></p><p><b> ,中斷一f程序:</b></p><p> ;完成時鐘處理、鍵盤監(jiān)控和顯示功能</p><p> tntpro proc near</p><p> push ds;保存寄存器</p><p>&l
81、t;b> push ax</b></p><p> push cx </p><p><b> ax</b></p><p> ax,d
82、ata;設置數(shù)據(jù)段和代碼段寄存器</p><p><b> ds,ax</b></p><p> ;不是修改狀態(tài)才走時鐘</p><p><b> nush</b></p><p> ;時鐘處理模塊,以5毫秒為單位調整時、分秒。</p><p> elk: inc
83、msec</p><p><b> nU</b></p><p><b> 魷、h</b></p><p> cn]nl m ml ad da mlcn]nl抑mI</p><p><b> add al,l</b></p><p><b&
84、gt; min,al</b></p><p><b> min,60h</b></p><p><b> daa﹄cmP</b></p><p><b> jne next</b></p><p><b> mov min,0</b>
85、</p><p> mov al,hour</p><p><b> add al,l</b></p><p><b> daa</b></p><p> mov hour,al</p><p> cmp hour,24h</p><p>&
86、lt;b> jne next</b></p><p> mov hour,0</p><p><b> ,鍵盤監(jiān)控模塊</b></p><p> next: dec agekey</p><p><b> jz nextl</b></p><p>
87、<b> jmp dsp</b></p><p> nextl: mov agekey,12</p><p> mov dx,223h;設置PA輸出,PB輸入</p><p> mov a1,82h</p><p><b> out dx,al</b></p><p&g
88、t; mov a1,0 ;A口輸出低電平,讀B口</p><p> mov dx,220h</p><p><b> out dx,al</b></p><p> mov dx,221h</p><p><b> in al,dx</b></p><p><b
89、> mov bh,al</b></p><p> mov dx,223h;設置PB輸出,PA輸入</p><p> mov a1,90h</p><p><b> out dx,al</b></p><p> mov al,() ;b</p><p> mov dx,
90、22lh</p><p><b> out dx,al</b></p><p> mov dx,220b</p><p><b> in al,dx</b></p><p> mov bl,al ;i?</p><p> and bx,7ffh;去除鍵碼中無用位數(shù)&
91、lt;/p><p> cmp bx,7ffh</p><p> jne keyon;有按鍵則進入按鍵處理</p><p> mov keyok,0;無按鍵則清除響應標志退出按鍵處理</p><p><b> jmp dsp</b></p><p> keyon: cmp. bx,oldkey
92、</p><p> je keyonl;已經(jīng)去抖動則直接處理按鍵</p><p> movagekey,4;有新按鍵則設置鍵齡退出中斷</p><p> mov keyok,0</p><p> mov oldkey,bx</p><p><b> imp dsp</b></p&g
93、t;<p> keyonl: cmp keyok,l</p><p> jne II;按鍵已響應則退出鍵盤處理</p><p><b> imp dsp</b></p><p> 11: mov keyok,l;設立按鍵響應標記</p><p><b> std</b><
94、;/p><p> lea di,keyend;指向鍵碼表</p><p> mov ax,bx;讀取鍵號,地址遞減,cx的值為鍵號</p><p><b> mov cx,17</b></p><p> repne scasw</p><p><b> je keyon2</
95、b></p><p><b> imp dsp</b></p><p> keyon2: mov keynum,cl;保存鍵號</p><p> cmp state,0;系統(tǒng)在修改態(tài)否?</p><p> jne keyon3;跳到修改態(tài)的處理</p><p> cmp keynu
96、m,0ah;為A鍵否</p><p><b> jne keyb</b></p><p> mov keymd,l;作a鍵修改標志</p><p> movhour,0aah沙時顯示為一</p><p> mov state,l;進入修改態(tài)</p><p><b> imp d
97、sp</b></p><p> keyb: cmp keynum,Obh;為B鍵否</p><p><b> jne keye</b></p><p> mov keymd,2;作b鍵修改標志</p><p> mov min,0aah;分鐘異示為..</p><p> mo
98、v state,l;進入修改態(tài)</p><p><b> imp dsp</b></p><p> keyc: cmp keynum,Och;為c鍵否</p><p><b> je keycl</b></p><p><b> imp dsp</b></p>
99、;<p> keycl: mov keymd,3;作c鍵修改標志</p><p> mov sec,0aah</p><p> mov state,l;秒顯示為..</p><p><b> imp dsp</b></p><p> keyon3: cmp keynum,9;在修改態(tài),判斷是否為數(shù)
100、字鍵</p><p> jbe keys ;<=9則認為是數(shù)字鍵</p><p> imp keyen;否則判斷是否為確定鍵</p><p> keyn: mov al,stime滋取輸入時間,十進制格式</p><p><b> mov c1,4</b></p><p> shl
101、 al,cl;在確定以前最后輸入的兩個十進制數(shù)有效</p><p> or al,keynum</p><p> mov stime,al</p><p><b> imp dsp</b></p><p> keyen: cmp keynum,Ofh;處理f鍵</p><p><b&
102、gt; je keyenl</b></p><p><b> imp dsp</b></p><p> keyenl: mov state,0;恢復到運行態(tài)</p><p> cmp keymd,l;將修改內容送小時單元</p><p> jne keyen2</p><p>
103、; mov keymd,0;清除修改小時標志</p><p> emp stime,24h;判斷輸入時間是否>=24</p><p><b> jb key-3</b></p><p> mov hour,0;大于24時,輸入為。</p><p> mov sdme,0;清除時間單元</p>
104、<p><b> imp dsp</b></p><p> key-3: mov al,stime</p><p> mov hour,al;小于24時,輸入設定時間</p><p> mov stime,0;清除時間單元</p><p><b> imp dsp</b><
105、;/p><p> key-2: -p keymd,2;將修改分鐘標志</p><p> jne keyen4</p><p> mov keymd,0;請除修改分鐘標志</p><p> cmp sfme,60h</p><p><b> jb keyen5</b></p>&
106、lt;p><b> mov min,0</b></p><p> mov stime,0</p><p><b> imp dsp</b></p><p> keyen5: mov al,stime</p><p> mov mfn,al</p><p>
107、mov stime,0</p><p><b> imp dsp</b></p><p> keyen4: cmp keymd,3;將修改秒</p><p><b> jne dsp</b></p><p> mov keymd,0</p><p> cmp sti
108、me,60h</p><p><b> j6 keyen6</b></p><p><b> mov sec,0</b></p><p> mov stime,0</p><p><b> imp dsp</b></p><p> keyen6
109、: mov al,stime</p><p> mov sec,al</p><p> mov stime,0</p><p><b> 顯示模塊</b></p><p> dsp: mov si,0;將時、分、秒信號拷貝到顯示緩沖區(qū)</p><p><b> mov c1,4
110、</b></p><p><b> mov ch,2</b></p><p> mov al,hour</p><p> lpl:rol al,cl</p><p><b> mov ah,al</b></p><p> and a1,Oflr</
111、p><p> mov 6u兀sii,al</p><p><b> mov al,ah</b></p><p><b> me m</b></p><p><b> dec ch</b></p><p><b> jaz lpl</
112、b></p><p><b> mov ch,2</b></p><p> mov al,mir</p><p> Ip2: rol al,cl</p><p><b> mov ab,al</b></p><p> and a1,Oflr</p>
113、<p><b> mov 6u幾si</b></p><p><b> mov al,ah</b></p><p><b> me s</b></p><p><b> dec ch</b></p><p><b> jn
114、z )p2</b></p><p><b> mov cb,2</b></p><p> mov al,sec</p><p> Ip3: rol al,cl</p><p><b> mov ah,al</b></p><p> and a1,Oflr
115、</p><p> mov bu兀si],al</p><p><b> mov al,ah</b></p><p><b> me勺</b></p><p><b> dec ch</b></p><p><b> jnz lp3&
116、lt;/b></p><p> mov cl,dex;顯示數(shù)碼管的某一位</p><p><b> mov al,l</b></p><p><b> rol al,cl</b></p><p> mov dx,210h</p><p><b> o
117、ut擊al</b></p><p><b> and ax,0</b></p><p> mov al,dex</p><p><b> mov si,ax</b></p><p> mov bl,buf]si]</p><p><b> mo
118、v bh,0</b></p><p> mov al,led[bx]</p><p> mov dx,211h</p><p><b> out dx;al</b></p><p><b> ine dex</b></p><p><b> e
119、mp dex,6</b></p><p><b> jne exit</b></p><p><b> mov dex,0</b></p><p> exit: mov. a1,20h</p><p> out 20h,a1</p><p><b&g
120、t; pop血</b></p><p><b> Pop cx</b></p><p><b> Pop ax</b></p><p><b> Pop ds</b></p><p><b> iret</b></p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
評論
0/150
提交評論