




下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、東南大學吳健雄學院微機課程設(shè)計電梯控制器作者:日期:姓 名:學 號:東南大學吳健雄學院微機實驗及課程設(shè)計課程設(shè)計報告FBIWarning:匯編代碼是好幾屆之前的一個學姐的,我只是修改了一下修改后完美運行 報告是我自己寫的 轉(zhuǎn)載不需要注明出處,就說是你寫的專 業(yè):吳健雄學院實驗室:計算機硬件實驗室組 別:同組人員:設(shè)計時間:2012年5月17日2012年6月6日審閱教師:評定成績:.課程設(shè)計目的與要求.方案論證與原理設(shè)計三. 詳細(機理)設(shè)計四. 方案實現(xiàn)與測試(或調(diào)試)五.分析與總結(jié).課程設(shè)計目的與要求設(shè)計目的:微機課程綜合設(shè)計用于檢驗和提高學生在原理與接口綜合應用方面分析問題與解決問題的能力
2、,同時也給學生提供更多、更好的訓練機會,課程給出了10道微機硬件應用綜合測試題。為完成每道測試題,至少需要選用TPC微機實驗裝置中三部分以上的硬件電路(還需將它們有機組合起來) 并編制相應的應用。通過試驗還能夠讓學生更好的了解所學知識在實際控制中的運用,增加對本專業(yè)的認識和學習興趣。設(shè)計要求:1)設(shè)計基本要求用鍵盤、按鈕、八段碼和 LED模擬電梯工作過程。樓層設(shè)為 8層,鍵盤數(shù)字鍵18用來鍵入希望停的樓層,8個LED顯示希望停的樓層,2位八段碼指示電梯當前所在樓層,按鈕用來啟、停電梯。電梯正常運行時以每2秒1層的速度上升或下降。要求“電梯”能按以下方式運行(1)設(shè)當前電梯停在某層(2位八段碼顯
3、示相應樓層,8個LED全滅)。鍵入18數(shù)字鍵,如鍵入的數(shù)字與當前電梯停層同,則什么亦不動作,若不同則相應樓層的LED亮;如再按運行鍵,則電梯自動判別上升或下降(在運行過程中八段碼顯示樓層變化)一直到達希望停的樓層(八段碼顯示該樓層,相應LED滅);(2)設(shè)當前電梯正在上升或下降運行(此時八段碼顯示樓層變化,LED指示希望抵達的樓層),若鍵入新的希望停的樓層數(shù)字(相應的 LED亮),則對同方向(上升或下降)未到的樓層能停,對其它情況則先停原希望停的樓層,然后按運行鍵后繼續(xù)運行)。如下幾例: 設(shè)電梯當前在2層,向上運行,LED指示希望在6層停,此時若鍵入4,則電梯將在4樓停,若再按運行鍵,則繼續(xù)運
4、行至6層停; 同上情況,若鍵入的不是 4而是8,則電梯將先停在6層,再按運行鍵,運行至 8層停;同上情況,若鍵入的不是 4 (或8),而是1,則電梯先停在6層,再按運行鍵,運行至1層停。2)進一步設(shè)計要求除運行按鈕外,再設(shè)計幾個按鈕,模擬更多的電梯運行功能,如:同步在8*8點陣顯示器顯示上升與下降箭頭,當停止時顯示當前所在樓層號直達按鈕。若按此按鈕,電梯按直達方式運行,即對運行期間新鍵入的??繕菍樱词故峭较蛭吹綐菍樱┮嗖煌?,直達終點樓層;急停按鈕。電梯運行中,若按此按鈕,則電梯立即停在下一到達的樓層;C4)斷電待修按鈕。按下該鈕電梯不能工作,再按一下才能重新工作;®設(shè)置急停開關(guān)(
5、K0-K7至一),弓I入中斷處理,立即響應,就近???分工情況:我跟XXX 組,我主要負責程序框架的構(gòu)建和大部分代碼的編寫,XXX負責其他的程序編寫和硬件連接等工作。.方案論證與原理設(shè)計我們在成熟考慮程序的整體要求和框架后,決定把程序總共分為四個模塊,分別為電梯運行模塊,電梯接受請求判斷模塊,顯示模塊,計時模塊。電梯運行模塊是整個程序的主模塊,其主要功能就是判斷電梯的運行方向和??克菍拥膬?yōu)先順序。電梯接受請求判斷模塊主要是應急停,直達,等待維修等命令。計時模塊用于對系統(tǒng)每二秒停一樓層的計數(shù)。顯示模塊則包括所要到的樓層的顯示和運行過程中所到樓層的實時顯示。有8個樓層,需要用8個按鍵模擬電梯
6、中的請求按鈕;當電梯靜止狀態(tài)時,無論外部哪一層有請求,電梯都由靜止狀態(tài)轉(zhuǎn)入向上或向下運行的狀態(tài),直到到達請求的樓層;當電梯處于向上運行的狀態(tài)時,此時高于該樓層向上的請求和內(nèi)部請求級別最高,其次是所有樓層向下的請求,再次是低于該樓層向上的請求;當電梯處于向下運行的狀態(tài)時則情況相反由于中斷級別在隨著電梯所處樓層的不同而變化,而且中斷源比較多。所以用每一個中斷源直接和中斷控制器相連,需要用到多個8259A級聯(lián),很不方便。為解決這個問題,首先定義三個單字節(jié)變量REQ U、REQ_D和REQ_IN分別存儲電梯每一層向上、向下和內(nèi)部的請求,每一位代表一層。例如,這代表在2層和3層有向上的請求。8253定時
7、器每隔20ms產(chǎn)生一次中斷,中斷程序便去執(zhí) 當掃描到有電梯內(nèi)部或者外部按鍵時,將請求存儲到變量中。每到一個狀態(tài)時再檢查請求變00000110B,行掃描鍵盤,量 REQ_U、REQ U 為REQ_D和REQ_IN的值,根據(jù)電梯的運行方向和變量中的請求,來決定電梯下一步的運行。設(shè)電梯的當前樓層為floor (floor=18 ),運行方向為dir (dir=0,向上;dir=1,向下),在電梯運行的工程中,用數(shù)碼管輸出 floor值顯示當前的樓層。LED輸出REQ_IN的值顯示電梯內(nèi)已經(jīng)請求的樓層。主要的模塊如下:1 .可編程定時/計數(shù)器8253定時/計數(shù)器8253主要是用于定時20ms,觸發(fā)中斷
8、進行鍵盤掃描。電路連線是CLOCK0接Q6,分頻后頻率為46875Hz, OUT0接中斷IRQ2,每20ms中斷一次,GATE0接5v。計數(shù)器的初值應該是3A9H ;2. 8255并行接口單元8255主要是用于數(shù)碼管和發(fā)光二極管的數(shù)據(jù)輸出。所以用8255B 口 8接8個發(fā)光二極管,A 口接數(shù)碼管的數(shù)據(jù)端。3LED點陣顯示由于提高要求需要顯示上下箭頭,所以使用8*8點陣顯示箭頭。4微機控制器程序在微機上運行,通過總線控制實驗箱上各部件的運行。三.詳細(機理)設(shè)計1)軟件流程圖(總流程圖)本設(shè)計的軟件設(shè)計的思路:通過軟件編程使8253輸出定時信號申請中斷,在中斷服務(wù)程序中掃描鍵盤,如果有按鍵,修改
9、相應的變量位,并輸出內(nèi)部請求變量REQ_IN到發(fā)光二極管顯示當前的內(nèi)部請求樓層。在主程序中,查詢變量的值,根據(jù)電梯調(diào)度算法運行電梯。電梯控制器初始化各芯片于海磊61010317等待輸入.亠正確輸入?“AfN?退出程序退出?”顯示樓層1PN?"啟動?鍵入新的樓層?、樓層?/PY?1F1向上運行向下運行N?V 新的樓層在目標樓層與當先到新插入樓層前樓層之外先到目標樓層調(diào)用延時子程序調(diào)用八段碼和 LED 顯示子程序Y?h-"到達指定樓、層?N?圖表1電梯系統(tǒng)總流程圖2)電梯控制算法模塊邏輯實現(xiàn):當電梯向上運行時:a)位于當前層以下的向上請求都被忽略留到下次向上運行時處理。b)位于
10、當前層以上的向上請求都被記錄留到此次運行處理。C)當電梯向下運行時:無論哪層的向下請求都被忽略留到下次向下運行時處理。a)位于當前層以上的向下請求都被忽略留到下次向下運行時處理。b)位于當前層以下的向下請求都被記錄留到此次運行處理。C)無論哪層的向上請求都被忽略留到下次向上運行時處理。算法實現(xiàn):dir代表電梯的運行方向,0代表電梯向上運行,1代表向下運動。設(shè)REQ_U(n)代表第n層向上的請求, 同樣,REQ_D(n)代表第n層向下的請求,REQ_IN(n)代表第n層內(nèi)部的請求。求next的方法為:電梯向上 時,next為內(nèi)部請求的最小值和向上請求的大于floor的最小值之間的小者。電梯向下時
11、,next為內(nèi)部請求的最大值和向下請求中小于floor的最大值之間的大者。沒有滿足要求的時返回0。圖表2電梯控制算法流程圖3) LED顯示程序:本設(shè)計只用到了一個LED,只要將floor轉(zhuǎn)換為相應的段碼。先輸出位碼,再輸出段碼,循環(huán)輸出就可以動態(tài)顯示。為了循環(huán)的顯示,將LED顯示程序放在中斷服務(wù)程序中。(將“樓層”作偏移碼,利用 XLAT,很簡單就可以實現(xiàn)譯碼)/ 中斷 、保護現(xiàn)場ILED輸出顯示floorI圖表3電梯按鍵、顯示中斷流程圖4)硬件連接圖8253和8255芯片,規(guī)避了使用較為復雜的中斷。然后調(diào)試硬件,四.方案實現(xiàn)與測試(或調(diào)試) 首先根據(jù)設(shè)計思路,選擇采用8253、確定位選、芯片
12、等工作正常。這可以通過手動輸入控制字,進行簡單輸入輸出實現(xiàn)。然后確定 8255芯片的地址,開始軟件編程。軟件編程首先完成整體的邏輯框架,然后具體編寫子程序。剛開始時采用軟件延時,優(yōu)先調(diào)試8255。采用8255的A、B 口的0方式,A B 口的變化將反映在八段碼和LED燈上。子程序的編寫即將設(shè)計好的算法轉(zhuǎn)換為程序流,用程序流的方向?qū)崿F(xiàn)選擇,用調(diào)用子程序?qū)崿F(xiàn)具體操作。然后加入8253的硬件延時,將 0UT1連至PC0,通過不斷查詢 PC0 口的狀態(tài)進行延時。由于前面8255已經(jīng)調(diào)好,所以8253的調(diào)試比較順利。最終將全部硬件連線接好,進行整機聯(lián)調(diào)。當中發(fā)現(xiàn)許多問題,首先利用示波器排除硬件故障, 再
13、回過頭來對軟件進行單步,這時由于有現(xiàn)象,進行軟件調(diào)試的時候也更有針對性。通過設(shè)置斷點, 逐步跟蹤寄存器值,經(jīng)過幾次的修改之后,成功實現(xiàn)了預定方案。由于數(shù)碼管和LED燈顯示都是采用查表法,根據(jù)輸入字符的ASCII碼查表得到輸出,有時出現(xiàn)LED不正常亮滅的現(xiàn)象,是在查表時出錯,比如沒有減去31H,就會使燈的顯示雜亂無章。實物連接圖:II丄.» n '亠 I匸.亠 J- ;I . KI丿泌一'二*nn卜3h*«*i”“亨曲 * 丄L -.I *4 M :r ' IT I S I 一:;W 背nI11 i i J l.i11EECr4iI? ; pg t
14、187;T 2":覽 jB nf-".令宀斤慕h U.”廠五. 分析與總結(jié)1)設(shè)計要求每次電梯開關(guān)時間為2秒,而一開始我們無法保證精確的時間。后來經(jīng)過討論后發(fā)現(xiàn)可以用8253計數(shù)器達到此功能,我們翻閱書籍后分別用方式3和方式0實現(xiàn)了精確2秒的要求。2)編程中遇到的大多是邏輯問題 .另一個經(jīng)常遇到的問題就是跳轉(zhuǎn)語句超出范圍的錯誤,這個錯誤的解決是通過改變語句的順序,如實在無法通過改變順序來消除錯誤,則通過二次跳轉(zhuǎn),即跳過中間過程再跳至 目標。假設(shè)cl3)我們寫的電梯程序,d的意義為當前樓層,當輸入要去的樓層bl時,判斷bl與cl的大小關(guān)系,bl>cl,則程序先把cl加1
15、,再延時兩秒,再比較 bl與cl的大小是否相等,如果相等則跳出,不等則把 加1,再延時,再判斷。4)當在上行過程中再輸入另一個想去的樓層 了,因此在這上行兩秒內(nèi), cl已經(jīng)上了一層了。 則在即將到達的這一層停。由于一開始我們來判斷 ch則會使cl不斷增大,即ASCII碼不斷增大,cl加1ch時,則跳轉(zhuǎn)至 ch處理過程。因為是在延時前就把因此就必須判斷 ch以及bl是否與此時的cl相等,如相等 bl與cl是否相等,導致如果在即將到bl層的時候按下又返回至 0,又增大至bl才停止。5)另外一個問題就是 8個LED顯示要去哪個樓層的問題。我們是用數(shù)據(jù)DD0 DD7接到74LS273輸出的。bl, c
16、h同時要被顯示。我們于是就把 bl,ch的0,1,2, 3,.8分別對應于0B,1B,10B, 10000000B,然后把兩者相加就能顯示了。如果到達bl則把bl賦為0,則對應燈滅。如果到達ch,則把ch賦為0,則ch對應樓層燈滅。現(xiàn)在如果輸入ch等于bl,按要求是對應燈亮,到該層停,而實際上變成上一層燈亮,因為ch與bl對應二進制相加,產(chǎn)生進位。解決方法是,如果bl,ch相等,則先把cl復位為0,然后再調(diào)用LED顯示。6)電梯這個題目的特點就是狀態(tài)多,各種大小循環(huán)相互嵌套,很難寫代碼。但是,由于每一層的代碼都 是相似的,在調(diào)試出某一層之后,其他七層的代碼也很好寫。在設(shè)計過程中我們遇到了很多問
17、題,而匯編語言本身不是像高級語言一樣直觀和簡潔,剛開始走了不少彎 路,但不斷調(diào)試和查資料之后感覺好多了,程序的編寫速度也大大加快了。實驗過程中,我不斷翻書,鞏固了上課沒聽懂的知識,加深了對各個芯片的直觀的印象,也培養(yǎng)了細心實 驗的能力。參考書目::1:楊素行等,微型計算機系統(tǒng)原理及應用,北京,清華大學出版社,2009年:2:東南大學微機系統(tǒng)與接口課程組,微機實驗及課程設(shè)計教程試用版3.0,南京,東南大學出版社,附錄.代碼程序data segme ntiop ortio8253aio8253bio8253c2010 年equ 0ec00h-0280hequ ioport+280h;0計數(shù)端口計數(shù)
18、為10000,方式3 equ ioport+281h;1計數(shù)端口計數(shù)為200,方式0 equ iop ort+283h;8253 控制端;sha ngmia n shi 8253a,b,c端口地址io8255a equ iop ort+288h;8255控制端以及 io8255b equ iop ort+289hequ ioport+28bhio8255c equ iop ort+28ah io8255proth protlr nu mber min ;buff1 buff1 ;buff2 buff2 buff3menudbequ iop ort+290h;點陣燈顯示,equ iop ort+
19、298h;點陣燈顯示,3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh七段碼 00h,01h,02h,03h,04h,05h,06h,07h點陣的行 db 10h,30h,7fh,0ffh,0ffh,7fh,30h,10h;向上箭頭10h,20h,40h,0ffh,0ffh,40h,20h,10hdb 08h,0ch,0feh,0ffh,0ffh,0feh,0ch,08h 向下箭頭08h,04h,02h,0ffh,0ffh,02h,04h,08h00h,00h,00h,00h,00h,00h,00h,00h'*' 0DH 0AH*',0Dh
20、,0Ah行陣列陣dbdbdbdbdbdbI*DianTiKongZhiQi-elevatordbdbdb db db dbdb'*61010207 Jia Xiawe n*',0DH,0AH*61010317 Yu Hailei*',0Dh,0Ah'*' 0Dh 0Ah'input a nu mber to go to the corres ponding level',0DH,0AH 'escexit',0DH,0AH'entergo',0DH,0AHzgo directly',0Dh,0Ah
21、39;xquickst op ',0Dh,0Ah'cwait ing for fixi ng',0Dh,0Ahdb db db db db db db db dbdbdb'280H-8253CS',0Dh,0Ah '1MHz-8253_clk0',0Dh,0Ah 'VCC-8253_gate0',0Dh,0Ah'8253_clk1-8253_out0',0Dh,0Ah '8253_gate1-K0',0Dh,0Ah '8253_out1-8255_ PC0',0Dh,0Ah&
22、#39;28bH-8255_cs',0Dh,0Ah'PA07-SHU MA GUAN',0Dh,0Ah 'PB07-led07',0Dh,0Ahdb 'M0VE!',0Dh,0Ah ,'$'data ends stacks segme nt stackdb 100 dup (?)stacks ends code segme ntassume cs:code,ds:data,ss:stacksstart:mov ax,data 初始化mov ds,axmov dxQffset menu打印菜單,說明硬件電路的連接等mov a
23、h,09int 21hmov dx,io8255;8255初始化,a、b輸出,c 口輸入 mov al,89h out dx,almov bl,31h;bl代表當前電梯所在樓層,初始值設(shè)為1main: mov al,0call show nu mber;顯示當前樓層mov cl,0;cl為第一次輸入的要去的樓層mov ch,0;ch為在中途中再次輸入的要去的樓層call showledmov ah,01;通過鍵盤輸入第一次要去得樓層 clint 21hcmp al,1bh;是 esc貝U退出je exitcmp al,31h;鍵入的數(shù)字是否在1-8之間,如不是重新輸入jl mai ncmp a
24、l,38h;跟8比較,如果比8大,則循環(huán)輸入jg mai nmov cl,alcall showled;8個led燈顯示cl對應的樓層 cmp cl,bl;cl 與 bl 比較je mai n;相等則返回重新輸入jg up;大于則向上運行jl todow n;小于則向下運行exit: mov ah,4chint 21h電梯上行up: up1:call judge;電梯上行的情況add bl,1call up delay;調(diào)用向上運行延時子程序,出現(xiàn)向上的箭頭 call show number;調(diào)用顯示子程序,通過數(shù)碼管顯示當前樓層blcmp bl,cl;bl,cl不等則繼續(xù)je mai n;相
25、等則返回jmp up1up getch:mov ah,1在上升過程中如果有其他的鍵按下時int 21hcmp al,78h判斷是否為急停鍵xje jitcmp al,63h判斷是否為斷電待修鍵cje dua ndia ncmp al,31h;數(shù)字是否在1-8之間如不是繼續(xù)上行jl goto upcmp al,38hjg gotou pmov ch,alcall showledcall delay up call show nu mbercall judgeequ;判斷當前樓層與第一次要去的樓層是否相同cmp ch,bl;比較ch與bl的區(qū)別je louce ngxia ngde ng相等則在該
26、層停,等待運行信號輸入 jl xianshanghouxia;ch 小于 bl貝U先上行至 cl在下行至 ch cmp ch,cl;ch大于bl則在判斷ch與cl的大小關(guān)系 je xiangdengup;相等貝U直上行至 cl jl sameup;ch大于bl小于cl則先上行到ch在上行到cl jg tosameup2;ch大于cl則先上行到cl在上行到chgoto up:call delay upjmp up1dua ndia n: mov al,0;上升時遇到了斷電的情況,貝U等待鍵入,除非再次鍵入的為c才繼續(xù)運行mov ah,7int 21hcmp al,63hjne dua ndia
27、ncall delay upcall show nu mberjmp up1jit: call delayu p;上升時遇到了急停的情況,貝M亭在下一層,然后回到ma incall show nu mberjmp mai ntodow n: jmp dow nup delay proc n ear向上運行的延時子程序call delayfirst;用于初始化 8253p ush dxcall cleardots調(diào)用使其能夠清零up delay1:call dotsu p循環(huán)調(diào)用向上的箭頭顯示mov ah,1;鍵盤是否有輸入int 16hjne up getch;如有則跳轉(zhuǎn)到輸入處理mov dx
28、,io8255c;8255c 口輸入看2s延時是否結(jié)束in al,dxand al,01是否計時結(jié)束jz up delay1pop dxretup delay endptomai n: jmp maintosame up 2:jm p same up2; 上行中遇到的各種情況列舉louce ngxia ngde ng:call show number第二次要去得樓層與當前樓層相同,直接停在該層 mov ch,0 call showledcall stop2call upcljmp mai nxianshanghouxia:call showled先上行至U cl 再下行至U chcall up
29、clmov cl,0call showledcall stop2call dow nchjmp mai nxia ngde ngu p:mov ch,0二次要去的樓層與第一次要去的相同,call showledcall upcljmp mai nsame up:call showled同方向的樓層,先上行至U ch再上行到call upchmov ch,0call showledcall stop2call upcljmp mai nsame up 2:call showled; 同 方 向 的 樓層, 先 chcall upclmov cl,0call showledcall stop2ca
30、ll upchjmp mai njittt:jmp jit直接上行到第一次要取得樓層cl上行到 cl 再上行到電梯下行,與電梯上行的情況基本類似,稍作修改即可dow n:dow n1:call judge sub bl,1 call dow ndelay call show nu mbercmp bl,clje tomai njmp dow n1 dow ngetch:mov ah,1int 21hcmp al,78h je jit1 cmp al,63h je dua ndia n1cmp al,31h jl gotodow n cmp al,38hjg gotodow n mov ch,a
31、l call showled call delaydow ncall show nu mbercall judgeequcmp ch,blje stop dow ncljg downclupch;ch大于 bl貝U先下行至 cl在上行至 chcmp ch,cl;ch小于bl則在判斷ch與cl的大小關(guān)系je jmpdowncl;相等則一直下行至 cljl downcldownch;ch小于bl小于cl則先下行到cl在下行到chjg todownchdowncl;ch大于 cl貝U先下行至U ch在下行至U clgotodow n: call delaydow njmp dow n1duandia
32、n1: mov al,0;下降遇到了斷電的情況,則等待鍵入,除非再次鍵入的為c才繼續(xù)運行mov ah,7int 21hcmp al,63hjne dua ndia n1call delaydow ncall show nu mberjmp dow n1jit1: call delaydow n;下降時遇到了急停的情況,則停在下一層,然后回到ma incall show nu mberjmp mai ndown delay proc near向下運行延時子程序,與向上運行延時子程序大體相同call delayfirstpush dxcall cleardots調(diào)用使其能夠清零ddy:call d
33、otsdow n;循環(huán)調(diào)用向下的箭頭顯示mov ah,1int 16hjne dow ngetchmov dx,io8255cin al,dxand al,01jz ddypop dx retdow ndelay endptodow nchdow ncl:jm p dow nchdow ncl下行中遇到的各種情況列舉stop dow ncl:call showled mov ch,0 call showled call stop2 call dow ncljmp mai n dow nclup ch:call showledcall dow ncl mov cl,0call showled c
34、all stop2 call upch jmp mai njmp dow ncl:mov ch,0call showled call dow ncl jmp mai ndow ncldow nch:call showled call dow nclmov cl,0 call showled call stop2 call dow nch jmp mai ndow nchdow ncl:call showled call dow nch mov ch,0call showled call stop2 call dow ncl jmp mai n電梯上、下行中遇到的各種情況處理方法jitt:jmp
35、 jitttjudgeequ proc near判斷當前樓層與第一次要去的樓層的關(guān)系cmp cl,bljne backcmp cl,chje clequchmov cl,0call show nu mbercall showledcall stop2cmp ch,bljg up chherejl dow nchhereup chhere:call upchjmp mai ndow nchhere:call dow nchjmp mai nclequch:mov ch,0call showledcall onl ydelay; jmp mai nback:retjudgeequ endp upc
36、i proc near上行至U cl的子程序 up cl1: inc blcall dirdelay1call show nu mbercmp bl,cljl upcl1retupci endpjitt1:jmp jit1upch proc near上行至U ch的子程序 up ch1: add bl,1call dirdelay1call show nu mbercmp bl,chjl upch1retupch endp downcl proc near;下行至U cl 的子程序 dow ncl1:sub bl,1call dirdelay2call show nu mber cmp bl,
37、cljg dow ncl1retdow ncl endp downch proc near下行至U ch的子程序 dow nch1:sub bl,1call dirdelay2call show nu mbercmp bl,chjg dow nch1retdow nch endp直接上下行時對按鍵情況的處理stop2 proc n ear沒有直達鍵的暫停子程序 gost op 2:mov al,0mov ah,1int 21hcmp al,13jne gost op2 mov al,0 retstop2 endp dirgetch1:mov ah,1直接上行對按鍵的處理 int 21hcmp
38、al,63hje dirdua ndia n1cmp al,78hje jit21jmp dirback1 dirgetch2:mov ah,1直接下行對按鍵的處理 int 21hcmp al,63hje dirdua ndia n2cmp al,78hje jit22jmp dirback2jit21:call delayu p;call show nu mberjmp mai njit22:call delaydow n;call show nu mberjmp mai ndirdua ndia n1:mov al,0直接上行時遇到了斷電待修的情況 mov ah,1int 21hcmp a
39、l,63hjne dirdua ndia n1call delay up;call show nu mberjmp dirback1dirdua ndia n2:mov al,0直接下行時遇到了斷電待修的情況 mov ah,1int 21hcmp al,63hjne dirdua ndia n2call delaydow n;call show nu mberjmp dirback2tojit:jmp jittdirdelay1 proc near直接上行的延時子程序call delayfirst push dx call cleardots dirback1:call dots up;mov
40、 ah,1int 16hjne dirgetch1 mov dx,io8255c in al,dx and al,01 jz dirback1 pop dx retdirdelay1 endp tojit1: jmp jitt1 dirdelay2 proc near直接下行的延時子程序 call delayfirst push dxcall cleardots dirback2:call dotsdow n;mov ah,1int 16hjne dirgetch2 mov dx,io8255c in al,dx and al,01 jz dirback2 pop dx retdirdelay
41、2 endp; 直達情況的處理judge proc n ear判斷是否為直達鍵,如果是就直接到達,如果為enter正常執(zhí)行n ext1: mov al,0mov ah,1int 21hcmp al,7ah是否為直達鍵je zhidacmp al,13jne n ext1mov al,0retjudge endpzhida: cmp cl,bljl zhidadow njg zhida upjmp mai nzhidadow n: call delaydow nsub bl,1call zhidadelay2call show nu mberjmp zhidazhida up: call del
42、ay upadd bl,1call zhidadelay1call show nu mberjmp zhidazhidabutt on 1:mov ah,1直達對按鍵情況的處理,在上升時跳到此處int 21hcmp al,63hje zhidadua ndia n1cmp al,78hje tojitjmp zhidazhidabutt on 2:mov ah,1直達對按鍵情況的處理,在下降時跳到此處int 21hcmp al,63hje zhidadua ndia n2cmp al,78hje tojit1jmp zhidazhidadua ndia n1:mov al,0上升時遇到斷電待修
43、時mov ah,1int 21hcmp al,63h;cjne zhidadua ndia n1call delay up;call show nu mberjmp zhidazhidadua ndia n2:mov al,0下降時遇到斷電待修時mov ah,1int 21hcmp al,63hjne zhidadua ndia n2call delaydow n;call show nu mberjmp zhidazhidadelay1 proc n ear直 達延時程序call delayfirstP ush dx call cleardots n ext21: call dots up;
44、mov ah,1int 16hjne zhidabutt on1 mov dx,io8255c in al,dx and al,01 jz next21 pop dxretzhidadelay1 endpzhidadelay2 proc n ear直 達延時程序 call delayfirst p ush dx call cleardotsn ext22: call dotsdow n;mov ah,1int 16hjne zhidabutt on2 mov dx,io8255c in al,dx and al,01 jz n ext22 pop dx retzhidadelay2 endp判
45、斷延時是否結(jié)束以及 8253初始化delayfirst proc near;初始化8253的子程序,兩計數(shù)器連級,接入 1MHZ的脈沖,2s每次第二 個out接pcOpush dxmov dx,io8253c;8253的計數(shù)器0置方式3mov al,36hout dx,almov dx,io8253a;計數(shù)器0初始值為10000mov ax,10000out dx,almov al,ahout dx,almov dx,io8253c;8253的計數(shù)器1置方式0mov al,70hout dx,almov dx,io8253b;計數(shù)器1初始值為200mov ax,200out dx,almov
46、al,ahout dx,alpop dxretdelayfirst endponl ydelay proc near判斷延時時是否結(jié)束的子程序,注意由于點陣燈的顯示要寫進循環(huán)中,所 以分類,該延時僅用于延時push dxdelayx: mov dx,io8255c;查詢8255的PcO是否為高電平in al,dxand al,01 jz delayxpop dxretonl ydelay endpdelayup proc near判斷上升延時是否結(jié)束的子程序,包括了顯示向上箭頭的部分push dxcall cleardotsdelayy: call dots upmov dx,io8255c;
47、查詢8255的PcO是否為高電平in al,dxand al,01 jz delayypop dxretdelay up endpdelaydow n proc n ear判斷下降延時是否結(jié)束的子程序,包括了顯示向下箭頭的部分push dxcall cleardotsdelayz: call dotsdow nmov dx,io8255c;查詢8255的PcO是否為高電平in al,dxand al,01 jz delayzpop dxretdelaydow n endp顯示的子程序cleardots proc n ear用于對點陣顯示的清零,在第一次要循環(huán)前使用P ush dxp ush axmov al,00 mov dx,p rotlr out dx,alpop axpop dxcleardots endpdotsu p proc near點陣箭頭的顯示,向上箭頭的顯示子程序P ush cx p ush ax push bxmov cx,0008hmov si,offset minmov ah,01 movex: mov al,simov bx,offset buff1xlatmov dx, prothout dx,almov al,ahmov dx,p rotlr out dx,alshl ah,01inc si p ush cx mov cx,0ffffh dela
溫馨提示
- 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 大壩建設(shè)延時施工方案
- 煤礦綜掘施工方案
- 2024-2025學年高二生物人教版選擇性必修3上課課件 第3章 第2節(jié) 第1課時 目的基因的篩選與獲取、基因表達載體的構(gòu)建
- 英語演講馬可波羅
- 實訓工商注冊流程
- 新的業(yè)務(wù)系統(tǒng)培訓工作總結(jié)
- 鋼結(jié)構(gòu)高溫施工方案
- 傳染病對農(nóng)業(yè)與食品安全的影響
- 課題開題報告:基本建成學習型社會的指標體系和實踐途徑研究
- 課題開題報告:國外移民教育政策研究
- 運動技能學習與控制課件第一章運動技能學習與控制概述
- 穿堤涵閘工程施工方案
- 某污水處理廠設(shè)計倒置a2o工藝
- 貫入法砌筑砂漿抗壓強度報告
- GB/T 6495.2-1996光伏器件第2部分:標準太陽電池的要求
- GB 29444-2012煤炭井工開采單位產(chǎn)品能源消耗限額
- 甲溝炎教學課件
- 影視廣告賞析課件
- 神經(jīng)系統(tǒng)核醫(yī)學顯像課件
- 煙草專賣執(zhí)法人員考試案例分析題庫
- 車間維修電工安全技術(shù)操作規(guī)程
評論
0/150
提交評論