

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、<p><b> 目錄</b></p><p><b> 目錄1</b></p><p><b> 摘要1</b></p><p><b> 關(guān)鍵詞1</b></p><p><b> 第一章引言2</b>
2、;</p><p> 第二章 硬件系統(tǒng)設(shè)置3</p><p> 2.1 硬件系統(tǒng)原理圖3</p><p> 2.2 芯片資料介紹4</p><p> 2.2.1 8253芯片4</p><p> 2.2.1.1 8253內(nèi)部計數(shù)器的3個引腳4</p><p> 2.2.
3、1.2 8253的工作方式4</p><p> 2.2.1.3 8253的編程4</p><p> 2.2.2 8255芯片5</p><p> 2.2.2.1 連接外設(shè)的數(shù)據(jù)端口5</p><p> 2.2.2.2 8255工作方式5</p><p> 2.2.2.3 8255的編程
4、5</p><p> 2.2.3 8259芯片6</p><p> 2.2.3.1 8259的編程及操作方式6</p><p> 2.2.4 74ls240芯片7</p><p> 2.2.4.1 74ls240內(nèi)部結(jié)構(gòu)7</p><p> 2.2.4.2 芯片介紹7</p>
5、<p> 2.2.5 75452芯片7</p><p> 2.2.5.1 75452內(nèi)部結(jié)構(gòu)7</p><p> 2.2.5.2 芯片介紹8</p><p> 2.3 線路連線8</p><p> 2.3.1 實驗連線8</p><p> 2.3.2 時鐘脈沖的產(chǎn)生8<
6、;/p><p> 2.3.3 鍵盤的設(shè)置9</p><p> 2.3.4 LED顯示器的設(shè)置10</p><p> 第三章 軟件系統(tǒng)設(shè)置12</p><p> 3.1程序流程圖12</p><p> 3.1.1 主程序流程圖12</p><p> 3.1.2 ‘0’ 處
7、理流程圖(開始計時)13</p><p> 3.1.3 ‘1’處理流程圖(名次存儲)13</p><p> 3.1.4 ‘2’ 處理流程圖(顯示成績)14</p><p> 3.1.5‘3’處理流程圖(比賽結(jié)束1)15</p><p> 3.1.6 ‘4’處理流程圖(比賽結(jié)束2)15</p><p
8、> 3.1.7 中斷處理流程圖16</p><p> 3.2 參數(shù)信息17</p><p> 第四章 課程設(shè)計總結(jié)18</p><p> 4.1 心得體會18</p><p> 4.2 源程序清單19</p><p> 4.3 參考文獻25</p><p>&l
9、t;b> 摘要</b></p><p> 數(shù)字式秒表是一種用于體育中田徑比賽的一種計時裝置。</p><p> 本次課程設(shè)計是做一個數(shù)字式秒表,主要是利用8253作為定時器,為秒表提供定時脈沖,使用7段碼顯示器作為秒表時間顯示,用鍵盤控制秒表。 </p><p> 數(shù)字式秒表擁有以下幾點功能:</p><p> 1
10、:可控制比賽的開始和結(jié)束和繼續(xù)比賽;</p><p> 2:可記錄成績,依次排名,給予顯示在第一位;</p><p> 3:可通過按鍵關(guān)閉設(shè)備</p><p><b> 關(guān)鍵詞</b></p><p> 80X86,8259中斷,8255,8253,鍵盤,LED動態(tài)顯示 </p><p>
11、;<b> 引言</b></p><p> 微型計算機的新技術(shù)、新機型,新應用層出不窮,日新月異。使得微機硬件得到飛速發(fā)展!人們對計算機計算的精度和軟件的逐步更新提出更高的要求。</p><p> 秒表在我們的生活總運用比較廣泛,從各項體育賽事,到個人手機上的倒計時器,無處不在,怎樣提高其計算精度,提高運算效率成為首要因素,基于此,此次課設(shè)我們用匯編語言,利用8
12、086CPU和PCI試驗箱進行數(shù)字式秒表的制作,我們將從硬件系統(tǒng)設(shè)置、軟件系統(tǒng)設(shè)置、課設(shè)總結(jié)(包括匯編源代碼、硬件系統(tǒng)設(shè)置原理圖,參考文獻)幾方面介紹本次課設(shè)的主要成果。</p><p> 此課設(shè)主要利用8253的定時器輸出為秒表提供定時脈沖,7段碼顯示器作為秒表時間顯示,用鍵盤控制秒表的工作過程。鍵盤控制秒表計時的開始,記錄,結(jié)束,計時結(jié)束后按相應按鍵顯示所記錄的時間。計時范圍為1分鐘,滿1分鐘自動退出比賽,
13、計時精度為0.1秒。</p><p> 第一章為引言,粗略地介紹此次課設(shè)的主要內(nèi)容。</p><p> 第二章為硬件系統(tǒng)設(shè)置,在此章中從基本芯片入手,介紹8253、8255、8259的內(nèi)部結(jié)構(gòu)功能、工作方式以及初始化編程和74LS240P,75425N的真值狀態(tài),工作環(huán)境,以便讀者更容易了解此課設(shè)的基本部件,對硬件原理有逐步深入的了解。另外,從鍵盤和LED顯示器的設(shè)定的原理、編程進行詳
14、細的描述。</p><p> 第三章為軟件系統(tǒng)設(shè)置,在此章中我們從秒表的五大功能機制入手,軟件設(shè)置中,我們給出了主程序,中斷程序以及各功能模塊的程序流程圖,使之實現(xiàn)一目了然。此外,還給出了參數(shù)信息,增加了匯編源代碼的可讀性。</p><p> 第四章為課程設(shè)計總結(jié)。此部分包括心得體會,附錄1(匯編源代碼,)和附錄2(參考文獻)。</p><p> 在此課設(shè)中,
15、韓雁老師在硬件的檢測,軟件的設(shè)置方面都給出了精心的指點,在此表示衷心的感謝!</p><p> 第二章 硬件系統(tǒng)設(shè)置</p><p> 2.1 硬件系統(tǒng)原理圖</p><p> 此章節(jié)主要介紹硬件系統(tǒng)原理圖,其中鍵盤和顯示器在后面詳細介紹.</p><p> 數(shù)字式秒表系統(tǒng)構(gòu)成圖</p><p> 2.2 芯
16、片資料介紹</p><p> 此部分從芯片的工作方式以及初始化編程方面介紹8253、8255、8259芯片。</p><p> 2.2.1 8253芯片</p><p> 2.2.1.1 8253內(nèi)部計數(shù)器的3個引腳</p><p> CLK(時鐘)——輸入,在計數(shù)過程中,此引腳上每輸入1個時鐘信號(下降沿),減1計數(shù)器的計數(shù)值將
17、減1</p><p> GATE(門控)——輸入,控制計數(shù)器工作:</p><p> 軟件觸發(fā)時,作用開啟/關(guān)閉計數(shù):高電平允許,低電平禁止。</p><p> 硬件觸發(fā)/重觸發(fā):上升沿將初值送入減1計數(shù)器</p><p> OUT(計數(shù)器輸出)——輸出,根據(jù)設(shè)置工作方式的不同, OUT引腳可輸出單個或連續(xù)的波形信號。一般是在計數(shù)過程
18、結(jié)束時(計數(shù)值歸0),OUT引腳信號發(fā)生變化。</p><p> 2.2.1.2 8253的工作方式</p><p> 方式0 —— 計數(shù)結(jié)束中斷</p><p> 方式1 —— 可編程單穩(wěn)</p><p> 方式2 —— 連續(xù)負脈沖發(fā)生器</p><p> 方式3 —— 連續(xù)方波發(fā)生器</p>
19、<p> 方式4 —— 軟件觸發(fā)選通</p><p> 方式5 —— 硬件觸發(fā)選通</p><p> 本次課設(shè)中8253工作在方式3,此方式為可軟、硬件觸發(fā)的方波發(fā)生器,N=Fclk/Tclk,在本次設(shè)計中,F(xiàn)clK信號為1.193MHZ,輸出信號為100HZ,N為11930。其端口地址為40~43H,40H口用于計數(shù)器0,41H口用于計數(shù)器1,42H口用于計數(shù)器2,4
20、3H口用于狀態(tài)和控制口。</p><p> 2.2.1.3 8253的編程</p><p> 8253加電后的工作方式不確定,必須經(jīng)初始化編程后,才能正常工作</p><p><b> 初始化編程:</b></p><p><b> 先寫入控制字</b></p><p&
21、gt;<b> 再寫入計數(shù)初值</b></p><p> 工作后,可隨時讀取計數(shù)值</p><p> 一般先將計數(shù)值鎖存在通道內(nèi)的鎖存器中</p><p> 然后可分兩次讀取16位的計數(shù)值</p><p><b> 初始化程序片段:</b></p><p> Mo
22、v al,計數(shù)器控制字</p><p> Mov dx,控制寄存器端口</p><p> Out dx,al</p><p> Mov ax,計數(shù)器初值</p><p> Mov dx,計數(shù)器端口</p><p> Out dx,al ;寫計數(shù)器的初值低字節(jié)</p>
23、;<p> Mov al,ah </p><p> Out dx,al ;寫計數(shù)器計數(shù)初值高字節(jié)</p><p> 2.2.2 8255芯片</p><p> 2.2.2.1 連接外設(shè)的數(shù)據(jù)端口</p><p> 端口A:PA0-PA7 (A組控制)</p><p>
24、; 常作數(shù)據(jù)端口使用,功能最強大</p><p> 端口B:PB0-PB7 (B組控制)</p><p><b> 常作數(shù)據(jù)端口使用</b></p><p> 端口C:PC4-PC7 (A組控制), PC0-PC3 (B組控制)</p><p> 可作數(shù)據(jù)、狀態(tài)或控制端口使用可拆分成兩個4位端口分別輸入或輸出每
25、位可獨立進行輸出控制(位控制)</p><p> 2.2.2.2 8255工作方式</p><p> 方式0:基本輸入輸出方式(不帶聯(lián)絡(luò))</p><p> 適用于無條件傳送和查詢方式的接口電路</p><p> 方式1:選通輸入輸出方式(帶輸入聯(lián)絡(luò)或輸出聯(lián)絡(luò))</p><p> 適用于查詢和中斷方式的接口
26、電路</p><p> 方式2:雙向選通方式(同時帶輸入聯(lián)絡(luò)和輸出聯(lián)絡(luò))</p><p> 適用于可雙向傳送數(shù)據(jù)的外設(shè),適用于查詢和中斷方式的接口電路</p><p> 2.2.2.3 8255的編程</p><p> 編程:只寫 1 個方式控制字到控制口。</p><p> D7:方式字/復位字選擇位,‘
27、1’時為8255A方式控制字,‘0’時為PC口的置/復位控制字,當D7為‘1’時,其余各位的含義為:</p><p> D6~D5:A組選擇方式選擇位。‘00’為方式0,‘01’為方式1,‘10’為方式2。</p><p> D2:B組方式選擇位?!?’為方式0,‘1’為方式1.</p><p> D4、D3、D1、D0:分別為PA口、PC7~PC4口、PB口
28、、PC3~PC0口輸入/輸出方式選擇位?!?’為輸出,‘1’為輸入。</p><p> 工作過程中:通過數(shù)據(jù)端口對外設(shè)數(shù)據(jù)進行讀寫</p><p> 本次課設(shè)8255均工作在方式0,其把PA口、PB口和PC口的高4位、低4位都作為基本輸入/輸出口,可以獨立地設(shè)置為輸入或輸出方式。</p><p><b> 初始化程序片段:</b><
29、/p><p> Mov al,方式選擇控制字</p><p> Mov dx,端口號 ;如果端口號>256,所以用dx間接尋址</p><p> Out dx,al ;寫入控制寄存器</p><p> 2.2.3 8259芯片</p><p> 2.2.3
30、.1 8259的編程及操作方式</p><p><b> 初始化編程</b></p><p> 在8259開始工作前:</p><p> 用戶必須對8259A進行初始化編程。通過寫入初始化命令字ICW對8259A進行初始化</p><p><b> 中斷操作編程</b></p>
31、<p> 在8259A工作期間:</p><p> 可以隨時向8259A寫入操作命令字OCW,使之按用戶設(shè)置的新的工作方式進行工作</p><p> ,用戶還可以通過寫操作命令字OCW通知8259A</p><p><b> 操作方式編程</b></p><p> OCW1,其格式為:</p
32、><p> OCW1也可稱為屏蔽操作字,其被寫入8259內(nèi)部的中斷屏蔽寄存器IMR。OCW1的8位與IR0~IR7相對應,當其某一位為1時,即相應IR上的輸入信號被屏蔽。IMR中的內(nèi)容在任何時候都可讀出或?qū)懭?,只要訪問奇口地址。</p><p> OCW2,其用于設(shè)置中斷結(jié)束方式和優(yōu)先級循環(huán)方式。其格式為:</p><p> OCW3,其用于設(shè)置特殊中斷屏蔽方式和
33、程序查詢方式、讀狀態(tài)方式。其格式為:</p><p><b> 初始化程序片段:</b></p><p> Mov al,00010101B ;ICW1,邊沿觸發(fā),要ICW4,級聯(lián)要ICW3</p><p> Out 20h,al ;寫入ICW1</p><p> Mov
34、 al,00001000B ;ICW2:設(shè)置ir0中斷類型號</p><p> Out 21h,al ;寫入ICW2</p><p> Mov al,00000101B ;ICW3:主片8259A的IR2接從片INT</p><p> Mov al,00000101B ;ICW4:不用緩沖,
35、正常中斷結(jié)束,非特殊全嵌套方式</p><p> Out 21h,al ;寫入ICW4</p><p> 2.2.4 74ls240芯片</p><p> 2.2.4.1 74ls240內(nèi)部結(jié)構(gòu)</p><p> 74ls240內(nèi)部結(jié)構(gòu)</p><p> 2.2.4.2 芯片
36、介紹 </p><p><b> 真值表</b></p><p> 正常工作溫度及其壓值:25℃,5V,工作電流-15MA,24MA</p><p>
37、 溫度范圍:-25-75℃,在此課設(shè)中用作反向驅(qū)動器,增大輸出電流。</p><p> 2.2.5 75452芯片</p><p> 2.2.5.1 75452內(nèi)部結(jié)構(gòu)</p><p> 2.2.5.2 芯片介紹</p><p><b> 真值表</b></p><p> 正常工作
38、壓值范圍:4.75-5.25V.工作電流400MA,500MA</p><p> 正常工作溫度范圍:0-70℃,在此課設(shè)中用作反向驅(qū)動器。</p><p><b> 2.3 線路連線</b></p><p> 此部分從實驗連線,時鐘脈沖,鍵盤和LED顯示詳細介紹硬件部分的工作原理。</p><p> 2.3.1
39、 實驗連線</p><p> 8255模塊的SWR、SRD分別連到ISA總線接口模塊的IOWR、IORD。</p><p> 8255模塊的數(shù)據(jù)(AD0~AD7)、地址線(A0~A7)分別連到ISA總線接口模塊的數(shù)據(jù)(LAD0~QD7)、地址線(LA0~LA7)。</p><p> 8255模塊選通線CE連到ISA總線接口模塊的IOY0。</p>
40、<p> 8255的PA0~PA7連到鍵盤顯示模塊的KD0~KD7;8255的PB0~PB3連到鍵盤顯示模塊的KL1~KL4;8255的PC0~PC3連到鍵盤顯示模塊KH1~KH4。</p><p> 2.3.2 時鐘脈沖的產(chǎn)生</p><p> 8253的D7到D0接總線上,gate端接高電平,out0接8259的IR0,通過次部分可以產(chǎn)生100hz的信號,具體連線如
41、下圖:</p><p><b> 時鐘脈沖產(chǎn)生示意圖</b></p><p> 2.3.3 鍵盤的設(shè)置</p><p> 鍵盤的接口一般分為獨立式和矩陣式。</p><p> 獨立式按鍵就是各按鍵相互獨立、每個按鍵各接一根輸入線,一根輸入線上的按鍵是否按下不會影響其他輸入線上的工作狀態(tài)。因此,通過檢測輸入線的電
42、平狀態(tài)可以很容易判斷哪個按鍵被按下了。獨立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。但每個按鍵需占用一根輸入線,在按鍵數(shù)量較多時,輸入口浪費大,電路結(jié)構(gòu)顯得很繁雜。故此種鍵盤適用于按鍵較少或操作速度較高的場合。若采用此方式,,各按鍵開關(guān)均采用上拉電阻,這是為了保證在按鍵斷開時,各IO口線有確定的高電平。當然如輸入口線內(nèi)部已有上拉電阻,則外電路的上拉電阻可省去。</p><p> 矩陣式鍵盤適用于按鍵數(shù)量較多的場合,它由
43、行線和列線組成,按鍵位于行、列的交叉點上,一個4*4的行、列結(jié)構(gòu)可以構(gòu)成一個含有16個按鍵的鍵盤。很明顯,在按鍵數(shù)量較多的場合,矩陣鍵盤與獨立式按鍵鍵盤相比,要節(jié)省很多的I/O口。行、列線分別接到按鍵的兩端。行線通過上拉電阻接到+5V上。平時無按鍵時,行、列線處于高電平狀態(tài),而當有鍵按下時,行、列線將導通,因此行線電平狀態(tài)將由與此行線相連的列線電平?jīng)Q定。按鍵的識別在此課設(shè)中采用掃描法。讓所有的列線處于低電平,當有鍵按下時,按鍵所在的行電
44、平將被拉成低電平,根據(jù)此行電平的變化,便能判定此行有鍵被按下。為了進一步判定到底哪一列的鍵被按下,可在某一時刻只讓一條列線處于低電平,而其余所有列線處于高電平。</p><p><b> 鍵盤接線圖</b></p><p><b> 鍵盤掃描程序:</b></p><p> prog: mov bl,0
45、 ;鍵號的初值為0 </p><p> mov cl,0efh ;送掃描初值</p><p> mov dl,4 ;計數(shù)值為行數(shù)</p><p> frow: mov al,cl ;掃描一行</p><p> mov dx,protc </p>&l
46、t;p> rcl al,1 ;修改行掃描</p><p> mov cl,al ;讀列線無效,判別是否有列線為低</p><p> in al,dx</p><p> and al,0fh</p><p> cmp al,0fh</p><p>
47、 jnz fcol ;有列線為低電平,則轉(zhuǎn)fcol</p><p> mov al,bl ;沒有則使鍵號寄存器的值=鍵號值+列數(shù)/行數(shù)</p><p> add al,4 </p><p> mov bl,al</p><p> dec dl ;行
48、未掃描完,則轉(zhuǎn)frow</p><p> jnz frow </p><p> jmp down ;已掃描完,則轉(zhuǎn)down</p><p> fcol: or al,0f0h ;此列為低電平,則轉(zhuǎn)proce</p><p> rcr al,1 </p&g
49、t;<p> jnc proce</p><p> inc bl ;如果未找到低電平的列線,則使鍵號=鍵號+1,轉(zhuǎn)fcol繼續(xù)</p><p> proce: …… ;鍵命令處理程序</p><p><b> ……</b></p><p> D
50、own:……. ;后續(xù)處理程序 </p><p> 2.3.4 LED顯示器的設(shè)置</p><p> LED是7段碼顯示,并且是共陰的,將8255的PA0-PA7接到鍵盤顯示單元的KD0-KD7,PC0-PC3接到KH1-KH4,通過次部分可讓LED動態(tài)顯示相應的信息。</p><p><b>
51、 LED顯示器原理圖</b></p><p> 八位LED顯示程序:</p><p> Led: mov di,offset buffdata ;指向緩沖區(qū)首地址</p><p> Mov cl,80h ;使最左邊LED亮</p><p> Disi: mov bl,
52、[di+1] ;bl中為要顯示的數(shù)</p><p><b> Push bx</b></p><p><b> Pop ax</b></p><p> Mov bx,offset table ;段表首址送bx</p><p> Xlat
53、 ;段碼送al</p><p> Mov dx,porta ;段碼送段控端口porta</p><p> Out dx,al </p><p> Mov al,cl ;位掃描碼送為控端口portb</p>
54、;<p> Mov dx,portb </p><p> Out dx,al ;保存位掃描碼</p><p> Push cx ;延時</p><p> Mov cx,30h</p><p> Delay: loop
55、delay</p><p><b> Pop cx</b></p><p> Cmp cl,01 ;顯示掃描到最右邊LED碼?</p><p> Jz quit ;是,則已顯示一遍,退出</p><p> Inc di
56、 ;否,則指向下一位LED</p><p> Shr cl,1 ;位碼指向下一位</p><p> Jmp disi ;顯示下一位LED</p><p> Quit : ret</p><p> Table: db c0
57、h,…,8eh ;0~F的段碼</p><p> Buffdata: db 8dup(?) ;8個字節(jié)的緩沖區(qū)</p><p> 此課設(shè)使用共陰結(jié)構(gòu),陰極控制端為低電平,數(shù)碼顯示短輸入高電平時發(fā)亮。</p><p> 顯示器的工作方式有靜態(tài)顯示和動態(tài)顯示。所謂靜態(tài)顯示,就是當顯示器顯示某一個字符時
58、,相應的二極管恒定地導通或截止。優(yōu)點是顯示穩(wěn)定,在發(fā)光二極管導通電流一定的情況下顯示器的亮度大,在系統(tǒng)運行過程中,僅在需要更新顯示內(nèi)容時CPU才執(zhí)行一次顯示更新子程序,大大節(jié)省了CPU的時間,提高CPU的利用率。</p><p> 所謂動態(tài)顯示,就是一位一位地輪流點亮各位顯示器,對于每一位顯示器來說,每隔一段時間點亮一次。顯示器的亮度與導通電流有關(guān),也與點亮時間和間隔時間的比例有關(guān)。調(diào)整電流和時間參數(shù),可實現(xiàn)亮
59、度較高比較穩(wěn)定的顯示。此課設(shè)中使用的是動態(tài)顯示,8255的A口作為掃描口,經(jīng)反向驅(qū)動器75452接顯示器公共極,B口作為數(shù)據(jù)口,接到顯示器的各個段。</p><p> 第三章 軟件系統(tǒng)設(shè)置</p><p><b> 3.1程序流程圖</b></p><p> 此部分包括主程序,0處理流程圖,1處理流程圖,2處理流程圖,3處理流程圖,4處理
60、流程圖,中斷處理流程圖以及軟件設(shè)置各模塊能實現(xiàn)的功能。</p><p> 3.1.1 主程序流程圖</p><p> 該功能塊的主要作用:清顯示緩沖區(qū),使LED顯示燈開始顯示時值全為“0”,設(shè)置標志單元的值。</p><p> 3.1.2 ‘0’ 處理流程圖(開始計時) </p><p> 3.1.3 ‘1’處理流程圖(名次存儲
61、) </p><p> N </p><p><b> Y</b>
62、</p><p><b> N</b></p><p> Y </p><p> 1功能塊:是記錄成績,當將按下2鍵時將LED燈顯示的時間存儲起來,并將該成績的名次存儲起來。首
63、先讀標志單元,根據(jù)相應單元的值來判斷是否繼續(xù)執(zhí)行。若可繼續(xù)執(zhí)行則將當前的成績和名次存儲,然后將名次變量加1。為了判斷是否記錄滿8個成績,還需設(shè)置了一個記錄標志,用于記錄當前已記錄了幾個成績,若記錄滿8個,則清除可存儲標志位,再按1</p><p> 鍵就不能再記錄數(shù)據(jù)了。</p><p> 3.1.4 ‘2’ 處理流程圖(顯示成績) </p><p><
64、b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p> 2功能塊:首先讀取標志單元的信息,檢查其是否符合條件,若符合條件則取記錄數(shù),再將對應數(shù)據(jù)輸出顯示,這
65、里要建立了一個標志單元用來記錄當前以經(jīng)顯示過的記錄數(shù),每輸出一個記錄,該標志單元就加一,然后與總記錄數(shù)比較,若超過總記錄數(shù)則將該標志單元清零。</p><p> ‘3’處理流程圖(比賽結(jié)束1)</p><p> 3功能塊:退出返回DOS需要復原中斷矢量,若不復原中斷矢量,可能會發(fā)生不可預料的錯誤,8259關(guān)中斷,cpu關(guān)中斷,關(guān)閉程序。</p><p> 3.
66、1.6 ‘4’處理流程圖(比賽結(jié)束2)</p><p> 4功能塊: 1.比賽結(jié)束將標志單元的D0位(比賽開始/結(jié)束位)和D2位(可否存儲成績位)均置“0”,清空所有標志,代表比賽結(jié)束</p><p> 2.顯示停止,并顯示最后一次顯示的內(nèi)容。</p><p> 3.1.7 中斷處理流程圖</p><p><b> N
67、</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</b></p><p><b> N</b></p><p><b> Y</
68、b></p><p><b> N</b></p><p><b> Y</b></p><p> 中斷處理程序在該設(shè)計中是很的重要的,數(shù)字式秒表時間的走動、鍵盤掃描過程中對按鍵功能的執(zhí)行都要通過中斷程序來實現(xiàn)。</p><p> 首先進入中斷程序就要保護現(xiàn)場, 這一點是至關(guān)重要的。若
69、不保護CPU當前的執(zhí)行狀態(tài),當中斷程序返回時,CPU有可能處在錯誤的狀態(tài)。應通過一系列推入堆棧指令來保護中斷時的現(xiàn)場。</p><p> 主程序的初始化中設(shè)置了中斷的頻率為每隔0.01秒發(fā)生一次,而我們要的精度是0.1秒。用count單元來記錄是否到0.1秒,將count單元的值和10比較,到10則為0.1秒,否則count值加1。秒單元值的變化與此類似,當0.1秒單元值為10時,秒低位單元的值才加1;當秒低位
70、單元的值為10時,秒高位單元值才加1,當秒高位單元值為6時應清零。計時滿1分鐘時自動結(jié)束,在秒高位單元清零時還應將D0(比賽開始/結(jié)束位)和D2(是否可存儲位)清零。</p><p><b> 3.2 參數(shù)信息</b></p><p> inttype 定義8號中斷</p><p> p8253ctr1 定義8253控制
71、口</p><p> p8253ctr0 定義8253計數(shù)器1的端口</p><p> p8255ct1 定義8255控制端口</p><p> cnt1定義8253的初值(用于產(chǎn)生100HZ的信號)</p><p> display 定義顯示提示信息</p><p>
72、asctab 定義一張表,用于顯示鍵盤輸入的顯示</p><p> count定義計數(shù),用于0.1秒計一個數(shù)</p><p> buff定義顯示緩沖期,并給顯示緩沖器定義初值為0</p><p> mc 定義一個存儲空間,用于記錄8個選手的成績和名次</p><p> bit
73、定義位選信號</p><p> desg 定義一張共陽的LED表</p><p> flag 定義標識符flag</p><p> point dw str 將地址傳給指針point</p><p> mess 顯示桌面</p><
74、p> 第四章 課程設(shè)計總結(jié)</p><p><b> 4.1 心得體會</b></p><p> 本次課程設(shè)計從總體上來說是對芯片8253、8255,8259的應用。8253用來產(chǎn)生產(chǎn)生時鐘脈沖;8255是一個并口,連接控制LED顯示器和鍵盤,8259是用來產(chǎn)生中斷。</p><p> 8253產(chǎn)生產(chǎn)生時鐘脈沖,并每0.1s給82
75、59產(chǎn)生一次中斷,通過CPU產(chǎn)生中斷響應,并掃描鍵盤,如果有鍵按下,則按照響應的情況來判斷是否在中斷中進行計數(shù),如果是0鍵按下,則開始計數(shù),計數(shù)的時候?qū)㈨憫淖址數(shù)斤@示緩沖器,并同過8255并口,動態(tài)的顯示在LED上;如果是M鍵盤按下,仍舊計數(shù),并通過一個指針將當前的數(shù)值傳到mc相應的單元中,并進行count計數(shù),判斷其是否超出限制,如果超出限制則停止計數(shù),如果沒有超出限制則進行計數(shù);如果是P鍵按下,中斷中跳過計數(shù)部分,并將相應要顯示
76、的內(nèi)容從mc中輸出到顯示緩沖區(qū),按照一個指針來循環(huán)顯示要顯示的內(nèi)容;如果按下的是4鍵,則表示比賽結(jié)束,將所有的標志單元都清空,中斷中也跳過計數(shù)部分,輸出停留在最后顯示的內(nèi)容上;如果按下的是3鍵,則表示整個程序的運行結(jié)束,8259關(guān)中斷,CPU關(guān)中斷。</p><p> 在程序中多次用到壓棧,彈出操作,目的是在中斷程序執(zhí)行前將所有中斷程序中用到的寄存器都入棧,在中斷結(jié)束之前都要將剛才入棧的寄存器出棧,在程序中多次
77、用到延時程序,在沒個高速設(shè)備相低速設(shè)備輸出的時候都要進行延時,在掃描鍵盤中,我們在按鍵按下的時候和按鍵釋放的時候都進行了延時,確保按鍵的有效性和按鍵抖動的濾去。在顯示單元我們用到動態(tài)顯示的方法,既可以減少線路上的成本也可以提高資源的有效利用,我們將8255的A口用于顯示字符,8255的C口用于位選,選擇哪個LED將顯示數(shù)據(jù)。鍵盤單元中,我們也是使用8255來作為控制的接口,共用了8255的C口來輸出,8255的B口用來讀取,兩個口一起工
78、作來定位鍵盤上哪個鍵被按下。最終的課程設(shè)計能達到最初設(shè)定的目標。</p><p> 在課程設(shè)計前幾天,我們組先用LED顯示、鍵盤控制8259A中斷三個程序?qū)ξ覀兊膬x器箱進行了初步檢測。在確認無誤后,對三條程序進行累加,然后對五個功能鍵進行分別設(shè)定,反復調(diào)試、編譯、鏈接,在老師的精心指導下完成了此次課程設(shè)計,在此再次表示衷心的感謝!</p><p> 4.2 源程序清單</p&g
79、t;<p> inttype equ 08h ;定義8號中斷</p><p> p8253ctrl equ 43h ;定義8253控制口</p><p> p8253cto equ 40h ;定義8253計數(shù)器
80、1的端口 </p><p> p8255ctl equ 0c803h ;定義8255控制端口</p><p> cnto equ 11930 ;用來計算頻率</p><p> .model small
81、 ;定義為小模式</p><p> .data ;數(shù)據(jù)段</p><p> str db 36 dup (?) ;定義一個數(shù)組存放前八個成績</p><p> flag db 0
82、 ;定義標志位</p><p> mc db 1 ;定義存放名次</p><p> num db 1 ;定義名次</p><p> count db 0
83、 ;定義計數(shù),用于0.1秒計一個數(shù)</p><p> point dw str ;定義指針</p><p> point2 dw str ;定義指針</p><p> buff db 0,0,0,0
84、 ;定義顯示緩沖區(qū),用于顯示鍵盤輸入的顯示</p><p> buff2 db 0,0,0,0 ;定義顯示緩沖區(qū),用于顯示鍵盤輸入的顯示</p><p> bit db 1 ;定義位選信號</p><p>
85、mess db '0-開始比賽 1-記錄成績 2-顯示成績 3-退出返回DOS 4-結(jié)束比賽 :',0dh,0ah,'$'</p><p> dseg db 0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h </p><p> asctab db "0123456789ABCDEF" <
86、;/p><p> .code ;代碼段</p><p> mov ax,@data ;段地址初始化</p><p> mov ds,ax </p><p> mov ah,9
87、 ;9號調(diào)用,用于顯示提示信息</p><p> lea dx,mess ;將mess的偏移量送給dx</p><p> int 21h ;顯示提示信息</p><p> mov al,36h
88、 ;寫8253方式字</p><p> mov dx,p8253ctrl</p><p><b> out dx,al</b></p><p> mov ax,cnto </p><p> mov dx,p8253cto ;寫初值</p><p&g
89、t; out dx,al ;先寫低位</p><p><b> mov al,ah</b></p><p> out dx,al ;再寫高位</p><p> mov al,81h
90、 ;8255初始化</p><p> mov dx,p8255ctl ;將方式字輸出到8255控制口</p><p><b> out dx,al</b></p><p> mov al,inttype ;DOS調(diào)用,讀取中斷向量</p>
91、<p> mov ah,35h ;es:bx=中斷向量 </p><p><b> int 21h</b></p><p><b> push es</b></p><p> push bx ;
92、將cpu自己的8號中斷向量保護 </p><p><b> push ds</b></p><p> mov ax,@data ;初始化</p><p><b> mov es,ax</b></p><p> mov dx,offset int
93、p ;取intp的偏移量 </p><p> mov ax,seg intp ;取intp的段地址</p><p><b> mov ds,ax</b></p><p> mov al,inttype ;設(shè)置inttp
94、ye的新中斷向量</p><p> mov ah,25h ; ES:BX=中斷向量</p><p><b> int 21h</b></p><p> pop ds ;ds出棧</p><p> in
95、al,21h ;CPU開中斷(開IR0)</p><p> and al,0feh</p><p> out 21h,al</p><p><b> sti</b></p><p> ab: call button
96、 ;鍵盤調(diào)用</p><p> cmp al,'3' ;判斷是否按下3號鍵</p><p> jz rp ;如果是則轉(zhuǎn)向rp</p><p> cmp al,'1'
97、 ;判斷是否按下3號鍵</p><p> jz mp ;如果是則轉(zhuǎn)向mp</p><p> cmp al,'4' ;判斷是否按下4號鍵</p><p> jz ap
98、 ;如果是則轉(zhuǎn)向ap</p><p> cmp al,'2' ;判斷是否按下2號鍵</p><p> jz pp ;如果是則轉(zhuǎn)向pp</p><p> cmp al,2 ;
99、判斷是否按下3號鍵</p><p> jnz ab ;如果是則轉(zhuǎn)向ab</p><p> OR flag,05h ;如果按鍵為2,則標志位最后一位為1</p><p><b> jmp ab</b></p><
100、p> mp: test flag,04h ;存儲代碼 </p><p><b> jz ab</b></p><p><b> mov al,mc</b></p><p> mov buff,al ;將第一位
101、的名次先放到buff,然后放到數(shù)組</p><p> lea si,buff</p><p> mov di,point</p><p><b> mov cx,4</b></p><p><b> cld</b></p><p><b> rep mov
102、sw</b></p><p> cmp mc,8 ;名次到了8,標志位清0</p><p> jz go ;轉(zhuǎn)向go段程序</p><p> inc mc ;inc自加&l
103、t;/p><p> add point,4</p><p><b> jmp ab</b></p><p> go: and flag,0fah</p><p> lea bx,str</p><p> mov point,bx</p><p><b>
104、; jmp ab</b></p><p> pp: and flag,0feh</p><p> cmp num,9 ;判斷是否按過8次,如果不是則退出</p><p><b> jz ab</b></p><p><b> in
105、c num</b></p><p> lea di,buff</p><p> mov si,point2</p><p><b> mov cx,4</b></p><p><b> cld</b></p><p><b> rep movs
106、w</b></p><p> add point2,4</p><p><b> jmp ab</b></p><p> ap: push bx</p><p> and flag,0 ;對標志位和名次及num進行初始化</p>
107、<p> mov mc,1 ;名次置1</p><p> mov num,1 ;計數(shù)置1</p><p> lea bx,str </p><p> mov point,bx</p><p> mov point2
108、,bx</p><p> mov buff,0 ;將1位顯示器緩沖器置0</p><p> mov buff+1,0 ;將2位顯示器緩沖器置0</p><p> mov buff+2,0 ;將3位顯示器緩沖器置0&
109、lt;/p><p> mov buff+3,0 ;將4位顯示器緩沖器置0</p><p><b> pop bx</b></p><p><b> jmp ab</b></p><p> rp: cli</p><p>
110、;<b> pop dx </b></p><p><b> pop ds</b></p><p> mov al,inttype </p><p> mov ah,25h</p><p> int 21h ;dos調(diào)用</p
111、><p> mov ah,4ch ;帶返回碼終結(jié)程序</p><p> int 21h ;主程序結(jié)束</p><p> intp: push si ;將ax、bx、dx、si、cx入棧,保護cpu
112、現(xiàn)場</p><p><b> push di</b></p><p><b> push ax</b></p><p><b> push bx</b></p><p><b> push cx</b></p><p>&
113、lt;b> push dx</b></p><p> test flag,01h ;判斷標志位D0是否為1,為1則開始,否則不計數(shù)</p><p><b> jz iexit</b></p><p> inc count
114、 ;次數(shù)加1</p><p> cmp count,10 ;將count與10比較</p><p> jnz iexit ;若count不等于10,則轉(zhuǎn)iexit</p><p> mov count,0 ;否
115、則count置0</p><p> inc buff+3 ;秒的那位加1</p><p> cmp buff+3,10 ;將秒的那位與10比較</p><p> jnz iexit ;若秒的那位不等于10,則轉(zhuǎn)
116、iexit</p><p> inc buff+2 ;否則向秒的高位進1</p><p> mov buff+3,0 ;秒位置0</p><p> cmp buff+2,10 ;秒的高位與10比較</p>
117、<p> jnz iexit ;不為10則轉(zhuǎn)iexit</p><p> inc buff+1 ;否則分位加1</p><p> mov buff+2,0 ;秒的高位置0</p><p> c
118、mp buff+1,6 ;秒位與6比較</p><p> jnz iexit ;若不等則轉(zhuǎn)iexit</p><p> mov buff+1,0 ;分位置1</p><p> and flag,0feh
119、 </p><p> iexit: lea bx,dseg ;去數(shù)據(jù)表的首地址</p><p> lea si,buff ;取緩沖區(qū)的首地址</p><p> agi: mov al,[si]
120、 ;將si的內(nèi)容送給al</p><p> xlat ;將ASCⅡ碼轉(zhuǎn)換成數(shù)據(jù)</p><p><b> mov ah,al</b></p><p> mov dx,0c801h</p><p> mov al,bit&
121、lt;/p><p> out dx ,al</p><p> cmp al,04h ;判斷是否為第二位,是則加點,否則繼續(xù)</p><p><b> jnz q1</b></p><p> and ah,7fh</p><p> q1:
122、 mov dx,0c800h ;取相應的段和位</p><p><b> mov al,ah</b></p><p><b> out dx,al</b></p><p><b> mov di,30</b></p><p>
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 微機原理與接口技術(shù)課程設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計.
- 微機原理與接口技術(shù)課程設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計報告
- 微機接口技術(shù)課程設(shè)計
- 微機接口技術(shù)課程設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計--流水燈
- 微機接口技術(shù)課程設(shè)計--數(shù)字存儲示波器設(shè)計
- 微機原理與接口技術(shù)課程設(shè)計----數(shù)字信號發(fā)生器
- 微機原理與接口技術(shù)課程設(shè)計-交通燈
- 紅外通信-微機原理與接口技術(shù)課程設(shè)計報告
- 微機原理與接口技術(shù)課程設(shè)計 --存儲器
- 微機原理與接口技術(shù)課程設(shè)計報告書
- 《微機原理與接口技術(shù)》課程設(shè)計
- 微機接口技術(shù)課程設(shè)計報告
- 微機原理與接口技術(shù)課程設(shè)計-----交通燈設(shè)計
- 電子表設(shè)計(微機原理與接口技術(shù)課程設(shè)計)
- 微機原理與接口技術(shù)課程設(shè)計報告——電子琴
- 單機微機原理與接口技術(shù)課程設(shè)計實驗報告
評論
0/150
提交評論