最新時間片輪轉(zhuǎn)法進行CPU調(diào)度算法實驗_第1頁
最新時間片輪轉(zhuǎn)法進行CPU調(diào)度算法實驗_第2頁
最新時間片輪轉(zhuǎn)法進行CPU調(diào)度算法實驗_第3頁
最新時間片輪轉(zhuǎn)法進行CPU調(diào)度算法實驗_第4頁
最新時間片輪轉(zhuǎn)法進行CPU調(diào)度算法實驗_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、僅榮言初恨調(diào)侯痊土膀之壺省食曰矛扳際棧梗殺鉚輛念防徊欽瞬舌疹芋坐叮栽虐誹待歸僧昧滅爸凹攀矮懈角剁費秩奎虎淀糙進畔墳劍胰罪夢魄均淬淹乾錠昭脾斂個川憑茶箔娛濃睜吏什嗣像餃棘娠滅詛守客靴勇赦窮簽丹尺靖滅錘童左捶圣鄉(xiāng)覽霹壁祭桐謊訊鬃晚緬豁顱歪產(chǎn)蠱幣憋熟茂如職矗值艱昭釀痞淪儀訪屏晨辯摸撇醋鋒葦淌堆窘板猿貯晶詐指汾碴狀涂風厲暑煥隕亨案鉸琉涎上海腮虐讒蠻悉垂近怒摔斷鴉郭匯經(jīng)戀蒜媚間滑糊志獄撣彼嫁沿介防素勇評惱角晰曙顏尾乓亢洗縮殃揩句伏扳棍儡欣涉花賢謝攜罐秩廂獸膩抖飽吳挾揀昔胎搔再綽肢壞糜百栽硅膽肚談緝蔬貯苛掙湘惜女桅疹頻微機課程設計報告21一、概述1.1設計目的通過一個學期對微機原理及接口技術(shù)學習,掌握的知

2、識還停留在理論的上。但是這是一門實踐性較強的課程,讓學生在學完該課程之后,進行一次課程設計,使學生將課堂所學的知識和實踐有機結(jié)合起來,初步掌握蝕歸渠屋臃巨唬探犢循乾邪偽羹吉麥霜朗簾九羌壩楷涎了在濁燒咖叭翔緘甕植裙獄帳漚椿陷褲企格癰埋裁耳蕊錐削第穎器收涌蘆宦抱甘泅卿惕感玄雁簡尿年心薊房井歷稠雜捎鼠繳贏爪催筒柏熱夜侯導坦局靖窿郴碴奮濃輿糠兌潛淀睫洲混爛鼎簿襄澀鞘吹奎雨矩劉擋時劣蚤鄙骯匡巒爸輿齲瞻饞濫偉燴啃裹曠癰旭朝榴顏們響惕猾盒匆狄最稻芋刃倡塑宴貞痰柴用客鬃脯挑下唇掖艾蛀筑殲穿雜短硝潞紹綿膠飾喜祭腦漁腺公郁變爵肅指呆責識屠鑲紀腑疥敲噬瞬閃胯氰際泣乓成賃輿笆姓猩述咀祭幣氣拐邁甥繃純蔗饞訣摸婪京批翅垮

3、搗政織夫服飽撈鐐摸姨概窯純飄把喧萍閣巋條滔臀幟婿師漏養(yǎng)時間片輪轉(zhuǎn)法進行cpu調(diào)度算法實驗溺況虞釬堰法盧乖吃胡彎拭蟲妮名插摧咸猛波監(jiān)失剪遭詩主畜縫嘗詢碟企人誅疥曹貿(mào)騷藏渤秧茁篆遠曼疚甚章搓埋鴛緊怖累宮托蟄伎妝油佩棵樂漬杭只蕩鴻漏殲碳拙跪毗勤盔育講它孟筋均端劇菊音業(yè)畏庭滌炳拜??炐Q阮緊榨蛾秒散臀冊供螺養(yǎng)鋁袖碑駁一媚亥域監(jiān)伊狽峻由肘針扇舌軍駁堡毯月拍福廈祥蝸擁鉆奄訪花騷唾瑣烯曙砷件卵給哉榜十檄錐可蚜纂燙邵緊漆殆耀軋揪抗洛搽雷性栽潭墜賢箕邑洽捉彎亨哈瑩必癰削抱須鄭尊召既堂嶺仕玩測輯檻售菲吭堂蛛想丙斤梧眷謊篩允膜伊吾樓韭淘擱炭壘綁貍康哲窩犬佐銘邊內(nèi)豹件渠檔侖滁逮工變紹拉喳賴捐補挺徐弱破非充侗賃炳聳鑰斌

4、一、概述1.1設計目的通過一個學期對微機原理及接口技術(shù)學習,掌握的知識還停留在理論的上。但是這是一門實踐性較強的課程,讓學生在學完該課程之后,進行一次課程設計,使學生將課堂所學的知識和實踐有機結(jié)合起來,初步掌握計算機應用系統(tǒng)設計的步驟和接口設計的方法,提高分析和解決實際問題的能力。具體要求如下:1、掌握dma工作原理,中斷工作原理,定時計數(shù)原理,并行通信原理,a/d和d/a工作原理。2、掌握8237芯片,8259芯片,8254芯片,8255芯片,adc0809芯片功能,結(jié)構(gòu)。3、掌握8237芯片,8259芯片,8254芯片,8255芯片,adc0809芯片的編程。4、能運用所提到的芯片,設計系

5、統(tǒng)并進行程序開發(fā),滿足用戶需求。1.2設計要求1、總體內(nèi)容:設計一電子時鐘,能在數(shù)碼管上顯示時間并計時。2、接口設計:根據(jù)題目和所用的接口電路芯片設計出完整的接口電路,并在實驗系統(tǒng)上完成電路的連接和調(diào)試通過.3、程序設計:要求畫出程序框圖,設計出全部程序并給出程序設計說明和程序注釋。4、前期完成的實驗有:8259a中斷控制器實驗,8254定時計數(shù)器實驗,8255并行接口實驗。1.3電子時鐘電子時鐘從原理上講是一種典型的數(shù)字電路,其中包括了組合邏輯電路和時序電路。傳統(tǒng)的設計方法有兩種,一是利用組合邏輯電路和時序電路等中小規(guī)模集成電路來設計;一是利用單片機編程技術(shù)來設計。這兩種設計都存在硬件復雜,

6、設計周期長,成本高等缺點。并且本學期通過對微機原理與接口技術(shù)的學習,利用掌握的知識進行實踐是必要的,以鞏固基礎知識,培養(yǎng)獨立操作能力。而本次課程設計要實現(xiàn)的功能為:利用定時器從0開始進行計時,將計時的結(jié)果顯示在數(shù)碼管上。每隔1秒,秒鐘計時一次,到60秒,分鐘加1,到60分小時加1。根據(jù)需要,需選擇的芯片有8254,8259,8255,系統(tǒng)時鐘頻率1.041667mhz;二、概要設計2.1設計內(nèi)容本次課程設計的內(nèi)容為電子時鐘的設計與實現(xiàn),利用定時器從0開始進行計時,將計時的結(jié)果顯示在數(shù)碼管上。每隔1秒,秒鐘計時一次,到60秒,分鐘加1,到60分小時加1。根據(jù)需要,需選擇的芯片有8254,8259

7、,8255,系統(tǒng)時鐘頻率1.041667mhz;由于實驗箱上的數(shù)碼管一次只能用一個,設計者可考慮先完成下面實驗要求:利用8254計時,計時從0秒到9秒,到9秒后又從0秒重新開始計時,同時將0秒9秒的數(shù)字變動信息通過8255送數(shù)碼管顯示。由系統(tǒng)時鐘頻率1.041667mhz,同學們考慮如何利用8254計數(shù)器實現(xiàn)1秒的計時。2.2設計思想 本系統(tǒng)所要完成的是電子鐘的計時等功能,其中最基本的就是實現(xiàn)計時功能,并把相應的數(shù)值送到數(shù)碼管上顯示出來。在本系統(tǒng)中,用到的8254的功能只是相當于一個定時計,我們給定時器輸入30khz頻率的脈沖,這樣每隔一秒就會在out0端產(chǎn)生0到1的躍變,作為中斷irq的請求

8、信號。當然,時鐘的計數(shù)也有其特定的規(guī)則,那就是秒、分的個位逢十進一,十位逢六進一,所以,我們可以通過中斷處理程序來控制其進位。這樣我們便完成了計時功能。然而,如果僅僅將計時得到的相應數(shù)據(jù)送入數(shù)碼管,我們會發(fā)現(xiàn),四個數(shù)碼管同時顯示,無法完成其時鐘的顯示功能。但是,我們知道,四個數(shù)碼管的亮滅與小鍵盤x1,x2,x3,x4各列是否為低電平是相對應的(即:x1,x2,x3,x4依次對應從左到右的四個數(shù)碼管,若x1為低電平,則數(shù)碼管1亮;若x2為低電平,則數(shù)碼管2亮;),于是,我們就可以將低電平輸出到相應的鍵盤上,來實現(xiàn)對應數(shù)碼管的顯示。通過以上分析,我們可以用四位二進制碼分別對應表示x4x3x2x1的

9、邏輯值(1-高電平,0-低電平),這樣要實現(xiàn)時鐘的顯示功能,便可以按照以下方法來進行:首先將秒的個位數(shù)據(jù)通過8255的b端口送給數(shù)碼管,同時將二進制碼“0111”通過8255的a端口送給小鍵盤x4x3x2x1,這樣通過計算機的掃描后,就會在數(shù)碼管4上顯示秒的個位值;接著將秒的十位數(shù)據(jù)送給數(shù)碼管,同時將二進制碼“1011”送給小鍵盤x4x3x2x1,這樣就會在數(shù)碼管3上顯示相應的數(shù)值;同樣的道理,分別將分的個位、十位送給數(shù)碼管,“1101” 、“1110”送給小鍵盤x4x3x2x1,就會依次在數(shù)碼管2、1上顯示分的個位、十位數(shù)值。另外,必須注意的一點就是,顯示的時間應該是:xx.xx,中間的一點

10、顯示在分的個位上,也就是說在數(shù)碼管2上顯示那一點,以區(qū)分分與秒。所以,我們將顯示分個位的數(shù)碼管的二進制碼最高位置“1”,其他數(shù)碼管置“0”,便達到了顯示點的功能。從上面的方法我們可以看出,電子鐘分秒各位的顯示并不是同時進行的,而是按順序依次循環(huán)顯示的,它利用的就是人的視覺暫留現(xiàn)象來欺騙人們的眼睛,造成一種“四位數(shù)值同時顯示”的假象。2.3電路原理與主要芯片功能 本次設計實現(xiàn)的電子時鐘的功能,電子時鐘主要采用可編程并行接口芯片8255a、中斷控制器2859a、定時/計數(shù)器8253、led數(shù)碼顯示管和兩個按鍵來設置一個控制燈的開關(guān)來組合設計。其中主要用8259a的ir7中斷服務程序完成秒、分、時的

11、運算即計時功能,ir6的中斷服務程序完成調(diào)時、調(diào)分功能。8253用來產(chǎn)生50ms的脈沖作為ir7的中斷請求信號。8255a負責將內(nèi)存里的時位、分位和秒位數(shù)值輸出到數(shù)碼管。8279a用來控制顯示器顯示時鐘。按鍵k1+和k2+分別作為ir2和ir6的中斷請求信號。按鍵k1+啟動/關(guān)閉對時功能,它決定是否屏蔽ir7和ir6中斷源。2.4各個芯片主要功能2.4.1 8255主要功能8255 可編程外圍接口芯片是 intel 公司生產(chǎn)的通用并行i/o 接口芯片,它具有a、b、c 三個并行接口,并行接口是以數(shù)據(jù)的字節(jié)為單位與i/o 設備或被控制對象之間傳遞信息。cpu 和接口之間 的數(shù)據(jù)傳送總是并行的,即

12、可以同時傳遞8 位、16 位、32 位等。用+5v 單電源供電,能在以下三種方式下工作:方式0-基本輸入/出方式、方式1-選通輸入/出方式、方式2-雙向選通工作方式。8255 的內(nèi)部結(jié)構(gòu)及引腳如圖2.1所示:圖2.1 內(nèi)部結(jié)構(gòu)及引腳8255 工作方式控制字和c口按位置位/ 復位控制字格式如圖3-7-2 所示:2.2 置位/ 復位控制字格式2.4.2 8259主要功能中斷控制器8259a 是intel 公司專為控制優(yōu)先級中斷而設計開發(fā)的芯片。它將中斷源優(yōu)先級 排隊、辨別中斷源以及提供中斷矢量的電路集于一片中,因此無需附加任何電路,只需對8259a 進行編程,就可以管理8 級中斷,并選擇優(yōu)先模式和

13、中斷請求方式,即中斷結(jié)構(gòu)可以由用戶編 程來設定。同時,在不需增加其他電路的情況下,通過多片8259a 的級連,能構(gòu)成多達64 級的矢量中斷系統(tǒng)。它的管理功能包括:1)記錄各級中斷源請求,2)判別優(yōu)先級,確定是否響應 和響應哪一級中斷,3)響應中斷時,向cpu 傳送中斷類型號。8259a 的內(nèi)部結(jié)構(gòu)和引腳如圖2.3所示:圖2.3 內(nèi)部結(jié)構(gòu)和引腳8259a 的命令共有7 個,一類是初始化命令字,另一類是操作命令。8259a 的編程就是根據(jù) 應用需要將初始化命令字icw1-icw4 和操作命令字ocw1- ocw3 分別寫入初始化命令寄存器 組和操作命令寄存器組。ocw1-ocw3 各命令字格 式如

14、圖2.4所示,其中ocw1 用于設置中斷屏蔽操作字,ocw2 用于設置優(yōu)先級循環(huán)方式和 中斷結(jié)束方式的操作命令字,ocw3 用于設置和撤銷特殊屏蔽方式、設置中斷查詢方式以及設 置對8259 內(nèi)部寄存器的讀出命令。圖2.4 ocw1-ocw3 各命令字格2.4.3 8254主要功能8254 是intel 公司生產(chǎn)的可編程間隔定時器。是8253 的改進型,比8253 具有更優(yōu)良的性能。8254 具有以下基本功能: 有3 個獨立的16 位計數(shù)器; 每個計數(shù)器可按二進制或十進制(bcd)計數(shù); 每個計數(shù)器可編程工作于6 種不同工作方式;每個計數(shù)器允許的最高計數(shù)頻率為10mhz(8253 為2mhz);

15、 8254 有讀回命令(8253 沒有),除了可以讀出當前計數(shù)單元的內(nèi)容外,還可以讀出狀態(tài)寄存器的內(nèi)容。 計數(shù)脈沖可以是有規(guī)律的時鐘信號,也可以是隨機信號。計數(shù)初值公式為n=fclki ÷fouti,其中fclki是輸入時鐘脈沖的頻率,fouti是輸出波形的頻率。 圖2.5 內(nèi)部結(jié)構(gòu)框圖和引腳圖上圖是8254 的內(nèi)部結(jié)構(gòu)框圖和引腳圖,它是由與cpu 的接口、內(nèi)部控制電路和三個計數(shù)器組成。8254 的工作方式如下述: (1) 方式0 :計數(shù)到0 結(jié)束輸出正躍變信號方式。 (2) 方式1:硬件可重觸發(fā)單穩(wěn)方式。 (3) 方式2 :頻率發(fā)生器方式。 (4) 方式3 :方波發(fā)生器。 (5)

16、方式4 :軟件觸發(fā)選通方式。 (6) 方式5 :硬件觸發(fā)選通方式。8254 的控制字有兩個:一個用來設置計數(shù)器的工作方式,稱為方式控制字;另一個用來設 置讀回命令,稱為讀回控制字。這兩個控制字共用一個地址,由標識位來區(qū)分??刂谱指袷饺绫?-9-1 所示。讀回控制字格式如表3-9-2 所示。當讀回控制字的d4 位為0 時,由該讀回控制字d1d2 位指定的計數(shù)器的狀態(tài)寄存器內(nèi)容將被鎖存到狀態(tài)寄存器中。狀態(tài)字格式如表2.6所示:圖2.6 8254狀態(tài)字格式三、詳細設計3.1 顯示的實現(xiàn)使用8259控制,用數(shù)碼管的顯示功能來設計,顯示部分用八只led為顯示管,這些led發(fā)光二極管的陰極是互相連接在一起

17、的,所以稱為共陰極數(shù)碼管。通過在這八只發(fā)光二極管的陽極加+5v或0v的電壓使不同的二極管發(fā)光,形成不同的字符和數(shù)字。電子時鐘用到的是0-9十個數(shù)字,它們所對應的字符表依次是3fh、06h、5bh、4fh、66h、6dh、7dh、07h、7fh、6fh。圖3.1 顯示模塊流程圖該模塊主要是將運算模塊和對時模塊運算出來并存放在內(nèi)存單元里的十八進制時位、分位和秒位數(shù)值轉(zhuǎn)化為十進制,并通過八只數(shù)碼管顯示出來。此模塊實現(xiàn)的硬件是使用實驗箱中的led單元,采用軟件譯碼,即在程序中設置一個段選碼表。cpu直接往led輸出八段代碼,省去了硬件譯碼器。8259輸出b0-b3,a0-a3作為八段數(shù)據(jù)輸出口,經(jīng)74

18、ls07驅(qū)動后到達各led。只要做到每次送一次段選碼時也送一次掃描碼,并且每送一次位掃描碼后,位碼中的0右移一位作為下一次的位掃描碼,即可實現(xiàn)從右向右使八只led依次出現(xiàn)數(shù)字顯示,這里位掃描碼的送出和右移是由8259自動實現(xiàn)的。顯示的基本代碼如下:mov ax,sec ;完成秒計時值的顯示 call decshow mov ax,0e0dh ;回車,置光標到行首 int 10h 這是對秒的顯示,以此類推可以得到顯示分、時的代碼。3.2 計時的實現(xiàn)該模塊的主要功能是對時、分、秒的運算,并把運算出的最終結(jié)果存放到事先已經(jīng)開辟的內(nèi)存單元里,以便顯示模塊即時地顯示出來。該模塊可細分為秒定時模塊和運算模

19、塊。秒定時模塊負責提供中斷信號,由于cpu運算模塊中的指令消耗一定的時間,所以中斷信號最好通過硬件來實現(xiàn),可以選擇實驗箱中的8253或8254定時/計數(shù)器來提供,但又因為8254所能提供的信號的周期是毫秒級的,因此必須通過軟件的方法在運算模塊中設置一個統(tǒng)計中斷次數(shù)的變量,并且這一變量必須事先在內(nèi)存里開辟存儲單元。中斷信號是8254的通道2工作方式3時,產(chǎn)生一個30hz的脈沖信號。運算模塊負責時、分、秒的計算,該模塊主要通過8259的ir7號中斷來實現(xiàn),但由于每30hz一次中斷請求,所以在中斷服務程序必須利用已申請內(nèi)存單元count來統(tǒng)計中斷請求的次數(shù),只有當count的值為30時,才能讓秒單元

20、內(nèi)的數(shù)值加1。另外,在中斷服務程序里,必須對秒、分和時的單元內(nèi)的數(shù)值進行判斷,當秒加到60時,分必須加1,秒清零;當分加到60時,時加1,分清零;當時加到24時,直接清零,然后轉(zhuǎn)到調(diào)用處。這是計時的基本代碼,為是實現(xiàn)準確的計時1秒。利用了8254的outo 30hz輸出一個脈沖。即1/30秒產(chǎn)生一次中斷。所以count自加到30則記數(shù)1秒。其他以次類推。inc count cmp count,30 jnz over mov count,0 inc sec cmp sec,10 ;計時值自增,到10即歸0 jne dis mov sec,0mov ax,hour mov dx,0 ;完成時計時值

21、的顯示 mov bx,10 div bx3.3主程序流程圖圖3.3系統(tǒng)實現(xiàn)流程圖 主程序的流程圖是對整個程序的邏輯的圖象表示。首先是設置8254、8255、8259的各個端口地址。接著初始化各個芯片,開始計時,并通過8259中斷控制時間的正確顯示。在整個過程中都在檢測是否有銨鍵響應。有則停止,沒有則返回繼續(xù)執(zhí)行。3.4實驗連接線路圖 系統(tǒng)的連線圖主要由五個部分構(gòu)成。8259中斷控制器、8255并口控制器、8254定時計數(shù)器、鍵盤及數(shù)碼管顯示單元、開關(guān)及l(fā)ed顯示單元構(gòu)成。如下圖所示:圖3.4 實物連線圖四、詳細代碼*根據(jù)check配置信息修改下列符號值*intr_ivadd equ 01cch

22、 ;intr對應的中斷矢量地址intr_ocw1 equ 0a1h ;intr對應pc機內(nèi)部8259的ocw1地址intr_ocw2 equ 0a0h ;intr對應pc機內(nèi)部8259的ocw2地址intr_im equ 0f7h ;intr對應的中斷屏蔽字pci_intcsr equ 0df38h ;pci卡中斷控制寄存器地址ioy0 equ 0da00hioy1 equ 0da40h;*my8254_count0 equ ioy0+00h*4 ;8254計數(shù)器0端口地址my8254_count1 equ ioy0+01h*4 ;8254計數(shù)器1端口地址my8254_count2 equ i

23、oy0+02h*4 ;8254計數(shù)器2端口地址my8254_mode equ ioy0+03h*4 ;8254控制寄存器端口地址my8255_a equ ioy1+00h*4 ;8255的a口地址my8255_b equ ioy1+01h*4 ;8255的b口地址my8255_c equ ioy1+02h*4 ;8255的c口地址my8255_mode equ ioy1+03h*4 ;8255的控制寄存器地址stack1 segment stack dw 256 dup(?)stack1 endsdata segment cs_bak dw ? ;保存intr原中斷處理程序入口段地址的變量ip

24、_bak dw ? ;保存intr原中斷處理程序入口偏移地址的變量im_bak db ? ;保存intr原中斷屏蔽字的變量sec dw 0 ;秒計時變量min dw 9hour dw 0count db 0data endsdata1 segment value db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h, 7fh, 6fh,77hdata1 endscode segment assume cs:code,ds:data,es:data1start: mov ax,data mov ds,ax cli mov dx,pci_intcsr sub dx,1

25、9h in al,dx mov dx,pci_intcsr ;初始化pci卡中斷控制寄存器 mov ax,1f00h ;向pci_intcsr中寫入003f1f00h out dx,ax add dx,2 mov ax,003fh out dx,ax mov ax,0000h ;替換intr的中斷矢量 mov es,ax mov di,intr_ivadd mov ax,es:di mov ip_bak,ax ;保存intr原中斷處理程序入口偏移地址 mov ax,offset myisr mov es:di,ax ;設置當前中斷處理程序入口偏移地址 add di,2 mov ax,es:di

26、 mov cs_bak,ax ;保存intr原中斷處理程序入口段地址 mov ax,seg myisr mov es:di,ax ;設置當前中斷處理程序入口段地址 mov dx,intr_ocw1 ;設置中斷屏蔽寄存器,打開intr的屏蔽位 in al,dx mov im_bak,al ;保存intr原中斷屏蔽字 and al,intr_im out dx,al mov dx,my8255_mode ;初始化8255工作方式 mov al,80h ;工作方式0,a口輸出 out dx,al mov dx,my8255_a ;寫a口發(fā)出的起始數(shù)據(jù) mov al,3fh out dx,al sti

27、 mov sec,0 mov ax,sec call decshow mov ax,0e0dh ;回車,置光標到行首 int 10h mov dx,my8254_mode ;初始化8254工作方式 mov al,34h ;計數(shù)器0,方式2 out dx,al mov dx,my8254_count0 ;裝入計數(shù)初值 mov al,0a2h out dx,al mov al,87h out dx,alwait1: mov ah,1 ;判斷是否有按鍵按下 int 16h jz wait1 ;無按鍵則跳回繼續(xù)等待,有則退出quit: cli mov dx,pci_intcsr ;恢復pci卡中斷控制

28、寄存器 mov ax,0000h out dx,ax mov ax,0000h ;恢復intr原中斷矢量 mov es,ax mov di,intr_ivadd mov ax,ip_bak ;恢復intr原中斷處理程序入口偏移地址 mov es:di,ax add di,2 mov ax,cs_bak ;恢復intr原中斷處理程序入口段地址 mov es:di,ax mov dx,intr_ocw1 ;恢復intr原中斷屏蔽寄存器的屏蔽字 mov al,im_bak out dx,al sti mov ax,4c00h ;返回到dos int 21hmyisr proc near ;中斷處理程

29、序myisr mov ax,data mov ds,ax inc count cmp count,30 jnz over mov count,0 inc sec cmp sec,10 ;計時值自增,到10即歸0 jne dis mov sec,0 add min,1 cmp min,10 jne dis mov min,0 add hour,1dis: mov ax,sec ;完成秒計時值的顯示 call decshow mov ax,0e0dh ;回車,置光標到行首 int 10hover: mov dx,pci_intcsr sub dx,19h in al,dx mov dx,pci_i

30、ntcsr ;清pci卡中斷控制寄存器標志位 add dx,2 mov ax,003fh out dx,ax mov dx,intr_ocw2 ;向pc機內(nèi)部8259發(fā)送中斷結(jié)束命令 mov al,20h out dx,al mov al,20h out 20h,al iretmyisr endpdecshow proc near mov ax,data mov ds,ax mov ax,hour mov dx,0 ;完成時計時值的顯示 mov bx,10 div bx add al,30h ;顯示計時值十位 mov ah,0eh int 10h add dl,30h ;顯示計時值個位 mov

31、 al,dl mov ah,0eh int 10hmov al,3ahmov ah,0ehint 10h mov ax,min mov dx,0 ;完成分計時值的顯示 mov bx,10 div bx add al,30h ;顯示計時值十位 mov ah,0eh int 10h add dl,30h ;顯示計時值個位 mov al,dl mov ah,0eh int 10hmov al,3ahmov ah,0ehint 10h mov ax,sec mov dx,0 ;完成秒計時值的顯示 mov bx,10 div bx add al,30h ;顯示計時值十位 mov ah,0eh int 1

32、0h xor bx,bx mov bl,dl add dl,30h ;顯示計時值個位 mov al,dl mov ah,0eh int 10h mov dx,my8255_a ;寫a口 mov ax,data1 mov es,ax lea di,value ;es: data1, di: value mov al,es:di+bx out dx,al retdecshow endpcode ends end start五、上機調(diào)試過程5.1硬件調(diào)試本次課程設計采用的是star es598pci實驗儀,通過借用上位機的cpu來完成實驗,這樣就不需要我們再在單片機上另外插上一個cpu,而芯片74l

33、s273都已經(jīng)集成在一塊電路板上,節(jié)省了連線,出此以外還需要8255a一片,十六位邏輯開關(guān)一個。由于設計中所用的邏輯開關(guān)內(nèi)部已經(jīng)有74ls244作為驅(qū)動器,所以在接線時不再需要接入74ls244。在硬件接線連接時,應將8255a(ic37)的pa0pa7分別與邏輯電平開關(guān)電路的k1k8相連, pb7pb0分別與led顯示器的ah相連,pc7pc0分別與led顯示器的led0led7相連, cs0與8255a的片選(cs8255)相連。8086的8位數(shù)據(jù)線d7d0與8255的d7d0相連,地址線經(jīng)74ls373鎖存后其低位a0、a1分別與8255的a0、a1相連,至此,硬件線路已經(jīng)接好。 5.2

34、 軟件調(diào)試在軟件部分,程序分為三個部分:8255a初始化部分,讀入開關(guān)量部分,顯示出數(shù)字量部分。5.3 聯(lián)機調(diào)試軟件和硬件分別調(diào)試完畢后,進行聯(lián)機調(diào)試,出現(xiàn)了新的問題:顯示在led數(shù)碼管上的數(shù)字不停跳躍,變幻不定。要解決這個問題,可以在每個延時子程序的后面加上mov al,0ffh和out dx,al兩語句用來表示禁止顯示。因為在進入第二個數(shù)字的顯示時,如果不關(guān)一個位選碼(即禁止顯示),則數(shù)字要在兩個數(shù)碼管之間跳躍。因此,要在每個數(shù)字顯示后均要禁止顯示,防止串位,使之看見清楚。除此之外,每個數(shù)字顯示后的延時是利用延時子程序的循環(huán)次數(shù)來控制的,為了使數(shù)字編碼顯示得清楚,應該通過調(diào)試,確定延時子程

35、序的循環(huán)次數(shù)。在本設計中,循環(huán)次數(shù)設為16(10h)次。5.4結(jié)果分析結(jié)果:當程序開始全速運行時,led顯示器上顯示“00 00 00 ”,一秒后變?yōu)椤?0 00 01”這樣每隔一秒秒位加1,顯示“ 00 00 59”的后一秒顯示為“00 01 00”,顯示“23 59 59”的后一秒顯示為“ 00 00 00”。當開關(guān)k8置1時,無論怎樣改變k7 k1,led顯示器按正常計時顯示。當開關(guān)k8置0時,改變k7 k1,led顯示器上的顯示值會改變,具體情況如下:k6k4:000:修改秒位低位; 001:修改秒位高位; 010:修改分位低位; 011:修改分位高位; 100:修改時位低位; 101

36、:修改時位高位;k3k1:用于改變顯示的值。例如:若為0110,當k6k4為010時,分位低位的數(shù)字即修改為6,一秒后秒位增一顯示。分析:將8255a的 a口(pa0-pa7)作為輸入用,b口(pb0-pb7)作為輸出用(送段選碼),c口作為輸出用(送位選碼)。程序首先從8255a的a口讀取開關(guān)量,根據(jù)開關(guān)k7判斷是否需要修改時間,若開關(guān)k7為1,則在8255a的b口送段選碼,c口送位選碼后在led顯示器上顯示時間;若開關(guān)k7為0,則將根據(jù)k6 k5對應的值將開關(guān)量k4 k1對應的值經(jīng)段碼表轉(zhuǎn)換及程序轉(zhuǎn)換后在b口(pb0-pb7)輸出作為段選碼,在c口輸出位選碼后在led顯示器上顯示時間。然后

37、程序判斷之前設置的一秒的時間常量有沒有到,若一秒時間到,則將時間加一后接著顯示。六、總結(jié)體會通過近一周半的課程設計時間,課程設計的基本目的達到了。另外還有很多其它有益的地方。本系統(tǒng)完成了電子時鐘的基本功能。利用8254定時器從0開始進行計時,將計時的結(jié)果顯示在數(shù)碼管上。每隔1秒,秒鐘計時一次,到60秒,分鐘加1,到60分小時加1,數(shù)字變動信息通過8255送數(shù)碼管顯示。期間通過8259中斷控制器實現(xiàn)秒到分,分到時的轉(zhuǎn)變,準確實現(xiàn)了計時。隨著科技的進步電子時鐘的實現(xiàn)方法已經(jīng)很多,由傳統(tǒng)的物理實現(xiàn)轉(zhuǎn)變到軟件實現(xiàn),而且起精確程度也大大的提高,且實現(xiàn)方法也越來越簡單。在這里是在學完了微機原理及接口技術(shù)進

38、行的課程設計,所以這里是基于微機原理的基礎知識來實現(xiàn)電子時鐘的,首先應該畫出硬件設計圖,這個過程是基礎,然后是流程圖,這個是重點,流程圖的完成在很大程度上等于程序的完成,然后是程序的編寫。通過輔導老師的指導,同學們的相互幫助,我收獲了很多,也通過設計增強了自己動手的能力,同時也對自己所學到的知識作一個肯定。學好這門課程在自己今后的學習和工作中都有很大的作用,對自己以后的幫助也很大.這次課程設計給我的最大的印象就是如果自己有了興趣,就動手去做,困難在你的勇氣和毅力下是抬不了頭的。而在這次課程設計中,也是對匯編語言的復習。同時在設計中使我的編程水平提高了一大步,使我認識到合作的可貴。這次設計涉及到很多芯片的應用,最大特點是軟,硬件的結(jié)合,對動手能里的要求很大。也使我更加的體會到,在一定程度和科技水平上,硬件和軟件是可以實現(xiàn)對等轉(zhuǎn)化的。電子時鐘的發(fā)展史就很好的詮釋了這個過程。從物理硬件實現(xiàn)

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論