(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)_第1頁
(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)_第2頁
(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)_第3頁
(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)_第4頁
(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)_第5頁
已閱讀5頁,還剩81頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、(時(shí)間管理)測試反應(yīng)時(shí)間模擬系統(tǒng)86 / 86測試反應(yīng)時(shí)間模擬系統(tǒng)摘要隨著電子技術(shù)的飛速發(fā)展,微型計(jì)算機(jī)已經(jīng)全面滲透了人類生活各領(lǐng)域,且革命性地改變著人們的生活。因此,能夠說了解微型計(jì)算機(jī)的基本工作原理對于每個(gè)人均十分必要。而對于即將從事電子行業(yè)的工作者來說,熟悉掌握微機(jī)原理且于其上進(jìn)行軟硬件的開發(fā)設(shè)計(jì)則是壹項(xiàng)必須掌握的基本技能。為此,于學(xué)習(xí)微型計(jì)算機(jī)技術(shù)以及其應(yīng)用的過程中,我設(shè)計(jì)了壹個(gè)能測試人體反應(yīng)時(shí)間的模擬系統(tǒng)。該系統(tǒng)以 8088 微處理器為核心,結(jié)合 8255 可編程且行通信接口、8253 可編程定時(shí)/計(jì)數(shù)器、8259 中斷控制器等芯片以及 LED 等輔助電路,來測試人的反應(yīng)時(shí)間,且將其

2、反映于數(shù)碼管上。通過此儀器不僅能夠真實(shí)地測試ft人的反應(yīng)時(shí)間, 而且仍能夠鍛煉和提高個(gè)人對外界突發(fā)事件的處理能力。關(guān)鍵詞:反應(yīng)時(shí)間、8086/8088、匯編、8255simulationsystemoftestingreactiontimeAbstractWiththerapiddevelopmentofelectronictechnology,themicro-computerha simpactedonalmosteveryareaofhumanlifeandmakesthepeoplesliveschangin grevolutionary.So,itsverynecessarytoun

3、derstandthebaseworkingprincip leofmicro-computer.Computerprincipleandhowtodosomehardwareandsoftware developmentonthecomputershouldbemasteredbythepeoplethatwillworkinthef ieldofelectronicsindustry.Forthisreason,duringstudyingmicro-computert echnologyanditsapplication,asystemusedtotestapersonsreaction

4、timeisd eveloped.Thesystemtakesthe8088microprocessorasacoreandcombinesIntegra tedCircuitssuchas8255ProgrammableParallelInterface,8253ProgrammableIn tervalTimer,8259AProgrammableInterruptControllerandetc,whichteststher eactiontimeanddisplaysitontheLED.Thisequipmentcannotonlytestthereacti ontimecorrec

5、tly,butalsoimprovethehandlingcapacityofsuddeneventsoftheo utsideworldbytraining.Keywords:reactiontime;8086/8088、assemblelanguage、8255目錄摘要I AbstractII目錄III1 .前言12 . 設(shè) 計(jì) 方 案 論證22.1概述22 . 2 本 設(shè) 計(jì) 使 用 的 設(shè) 備 介紹22.2.1TDN86/88+系統(tǒng)簡介22 . 3 設(shè) 計(jì) 原 理 和 方法32 . 3 . 1 設(shè) 計(jì) 原理32 . 3 . 2 設(shè) 計(jì) 方法42 . 3 . 3 程 序 流 程 圖 及

6、其 問題43 .本設(shè)計(jì)中各芯片的工作原理及編程 1 33.1本設(shè)計(jì)中8255A芯片的工作原理 1 3 3.1.18255A的內(nèi)部結(jié)構(gòu)1 33.1.28255A的控制字及工作方式 1 43.1.3本設(shè)計(jì)中8255A的應(yīng)用編程 1 43 . 2本 設(shè) 計(jì) 中8 2 5 9 A芯 片 的 編 程 結(jié) 構(gòu) 和 應(yīng) 用 編程153.2.18259A的編程結(jié)構(gòu)1 53.2.28259A初始化流程圖 1 63.2.3本設(shè)計(jì)中8259A的應(yīng)用編程 1 73 . 3本 設(shè) 計(jì) 中8 2 5 3 A芯 片 的 工 作 方 式 和 應(yīng) 用 編程18 3.3.18253的工作 方式1 83.3.2本設(shè)計(jì)中8253的應(yīng)

7、用編程 1 94 . 調(diào) 試 過 程 和 總結(jié)2 04 . 1 程 序 的 調(diào) 試 過程2 04 . 2 硬 件 的 調(diào) 試 過程2 84.3總結(jié)29致謝30參考資料 31附 錄 壹 : 測 試 反 應(yīng) 時(shí) 間 模 擬 系 統(tǒng) 總 電 路圖 3 2 附 錄 二 : 測 試 反 應(yīng) 時(shí) 間 模 擬 系 統(tǒng) 程序 3 3 附 錄 三 : 硬 件 實(shí) 物 圖 及 實(shí) 物 和 T D N 8 6 / 8 8 + 系 統(tǒng) 的 連 接圖 4 51.前言近幾十年來,微型計(jì)算機(jī)的應(yīng)用已經(jīng)全面滲透進(jìn)人類生活的各個(gè)角落,大到航空航天領(lǐng)域,小至嵌入式家庭用器,無處不見其蹤影,無處不讓人深刻感受到其對人類生活的革命性

8、變革。本設(shè)計(jì)是壹個(gè)能測試人體反應(yīng)時(shí)間的系統(tǒng),該系統(tǒng)能夠應(yīng)用于體育訓(xùn)練、醫(yī)療和娛樂等領(lǐng)域。2.設(shè)計(jì)方案論證2.1 概述本設(shè)計(jì)采用 8088 微處理器,結(jié)合 8255A 可編程且行通信接口、8259 中斷控制器、8253 定時(shí)/計(jì)時(shí)器以及鍵盤等部分外設(shè)電路,利用匯編為程序設(shè)計(jì)語言實(shí)現(xiàn)壹個(gè)能測試人體反應(yīng)時(shí)間的模擬系統(tǒng)。具體任務(wù):設(shè)計(jì)壹個(gè)能測試人的反應(yīng)(響應(yīng))時(shí)間的儀器。按啟動(dòng)鈕,測試開始,壹旦見到燈亮,立即按測試鈕,用 4 位八段碼顯示從見到燈亮到按下測試鈕的反應(yīng)時(shí)間 xx.xx 秒。具有以下效用:(1)編制壹個(gè)隨機(jī)數(shù)產(chǎn)生子程序,由隨機(jī)數(shù)決定從按啟動(dòng)鈕到四個(gè) LED 亮的時(shí)間(如于 3 秒15 秒之

9、間內(nèi)任意變動(dòng)),使被測試者對 LED 亮的時(shí)間無法預(yù)見,以確保測試結(jié)果的可信;(2)必須于見到 LED 亮后按測試鈕才有效,即壹直按著按鈕或提前按下按鈕無效;(3)反應(yīng)時(shí)間顯示 xx.xx 秒,準(zhǔn)確到百分之壹秒。(4)修改之上設(shè)計(jì)使進(jìn)壹步能測試人對不同事物的反應(yīng)(響應(yīng))時(shí)間。如效用為:按啟動(dòng)鈕,測試開始,壹旦紅燈亮,立即按紅燈測試鈕,壹旦綠燈亮, 立即按綠測試鈕,八段碼顯示反應(yīng)時(shí)間 xx.xx 秒。若按錯(cuò)鈕,則顯示ft錯(cuò)且響“嘟”壹聲。要求編制二個(gè)隨機(jī)數(shù)產(chǎn)生子程序,壹個(gè)決定從按啟動(dòng)鈕到 LED 亮的時(shí)間,另壹個(gè)決定亮何種顏色燈;同樣要求于見到 LED 亮?xí)r按測試鈕才有效。2.2 本設(shè)計(jì)使用的設(shè)

10、備介紹為研究方便,本設(shè)計(jì)采用 TDN86/88+微機(jī)實(shí)驗(yàn)系統(tǒng)來輔助開發(fā)此系統(tǒng),即首先將程序于該系統(tǒng)上調(diào)試,調(diào)試完成后再將最終的程序加載到所設(shè)計(jì)的硬件系統(tǒng)上。另外,硬件方面仍需用到普通 PC 機(jī)壹臺(tái),用來作為開發(fā)主機(jī),以提供界面編輯、編譯程序,且將程序加載到目標(biāo)系統(tǒng)中。2.2.1TDN86/88+系統(tǒng)簡介(1)系統(tǒng)總線系統(tǒng)總線信號定義如表 2-1 所示。表 2-18088 微機(jī)系統(tǒng)總線定義信號線說明信號線說明XA0-XA7系統(tǒng)地址總線XIORI/O 讀(輸ft)信號線XA8-XA15XMER存儲(chǔ)器讀(輸ft)信號線XA16-XA19XMEW存儲(chǔ)器寫(輸ft)信號線OPCLK時(shí)鐘信號線(1.193

11、MHz)HOLD總線請求(輸入)信號線PCLK時(shí)鐘信號線(2.386MHz)HLDA總線請求應(yīng)答(輸ft)信號線(2)系統(tǒng)內(nèi)存分配情況系統(tǒng)內(nèi)存分配如下圖所示:圖 2-1 系統(tǒng)內(nèi)存分配情況本設(shè)計(jì)需要用到 8255、8253、8259 等芯片,它們各自的端口地址如下表所示:表 2-2 輸入/輸ft接口編碼表電路名稱信號線寄存器編址電路名稱信號線寄存器編址0#計(jì)數(shù)器40HA 口60H1#計(jì)數(shù)器41HB 口61H2#計(jì)數(shù)器42HC 口62H3#計(jì)數(shù)器43H控制口63H8259IOY1-20H-21H2.3 設(shè)計(jì)原理和方法2.3.1 設(shè)計(jì)原理本設(shè)計(jì)中能夠劃分為鍵盤掃描和鍵命令的識別和處理部分。從宏觀上見

12、,這倆部分程序應(yīng)當(dāng)不停地且行、地于執(zhí)行,這樣才能保證既使 LED 的數(shù)字顯示穩(wěn)定, 又不遺漏對閉合鍵的識別和處理。2.3.2 設(shè)計(jì)方法設(shè)計(jì)中采用的方案是將鍵盤掃描程序、鍵命令的識別和處理程序及 LED 顯示程序等作為主程序,而將顯示程序、延時(shí)程序以及隨機(jī)數(shù)產(chǎn)生程序等作為子程序調(diào)用。于主程序中,對 8255A、8259 進(jìn)行初始化,接著檢測啟動(dòng)鍵的信號,于啟動(dòng)信號到來后產(chǎn)生隨機(jī)數(shù),再初始化 8253,使它工作于方式 2,每 10ms 產(chǎn)生壹上升沿作為中斷請求信號給 8259,使得程序每 10ms 便進(jìn)入中斷處理子程序,從而實(shí)現(xiàn)時(shí)間上的累加。設(shè)計(jì)的總框圖如下圖所示。圖 2-2 設(shè)計(jì)總框圖大致工作過

13、程為:8088 微處理器根據(jù)RAM 中的程序不斷探測啟動(dòng)鍵是否按下, 若啟動(dòng)鍵按下,則產(chǎn)生壹隨機(jī)時(shí)間給 8253 進(jìn)行延時(shí)處理,使 8253 完成 315 秒的工作。延時(shí)結(jié)束后,通過 RAM 的隨機(jī)數(shù)產(chǎn)生子程序產(chǎn)生壹隨機(jī)數(shù),以決定亮 8個(gè) LED 中的哪個(gè) LED。此后程序?qū)︽I盤進(jìn)行掃描,若按錯(cuò)鍵則響蜂鳴器,若按下正確的鍵則將利用 8255B 口所連接的四位數(shù)碼管顯示時(shí)間的數(shù)據(jù)。2.3.3 程序流程圖及其問題(1)程序流程圖基于之上設(shè)計(jì)任務(wù)能夠畫ft圖 2-3 所示的簡易流程圖。(2)程序流程圖里的關(guān)聯(lián)問題當(dāng)按著流程圖去試著寫程序,會(huì)遇到以下幾個(gè)問題:1)長時(shí)間延時(shí)為解決這個(gè)問題,應(yīng)首先了解

14、8253 定時(shí)/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)及工作原理。Intel8253 是 NMOS 工藝制成的可編程定時(shí)/計(jì)數(shù)器,最高速率為 2.6MHz。它既能夠用來定時(shí),也能夠用來計(jì)數(shù)。其實(shí),定時(shí)效用也是通過計(jì)數(shù)來完成的,因?yàn)楫?dāng)計(jì)數(shù)器用作定時(shí)器時(shí),其輸入的時(shí)鐘信號為周期性脈沖信號,而對周期性信號的計(jì)數(shù)即實(shí)現(xiàn)了延時(shí)的目的,延時(shí)時(shí)間為輸入時(shí)鐘信號的周期和計(jì)數(shù)初值 N 的乘積。8253 的編程結(jié)構(gòu)框圖如圖 2-4 所示。圖 2-3 簡易流程圖圖 2-48253 定時(shí)/計(jì)數(shù)器編程結(jié)構(gòu)圖8253 內(nèi)部有三個(gè)計(jì)數(shù)器,分別稱為計(jì)數(shù)器 0、計(jì)數(shù)器 1 和計(jì)數(shù)器 2,它們的結(jié)構(gòu)完全相同。每個(gè)的輸入和輸ft均決定于設(shè)置于控制寄存器

15、中的控制字,互相之間工作完全獨(dú)立。每個(gè)通過三個(gè)引腳和外部聯(lián)系,壹個(gè)為時(shí)鐘輸入端 CLK,壹個(gè)為門控信號輸入端 GATE,另壹個(gè)為輸ft端 OUT。每個(gè)內(nèi)部有壹個(gè) 8 位的控制寄存器,仍有壹個(gè) 16 位的初值寄存器 CR、壹個(gè)執(zhí)行部件 CE 和壹個(gè)輸ft鎖存器 OL。執(zhí)行部件實(shí)際上是壹個(gè) 16 位的減法計(jì)數(shù)器,它的起始值就是初值寄存器的值,而初值寄存器的值是通過程序設(shè)置的。輸ft鎖存器 OL 用來鎖存執(zhí)行部件 CE 的內(nèi)容,從而使 CPU 能夠?qū)Υ诉M(jìn)行讀操作。因此,如果于系統(tǒng)時(shí)鐘為1.193MHz的情況下,需要利用8253定時(shí)/計(jì)數(shù)器延時(shí)0.01秒,只需將初始值11930賦給初值寄存器,再將82

16、53的相應(yīng)CLK端接上系統(tǒng)時(shí)鐘引腳即可。至于控制寄存器,它的格式如下表所示:表 2-38253 控制寄存器格式SC1SC0RL1RL0M2M1M0BCD各位所表示的意義簡要解釋如下:SC1,SC0:通道選擇位。為 00、01、10 分別表示選擇計(jì)數(shù)器 0、1、2。RL1,RL0:讀/寫操作位。00 表示鎖存數(shù)據(jù),可隨時(shí)讀取計(jì)數(shù)器中的計(jì)數(shù)值;01表示只讀/寫低 8 位,高 8 位自動(dòng)置為 0;10 表示只讀/寫高 8 位,低 8 位自動(dòng)置為0;11 表示讀/寫 16 位數(shù)據(jù),先低 8 位,后高 8 位。M2,M1,M0:工作方式選擇位。具體選擇關(guān)系如下表:表 2-4 工作方式選擇關(guān)系表000模式

17、 0001模式 1X10模式 2X11模式 3100模式 4101模式 5BCD:用來設(shè)置計(jì)數(shù)值格式。為 1 時(shí)表示計(jì)數(shù)值為 BCD 碼格式;為 0 時(shí)表示為二進(jìn)制格式。另外,8253定時(shí)/計(jì)數(shù)器里各計(jì)數(shù)器均有六種工作方式,分別為方式0至方式5,于這里為方便編程先說明壹下方式2。方式2又稱頻率發(fā)生器工作方式。當(dāng)程序?qū)⒐ぷ鞣绞娇刂谱謱懭肟刂谱旨拇嫫鲿r(shí),計(jì)數(shù)器的輸ft端OUT立即變?yōu)楦唠娖健?于寫入計(jì)數(shù)初值后,計(jì)數(shù)器對輸入時(shí)鐘CLK計(jì)數(shù)。于計(jì)數(shù)過程中OUT保持不變,直到 計(jì)數(shù)器從初值減為1時(shí),輸ftOUT將變低,再經(jīng)過壹個(gè)CLK周期,OUT恢復(fù)為高電平,且 按已設(shè)定的計(jì)數(shù)初值重新開始計(jì)數(shù)。其時(shí)序圖

18、如下圖所示:圖 2-58253 方式 2 時(shí)序圖由時(shí)序圖可見,每當(dāng)計(jì)數(shù)器計(jì)數(shù)完成時(shí)便于輸ft端輸ft壹負(fù)脈沖。由于 8253 定時(shí)/計(jì)數(shù)器是 16 位的,而系統(tǒng)總線中的時(shí)鐘信號只有倆種:1.193MHz 和 2.386MHz。 這 意 味 著 單 純 的 16 位 計(jì) 數(shù) 器 最 多 只 能 只 時(shí) 計(jì) 時(shí)65535/1.193MS=0.0549S。那么,如何來實(shí)現(xiàn)長達(dá) 315 秒的延時(shí)呢?其實(shí),能夠通過計(jì)數(shù)器的串聯(lián)來解決這個(gè)問題。例如,能夠?qū)⑾到y(tǒng)時(shí)鐘接到 CLK0 上,使 GATE0 有效(高電平)且將 OUT0 輸ft接到 CLK1 上作為計(jì)數(shù)器 1 的計(jì)數(shù)時(shí)鐘,且使 GATE1 為高電平

19、。這就使得計(jì)數(shù)器 0 和計(jì)數(shù)器 1 串聯(lián)于壹起??墒褂?jì)數(shù)器 0 工作于方式 2 或方式 3,使其輸ft連續(xù)的脈沖;使計(jì)數(shù)器 1 工作于方式 0。計(jì)數(shù)值方面可使計(jì)數(shù)器 0 為 11930,計(jì)數(shù)器 1 為 1500,這樣就可使得總計(jì)數(shù)值為 11930*1500,即實(shí)現(xiàn)了延時(shí) 15 秒的目的。但由于系統(tǒng)中計(jì)數(shù)器 0 和計(jì)數(shù)器 1 已作其它用途,故只能采用計(jì)數(shù)器 2 來實(shí)現(xiàn)長時(shí)間延時(shí)的目的。為了實(shí)現(xiàn)單個(gè)計(jì)數(shù)器延時(shí)長時(shí)間的目的,須想辦法實(shí)現(xiàn)計(jì)時(shí)時(shí)間的累加。本設(shè)計(jì)采用計(jì)時(shí)器結(jié)合中斷的方法來解決這個(gè)問題。即將 8253 的工作方式設(shè)置為方式 2,計(jì)數(shù)初值設(shè)為 11930,此時(shí)每過 0.01 秒便于 8253

20、 的 OUT2 引腳上輸ft壹上升沿作為 8259 的中斷請求信號,而 CPU 通過接收中斷類型碼進(jìn)入中斷處理子程序,且于此子程序里的對某壹計(jì)數(shù)變量加 1 從而實(shí)現(xiàn)時(shí)間的累加,達(dá)到長時(shí)間延時(shí)的目的。8259A 是 Intel 系列的可編程中斷控制器。中斷控制器的效用就是于有多個(gè)中斷源的系統(tǒng)中,接收外部的中斷請求,且進(jìn)行判斷,選中當(dāng)前優(yōu)先級最高的中斷請求,再將此請求送到 CPU 的 INTR 端;當(dāng) CPU 響應(yīng)中斷且進(jìn)入中斷子程序的處理過程后,中斷控制器仍然負(fù)責(zé)對外部中斷請求的管理。8259 編程結(jié)構(gòu)圖 2-6 所示。由圖可見,8259A 內(nèi)部由倆大部分組成,上半部分包括中斷請求寄存器 IRR

21、, 優(yōu)先級別器 PR 和中斷服務(wù)寄存器 ISR,它們組成 8259A 的中斷處理部分稱為處理部件。這部分的效用是接收和處理從 IR1IR0 引腳進(jìn)入的外部中斷,其工作過程體現(xiàn)了 8259A 本身的工作原理。即接收中斷請求,進(jìn)行中斷判優(yōu),記錄當(dāng)前正于處理的中斷優(yōu)先級,實(shí)現(xiàn)中斷嵌套,向 CPU 發(fā)ft中斷申請,當(dāng) CPU 響應(yīng)中斷時(shí), 接收 CPU 的倆個(gè)連續(xù)中斷響應(yīng)信號將控制轉(zhuǎn)移到中斷服務(wù)程序中去。圖 2-68259A 的編程結(jié)構(gòu)綜上所述,如果要求實(shí)現(xiàn)時(shí)間的累加,能夠?qū)?8253 定時(shí)/計(jì)數(shù)器的 OUT 輸ft 端接到 8259 中斷控制器的 IRi 端,且通過相應(yīng)的程序代碼編程實(shí)現(xiàn)。MOVCX

22、,100;延時(shí)時(shí)間由 CX 值決定MOVAL,0B4H;初始化 8253,計(jì)時(shí) 0.01S OUT43H,ALMOVAX,BX;BX 存放計(jì)數(shù)初值OUT42H,AL;先寫計(jì)數(shù)值低 8 位MOVAL,AHOUT42H,AL;再寫計(jì)數(shù)值高 8 位IRQ7:DECCX;中斷處理子程序MOVAL,20H;中斷結(jié)束處理OUT20H,ALIRET之上程序代碼的第二條和第三條倆條指令表示選擇定時(shí)/計(jì)數(shù)器 2;給計(jì)數(shù)器賦初值時(shí)先讀寫低 8 位,再讀寫高 8 位;工作方式選擇方式 2。第四至七行用于對初值寄存器賦初值,而后面的語句則為中斷處理子程序。程序中,方式 2 表示每經(jīng)過 CLK2 上的壹個(gè)時(shí)鐘脈沖便對計(jì)

23、數(shù)值減壹,直至計(jì)數(shù)值減至 1 時(shí)于 OUT2 輸ft端壹負(fù)脈沖且再次實(shí)現(xiàn)初值的自動(dòng)重裝工作。而輸ft的負(fù)脈沖將作為 8259 的中斷請求信號從引腳 IR7 引入,若此時(shí) 8259 未屏蔽該引腳上的中斷請求,則 8259 將向 CPU 發(fā)ft中斷請求。此后程序進(jìn)入中斷處理子程序進(jìn)行中斷處理。由于每次計(jì)數(shù)結(jié)束時(shí)便進(jìn)入中斷處理過程中對 CX 減壹,相當(dāng)于實(shí)現(xiàn)了統(tǒng)計(jì)負(fù)脈沖個(gè)數(shù)的效用,因而實(shí)現(xiàn)了時(shí)間的累加。解決了長時(shí)間延時(shí)的問題后,接著考慮如何延時(shí) 315 秒內(nèi)的壹個(gè)隨機(jī)時(shí)間。假設(shè)計(jì)時(shí)器 T 位數(shù)足夠多,能夠賦任意大的初值,那么對于 1.193MHz 的系統(tǒng)時(shí)鐘來說,要延時(shí) 3 秒,則應(yīng)對其賦的初值為

24、11930*300;要延時(shí) 15 秒,則應(yīng)賦的初值為 11930*1500。所以,之上問題實(shí)際上要解決的是如何產(chǎn)生壹個(gè) 3001500內(nèi)的隨機(jī)數(shù)。2)隨機(jī)數(shù)的產(chǎn)生如何產(chǎn)生壹個(gè)隨機(jī)數(shù),以便亮壹個(gè)隨機(jī) LED?對于這個(gè)問題,壹般是通過讀取微機(jī)上的時(shí)間信息來實(shí)現(xiàn)的。通過查閱參考文獻(xiàn)4可知,于普通的 PC 機(jī)中,有壹個(gè)由主板電池供電的 CMOSRAM 芯片,壹般簡稱 CMOS,其容量比較小,大多為 128 個(gè)存儲(chǔ)單元。于這 128 個(gè)存儲(chǔ)單元中,0-0DH單元是用來保存時(shí)間信息的,而且存儲(chǔ)形式采用 BCD 碼形式。于這若干個(gè)存儲(chǔ)時(shí)間信息的存儲(chǔ)單元中,當(dāng)前的時(shí)間信息存放位置壹般如下:秒:0 分:2 時(shí):

25、4 日:7 月:8 年:9比如當(dāng)前時(shí)間的秒數(shù)為 26 秒,則第 0 個(gè)存儲(chǔ)單元的內(nèi)容為 。CMOSRAM 芯片內(nèi)部有倆個(gè)端口,端口地址為 70H 和 71H。CPU 通過這倆個(gè)端口實(shí)現(xiàn)對 CMOSRAM 芯片的讀寫。可是,TDN86/88+實(shí)驗(yàn)系統(tǒng)中且沒有由紐扣電池供電的 RAM 芯片,因此若系統(tǒng)關(guān)閉電源時(shí),壹切信息均將消失,也就是說實(shí)驗(yàn)系統(tǒng)中且不存于和普通 PC 機(jī)類似的系統(tǒng)時(shí)間存儲(chǔ)機(jī)制。因此,需要采用其它方法來實(shí)現(xiàn)隨機(jī)數(shù)的產(chǎn)生。通過查閱關(guān)聯(lián)文獻(xiàn),于本設(shè)計(jì)中將采用以下方法來實(shí)現(xiàn)隨機(jī)數(shù)的產(chǎn)生(利用此方法產(chǎn)生隨機(jī)數(shù)的效果請參閱調(diào)試部分):首先產(chǎn)生壹個(gè)隨機(jī)的 AX,再通過對 N 進(jìn)行求余運(yùn)算得到

26、0N-1 內(nèi)的隨機(jī)數(shù)。比如要產(chǎn)生壹個(gè) 07 內(nèi)的隨機(jī)數(shù),將采用以下代碼完成:CALLRND_AX;產(chǎn)生隨機(jī) AXMOVAH,03H;防止溢ft MOVDL,8DIVDL;產(chǎn)生 07 之間壹隨機(jī)數(shù)至 AHMOVRND,AH;AX 除 DL,商放 AL,余數(shù)放 AHRND_AXPROCNEAR;子過程,用于產(chǎn)生隨機(jī)的 AXMOVAX,0C49H IMULSEED ADDAX,05E1HMOVSEED,AX;保存種子PUSHCXMOVCL,8RORAX,CL;對 AX 進(jìn)行移位POPCXRND_AXENDP其中 SEED、RND 是于數(shù)據(jù)段定義的變量,SEED 初始化時(shí)能夠任意賦值,本設(shè)計(jì)中置初值為

27、 1。此段代碼最終產(chǎn)生壹個(gè) 07 內(nèi)的隨機(jī)數(shù)至變量 RND。上面所說的產(chǎn)生壹個(gè) 3001500 內(nèi)的隨機(jī)數(shù)問題也能夠類似地解決,程序中先用壹個(gè)隨機(jī)數(shù)子程序產(chǎn)生 100 個(gè)隨機(jī)數(shù),對其求和且將所得的和存放到變量RNDSUM,則根據(jù)統(tǒng)計(jì)平均規(guī)律,RNDSUM 約為 255*100/212750,將此值作為計(jì)數(shù)器 T 的初始值。如此壹來,欲表示壹個(gè) 315 秒的區(qū)間,則需確定倆個(gè)變量 NUM1 和 NUM2(其中 NUM1=11930*300/RNDSUM, NUM2=11930*1500/RNDSUM), 這樣區(qū)間(NUM1NUM2)就對應(yīng) 315 秒。具體代碼如下: MOVDX,0036H;11

28、930*300=369C78HMOVAX,9C78HMOVBX,RNDSUM;RNDSUM 為 100 個(gè) RND 之和DIVBXMOVNUM1,AXMOVDX,0111H;11930*1500=1110E58H MOVAX,0E58HDIVBX MOVNUM2,AXCALLRND_AX;產(chǎn)生隨機(jī) AX MOVDX,0MOVCX,NUM2 SUBCX,NUM1DIVCX;CX 存放 0NUM2-NUM1 之間的隨機(jī)數(shù)MOVCX,DXADDCX,NUM1;CX 存放 NUM1-NUM2 之間的隨機(jī)3)鍵盤掃描通常使用的鍵盤是矩陣結(jié)構(gòu)的,如下圖所示:圖 2-7 鍵盤的矩陣式結(jié)構(gòu)識別鍵盤上的閉合鍵通

29、常有倆種方法:行反轉(zhuǎn)法和行掃描法。行反轉(zhuǎn)法的原理:行反轉(zhuǎn)法識別閉合鍵時(shí),要將行線接壹個(gè)且行口,先讓它工作于輸ft方式,將列線也接到壹個(gè)且行口,先讓它工作于輸入方式,程序使 CPU 通過輸ft端口往各行線上全部送低電平,然后讀入列線的值。如果此時(shí)有某壹個(gè)鍵被按下,則必定會(huì)使某壹列線值為零,然后,程序再對倆個(gè)且行端口進(jìn)行方式設(shè)置,使行線工作于輸入方式,列線工作于輸ft方式,且且將剛才讀得的列線值從列線所接的且行端口輸ft,再讀取行線上的輸入值,那么,于閉合鍵所于的行線上的值必定為零。這樣,當(dāng)壹個(gè)鍵被按下時(shí),必定能夠讀得壹對唯壹的行值和列值。行掃描法的原理:首先先快速檢查鍵盤中是否有某個(gè)鍵已被按下,

30、然后,再確定具體按下了哪壹個(gè)鍵。為此,能夠先使所有各行同時(shí)為低電平,再檢查是否有列線也處于低電平。這時(shí),如果列線上有壹位為 0,則說明必有鍵被按下,不過, 仍不能確定所閉合的鍵處于哪壹行上,于是再用掃描法來確定具體位置。具體為: 先使第 1 行接地,其余行接高電平,然后見是否有哪條列線變成低電平。如果有某條列線為低電平,則該列和第 1 行相交位置上的鍵被按下;如果沒有任何壹條為低電平,遇說明第 1 行上的鍵均沒有被按下。用同樣的方法判別其它各行的情況,最終確定所按下的鍵。本鍵盤掃描程序?qū)⒉捎眯袙呙璺▉韺?shí)現(xiàn)鍵盤的掃描。4)用數(shù)碼管顯示時(shí)間數(shù)據(jù)下圖是 8 段共陰數(shù)碼管的結(jié)構(gòu)圖:圖 2-8 數(shù)碼管內(nèi)

31、部結(jié)構(gòu)及外觀引腳由上圖可知,要想選通數(shù)碼管,應(yīng)將第 3 管腳接低電平作為選擇數(shù)碼管的位, 而將 8255B 口的 PB7PB0 分別接數(shù)碼管的 DPA 作為選擇數(shù)碼管的段。對于數(shù)碼管數(shù)據(jù)的顯示,壹般均是用查表指令來完成顯示工作的,即先把 09 的顯示碼放到壹個(gè)數(shù)據(jù)表中,且將寄存器 BX 指向表的首地址,于 AL 存放數(shù)碼管所要顯示的數(shù)字,再利用 XLAT 這條換碼指令即可完成換碼操作。至此,簡易流程圖的問題均大致解決了??紤]其它各方面因素,作ft如圖 2-9所示的完整流程圖。圖 2-9 完整流程圖3.本設(shè)計(jì)中各芯片的工作原理及編程3.1 本設(shè)計(jì)中 8255A 芯片的工作原理8255A 是 In

32、tel 系統(tǒng)的且行接口芯片。由于它是可編程的,能夠通過軟件來設(shè)置芯片的工作方式,所以,用 8255A 連接外部設(shè)備時(shí),通常不需要再附加外部電路,給使用帶來很大的方便。3.1.18255A 的內(nèi)部結(jié)構(gòu)參閱參考書1,8255A 的內(nèi)部結(jié)構(gòu)框圖如下圖所示:圖 3-18255A 的內(nèi)部結(jié)構(gòu)圖8255A 由以下幾部分組成。1)數(shù)據(jù)端口 A、B、C8255 具有三個(gè)相互應(yīng)獨(dú)立的 8 位且行輸入輸ft端口,即端口 A,端口 B 和端口 C。端口 A:端口 A 對應(yīng) 1 個(gè) 8 位數(shù)據(jù)輸入器和 1 個(gè) 8 位數(shù)據(jù)輸ft鎖存/緩沖器。端口 B:端口 B 對應(yīng) 1 個(gè) 8 位數(shù)據(jù)輸入緩沖鎖存器和 1 個(gè) 8 位數(shù)

33、據(jù)輸ft鎖存器/緩沖器。端口 C:端口 C 對應(yīng) 1 個(gè) 8 位數(shù)據(jù)輸入緩沖器和 1 個(gè) 8 位數(shù)據(jù)輸ft鎖存器/緩沖器。于使用中,端口 A 和端口 B 常常作為獨(dú)立的輸入端口或者輸ft端口,而端口 C 常常通過控制命令被分成 2 個(gè) 4 位端口,分別用來為端口 A 和端口 B 提供控制信號和狀態(tài)信號。2)A 組控制和 B 組控制A 組控制電路控制端口 A 和端口 C 的高 4 位(PC7PC4)的工作方式和讀寫操作。B 組控制電路控制端口 B 和端口 C 的低 4 位(PC3PC0)的工作方式和讀寫操作。3)讀寫控制邏輯電路讀寫控制邏輯電路負(fù)責(zé)管理 8255A 的數(shù)據(jù)傳輸過程。4)數(shù)據(jù)總線緩

34、沖器這是壹個(gè)雙向三態(tài)的 8 位數(shù)據(jù)緩沖器,80255A 正是通過它和系統(tǒng)數(shù)據(jù)總線相連。輸入數(shù)據(jù)、輸ft數(shù)據(jù)以及 CPU 發(fā)給 8255A 的控制字均是通過這個(gè)緩沖器傳遞的。3.1.28255A 的控制字及工作方式(1)8255A 的控制字8255A 能夠通過指令于控制端口中設(shè)置控制字來決定它的工作??刂谱址譃閭z類:方式選擇控制字和端口 C 置 1/置 0 控制字,倆者通過最高位的值相互區(qū)別: 如最高位 D7 為 1 表求控制字為方式選擇控制字,否則則為 C 口置 1/置 0 控制字。(2)8255A 的工作方式8255A 有三種工作方式:方式 0、方式 1 和方式 2。以下介紹方式 0。方式

35、0 也叫基本輸入輸ft方式。于這種方式下,端口 A 和端口 B 能夠通過方式選擇規(guī)定為輸入口或者輸ft口,端口 C 分為倆個(gè) 4 位端口,高 4 位和低 4 位各為壹個(gè)端口。概括地說,方式 0 的基本特點(diǎn)如下:1)任何壹個(gè)端口可作為輸入口,也可作為輸ft口,各端口之間沒有規(guī)定必然的關(guān)系。2)各個(gè)端口的輸入或輸ft,能夠有 16 種不同的組合,所以能夠適用于多種使用場合。本設(shè)計(jì)中 8255A 的 A、B 端口均采用方式 0。本設(shè)計(jì)只采用方式 0。3.1.3 本設(shè)計(jì)中 8255A 的應(yīng)用編程假設(shè)用 8255A 的端口地址如下表所示:表 3-18255A 的端口地址分配表A 口60HB 口61HC

36、口62H控制口63H若有以下指令將控制字寫入控制端口中:MOVAL,81H OUT63H,AL其中 81H 的二進(jìn)制形式為 ,最高位 D71 表示此控制字為方式選擇控制字。根據(jù) 8255 方式選擇控制字格式,則 D6D500 表示 A 口工作于方式 0,D40 表示 A 口工作于輸ft狀態(tài),D30 表示 C 口高 4 位為輸ft口,D20 表示 B 口工作于方式 0,D10 表示 B 口為輸ft口,D01 表示 C 口低 4 位為輸入口。此后若要求 B 口輸ft 1 的顯示碼 06H,則只需執(zhí)行以下代碼: MOVAL,06HOUT61H,AL而若要求對 PC2 置 1 以驅(qū)動(dòng)蜂鳴器,則可執(zhí)行以

37、下代碼: MOVAL,05HOUT63H,AL其中 05H 的二進(jìn)制形式為 ,最高位 D70 表示此控制字為 C 口置 1/置 0 控制字。根據(jù)其格式,D3D2D1010 表示對 PC2 進(jìn)行操作,D00 表示對 PC2置 1。3.2 本設(shè)計(jì)中 8259A 芯片的編程結(jié)談判應(yīng)用編程參閱參考文獻(xiàn)1,8259A 是 Intel 系列的可編程中斷控制器。它具有以下特點(diǎn):1)1 片 8259A 能管理 8 級中斷;2)由于 8259A 是可編程的,所以使用起來非常靈活。實(shí)際系統(tǒng)中,能夠通過編程使 8259A 工作于多種不同的方式。3)8259A 用 NMOS 工藝制造,只需要壹組 5V 電源。3.2.

38、18259A 的編程結(jié)構(gòu)編程結(jié)構(gòu)如圖 3-2 所示。各寄存器的工作原理表述如下:1)中斷請求寄存器 IRR。此寄存器用來存放外部輸入的中斷請求信號 IR7IR0。每壹位對應(yīng)壹個(gè)外部中斷請求信號 IR,當(dāng)某個(gè) IR 端有中斷請求時(shí),其相應(yīng)位置“1”。2)中斷屏蔽寄存器 IMR。IMR 是壹個(gè) 8 位寄存器,用來存放對各級中斷請求的屏蔽信息,如果某壹位 IMR 置“0”,表示對應(yīng)的中斷 IR 被允許,IMR 的某壹位 IMR置“1”,表示對應(yīng)的中斷 IR 被屏蔽。3)中斷服務(wù)寄存器 ISR。ISR 是 8 位寄存器,和 8 級中斷 IR7IR0 相對應(yīng), 用來記錄正于處理的中斷請求,如果某壹級中斷

39、被響應(yīng),則 ISR 中的相應(yīng)位置“1”。4)優(yōu)先級判別器 PR。PR 用來管理和識別各中斷請求信號的優(yōu)先級別。當(dāng)ft 現(xiàn)多重中斷時(shí),PR 將新ft現(xiàn)的中斷請求和正于被服務(wù)的中斷優(yōu)先級進(jìn)行比較,確定新的優(yōu)先級是否高于正于處理的中斷級。高級中斷允許中止低級中斷。而 8259A 的下半部有 7 個(gè) 8 位寄存器。這些寄存器可分為倆組:ICW1ICW4 為壹組,稱為初始化命令字(ICW)寄存器,用來接收 CPU 向 8259A 發(fā)ft的初始化命令以決定 8259A 的工作方式。而 OCW1OCW3 為壹組,稱為操作命令字(OCW)寄存器,用來存放 CPU 向 8259A 發(fā)ft的操作命令。3.2.28

40、259A 初始化流程圖圖 3-28259A 的編程結(jié)構(gòu)于 8259A 進(jìn)入正常運(yùn)行之前,必須將系統(tǒng)中的每壹片 8259A 進(jìn)行初始化。初始化就是將上述的初始化命令字按固定的次序?qū)懭?8259A 的指定端口。8259A 的初始化流程圖如圖 3-3 所示。圖 3-38255A 的初始化流程圖3.2.3 本設(shè)計(jì)中 8259A 的應(yīng)用編程系統(tǒng)中的 8259A 的偶端口地址為 20H,端口地址為 21H。假設(shè)系統(tǒng)只有壹片8259A,且系統(tǒng)開放 IRQ7,則可用以下代碼對其進(jìn)行初始化:MOVAL,13H;初始化 8259 OUT20H,AL;ICW1 MOVAL,08H;ICW2 OUT21H,AL MO

41、VAL,09H;ICW4 OUT21H,AL INAL,21H;OCW1 ANDAL,7FHOUT21H,AL之上代碼中,寫入 ICW1 寄存器的數(shù)值為 13H,其二進(jìn)制形式為 。根據(jù) 8259 初始化命令字 ICW1 的格式,D30 表示中斷請求為邊沿觸發(fā)方式;D1=1 表示采用單片 8259;D01 表示采用 ICW4。寫入 ICW2 寄存器的數(shù)值為 08H,其二進(jìn)制形式為 。根據(jù) ICW2 的格式及含義,表示中斷類型碼的前 5 位為 10000,而后 3 位則由中斷請求信號進(jìn)入8259 時(shí)的輸入引腳所確定。若中斷請求信號從 IR7 引腳輸入,則中斷類型碼的低3 位為 111。寫入 ICW

42、4 寄存器的數(shù)值為 09H,其二進(jìn)制形式為 。根據(jù) ICW4 的格式,D40 表示中斷嵌套方式為完全嵌套方式;D30 表示 8259 不通過總線驅(qū)動(dòng)器和數(shù)據(jù)總線相連;D10 表示中斷結(jié)束方式為非自動(dòng)結(jié)束方式,此時(shí)需要發(fā)ft 壹般的中斷結(jié)束命令來結(jié)束中斷過程。INAL,21H 表示將 OCW1 的數(shù)值讀入 AL,ANDAL,7FH 表示對最高位清零,清零后再通過 OUT21H,AL 將修改后的 AL 值寫入 OCW1。整個(gè)過程表示開放 8259 的IR7,允許此引腳上的中斷請求。而要使得 CPU 進(jìn)入中斷處理子程序 IRQ7,則應(yīng)使用以下代碼,以便產(chǎn)生中斷時(shí),CPU 進(jìn)行正確的跳轉(zhuǎn):PUSHDS

43、 MOVAX,0H MOVDS,AX MOVBX,003CHMOVAX,OFFSETIRQ7;獲取 IRQ7 的偏移地址ADDAX,2000HMOVBX,AX MOVAX,0000H MOVBX,003EH MOVBX,AX POPDS因?yàn)橛?8259A 的 IR7 引腳產(chǎn)生中斷時(shí),CPU 通過總線獲得 8259A 傳來的中斷類型碼 0FH(即 00001111),此時(shí) CPU 將對此碼進(jìn)行乘 4 操作而獲得壹數(shù)值,再將以此數(shù)值為內(nèi)存地址的內(nèi)容讀ft送至 CS、IP,也就是進(jìn)行了跳轉(zhuǎn)。之上代碼就是更改了相應(yīng)內(nèi)存單元的內(nèi)容,從而使得 CPU 能夠進(jìn)行正確的跳轉(zhuǎn)而轉(zhuǎn)至中斷處理子程序 IRQ7。進(jìn)入

44、中斷處理子程序后最終需要進(jìn)行中斷結(jié)束處理,這時(shí)可采用以下代碼:MOVAL,20H OUT20H,AL此代碼將 20H 寫到 OCW2 中,其中 EOI=1,R=0,SL=0,這是壹個(gè)壹般的中斷結(jié)束命令,它使當(dāng)前中斷處理子程序?qū)?yīng)的 ISn 位被清除,從而結(jié)束中斷,使得能夠再次引發(fā) IR7 中斷。3.3 本設(shè)計(jì)中 8253A 芯片的工作方式和應(yīng)用編程Intel8253 是 NMOS 工藝制成的可編程定時(shí)/計(jì)數(shù)器,它既能夠用于定時(shí)也能夠用于計(jì)數(shù),其最高速率為 2.6MHz。8253 內(nèi)部包含三個(gè)結(jié)構(gòu)完全相同但又相互獨(dú)立的定時(shí)/計(jì)數(shù)器,且通過控制端口對各個(gè)定時(shí)/計(jì)數(shù)器進(jìn)行操作控制。3.3.18253

45、 的工作方式8253作為壹個(gè)可編程的定時(shí)/計(jì)數(shù)器,能夠用6種模式工作,本設(shè)計(jì)中只用到方式0和方式2,由于方式2前面已經(jīng)介紹,故以下只介紹方式0的工作原理。方式0:又稱計(jì)數(shù)結(jié)束產(chǎn)生中斷工作方式。當(dāng)程序?qū)⒐ぷ鞣绞娇刂谱謱懭肟刂谱旨拇嫫鲿r(shí),計(jì)數(shù)器的輸ft端OUT立即變?yōu)榈碗娖?。于?jì)數(shù)初值寫入該計(jì)數(shù)器后, 輸ft仍將保持為低電平。當(dāng)門控信號GATE為高電平時(shí),計(jì)數(shù)器對輸入端CLK的輸入 脈沖開始作減壹計(jì)數(shù),當(dāng)計(jì)數(shù)器從初值減為0時(shí),輸ft端OUT由低電平變?yōu)楦唠娖? 該輸ft信號可作為向CPU發(fā)ft的中斷請求信號。時(shí)序圖如下:圖 3-48253 方式 0 時(shí)序圖3.3.2 本設(shè)計(jì)中 8253 的應(yīng)用編程

46、假設(shè)系統(tǒng)中 8253 各計(jì)數(shù)器的端口地址如下表所示:表 3-28253 定時(shí)/計(jì)數(shù)器各端口地址計(jì)數(shù)器 040H計(jì)數(shù)器 141H計(jì)數(shù)器 242H控制寄存器43H如果采用 OPCLK=1.193MHz 的系統(tǒng)時(shí)鐘,若要求計(jì)數(shù)器 0 計(jì)時(shí) 0.01 秒,則可采用以下代碼:MOVAL,0B4H OUT43H,AL MOVAX,11930 OUT42H,AL MOVAL,AH OUT42H,AL其中第壹、二行表示設(shè)置計(jì)數(shù)器 0 的工作方式為方式 2,先讀寫低 8 位,再讀寫高 8 位。接著第三至六行把計(jì)數(shù)初值放至 16 位的初值寄存器中。這樣的話每次計(jì)數(shù)完畢后均會(huì)于輸ft端輸ft壹負(fù)脈沖。4.調(diào)試過程和

47、總結(jié)4.1 程序的調(diào)試過程程序的調(diào)試是壹個(gè)艱難的過程,因?yàn)槌绦蛉绻[藏著微小錯(cuò)誤,就會(huì)使得實(shí)驗(yàn)結(jié)果和預(yù)期結(jié)果大相徑庭,甚至程序運(yùn)行不了。而要挖掘ft這些深藏著的錯(cuò)誤, 必須花費(fèi)足夠多的時(shí)間和耐心,對每壹程序模塊、模塊和模塊間的聯(lián)系(比如參數(shù)傳遞問題)、甚至每壹語句進(jìn)行再三的思考。(1)芯片的測試為了測試 8253 定時(shí)/計(jì)數(shù)器和 8259A 中斷控制器配合作用后的工作情況,可將 8253 的 OUT2 連接到 8259A 的 IR7 端,具體連接情況如下:8253-GATE2-+5V8253-CLK2-KK18253-OUT2-8259A-IR7此時(shí),將以下代碼編譯加載到系統(tǒng)中測試:CODES

48、EGMENTASSUMECS:CODESTART:PUSHDS;修改中斷向量MOVAX,0HMOVDS,AX MOVBX,003CH MOVAX,OFFSETIRQ7 ADDAX,2000H MOVBX,AX MOVAX,0000H MOVBX,003EHMOVBX,AX POPDS;初始化 8259-MOVAL,13H;ICW1 OUT20H,AL MOVAL,08H;ICW2 OUT21H,AL MOVAL,09H;ICW4 OUT21H,AL INAL,21H;OCW1,開放 IRQ7 ANDAL,7FHOUT21H,AL;初始化 8253-MOVAL,90H;控制字寫入控制寄存器OUT

49、43H,ALMOVAL,5;對 T2 賦初值”5” OUT42H,ALSTI;開中斷HERE:JMPHERE;等待中斷IRQ7:MOVAH,01HMOVAL,4DH;顯示字母”M” INT10HMOVAL,20H;清除中斷標(biāo)志OUT20H,AL;重新對計(jì)數(shù)器賦初值MOVAL,90H;控制字寫入控制寄存器OUT43H,ALMOVAL,5H;對 T2 賦初值”5” OUT42H,ALIRET CODEENDSENDSTART程序加載運(yùn)行后,每按壹次啟動(dòng)鍵 KK1,便產(chǎn)生壹個(gè)正脈沖作為 8253 計(jì)數(shù)器T2 的 CLK 時(shí)鐘信號。程序中對計(jì)數(shù)器 T2 賦予初值”5”,當(dāng)按下 6 次啟動(dòng)鍵 KK1后于

50、顯示終端顯示壹個(gè)字母”M”。之所以要按下 6 次而不是 5 次啟動(dòng)鍵,是因?yàn)橛?jì)數(shù)器 T2 采用的是方式 0,該方式規(guī)定寫入計(jì)數(shù)初值后需等待壹個(gè)時(shí)鐘脈沖計(jì)數(shù)初值才會(huì)送到計(jì)數(shù)執(zhí)行部件進(jìn)行減壹操作,因此需按 6 下啟動(dòng)鍵 KK1。通過之上程序,確定 8253 定時(shí)/計(jì)數(shù)器及 8259A 中斷控制器工作正常。(2)本系統(tǒng)于程序調(diào)試過程中所遇到的幾個(gè)問題1)隨機(jī)數(shù)的產(chǎn)生剛開始時(shí),本設(shè)計(jì)想利用讀系統(tǒng)時(shí)鐘的方法來產(chǎn)生隨機(jī)數(shù)。使用的效用調(diào)用為:ah=02,int1ah。執(zhí)行后 CH:CL=時(shí):分;DH=秒(均為 BCD 格式)。比如能夠通過以下程序讀取系統(tǒng)時(shí)鐘,這于普通 PC 機(jī)上能夠得到正確結(jié)果:DATASEGMENTHOURDB?;變量 HOUR 用于存放時(shí)MINDB?;變量 MIN 用于存放分SECDB?;變量 SEC 用于存放秒PCSECDB?DATAENDS CODESEGMENTASSUMECS:CODE,DS:DATA START:MOVAX,DATAMOVDS,AX STIMOVAH,02H;執(zhí)行 INT1AH 效用調(diào)用INT1AHMOVHOUR,CH;將效用調(diào)用所得到

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論