




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
2011年9月目錄\l"_Toc234206563#_Toc234206563"一理論局部2\l"_Toc234206564#_Toc234206564"1課題要求與內(nèi)容2\l"_Toc234206565#_Toc234206565"2系統(tǒng)方案設(shè)計(jì)3\l"_Toc234206566#_Toc234206566"3系統(tǒng)硬件設(shè)計(jì)3\l"_Toc234206567#_Toc234206567"4系統(tǒng)軟件設(shè)計(jì)5\l"_Toc234206568#_Toc234206568"二實(shí)踐局部5\l"_Toc234206569#_Toc234206569"1系統(tǒng)硬件原理簡(jiǎn)介6\l"_Toc234206570#_Toc234206570"2系統(tǒng)硬件調(diào)試中出現(xiàn)的問(wèn)題及解決措施6\l"_Toc234206571#_Toc234206571"3系統(tǒng)軟件6\l"_Toc234206572#_Toc234206572"3.1軟件設(shè)計(jì)6\l"_Toc234206573#_Toc234206573"3.2軟件調(diào)試中出現(xiàn)的問(wèn)題及解決措施6\l"_Toc234206574#_Toc234206574"三附錄10一、理論局部理論設(shè)計(jì)課題名稱(chēng):模擬電梯的設(shè)計(jì)與實(shí)現(xiàn)1課題要求與內(nèi)容1.1設(shè)計(jì)根本要求用鍵盤(pán)、按鈕、發(fā)光二極管和LED顯示單元來(lái)模擬電梯工作過(guò)程。樓層設(shè)為8層,用鍵盤(pán)鍵入希望停的樓層,8個(gè)發(fā)光二極管顯示希望停的樓層,LED指示電梯當(dāng)前所在樓層,按鈕用來(lái)啟、停電梯。電梯正常運(yùn)行時(shí)以每2秒1層的速度上升或下降。并在到達(dá)相關(guān)樓層時(shí)發(fā)錯(cuò)聲音提示。1.2提高要求設(shè)計(jì)幾個(gè)按鈕,模擬更多的電梯運(yùn)行功能,如:直達(dá)按鈕。假設(shè)按此按鈕,電梯按直達(dá)方式運(yùn)行,即對(duì)運(yùn)行期間新鍵入的??繕菍印布词故峭较蛭吹綐菍印骋嗖煌?,直達(dá)終點(diǎn)樓層;急停按鈕。電梯運(yùn)行中,假設(shè)按此按鈕,那么電梯立即停在下一到達(dá)的樓層。2.實(shí)驗(yàn)內(nèi)容電梯工作按以下方式運(yùn)行:2.1假設(shè)當(dāng)前電梯停在某層〔LED顯示相應(yīng)樓層,8個(gè)發(fā)光二極管全滅〕。鍵入數(shù)字鍵,如鍵入的數(shù)字與當(dāng)前電梯??繉酉嗤?,那么什么也不做,假設(shè)不同那么相應(yīng)樓層的發(fā)光二極管亮;電梯自動(dòng)判別上升或下降〔在運(yùn)行過(guò)程中用八段碼來(lái)顯示樓層變化〕一直到達(dá)希望停的樓層〔八段碼顯示該樓層,相應(yīng)LED滅〕。2.2假設(shè)當(dāng)前電梯正在上升或下降運(yùn)行〔此時(shí)八段碼顯示樓層變化,LED指示希望抵達(dá)的樓層〕,假設(shè)鍵入新的希望停靠的樓層數(shù)字〔相應(yīng)的LED亮〕,那么對(duì)同方向〔上升或下降〕未到的樓層能??浚瑢?duì)其它情況那么先??吭认M5臉菍?,然后繼續(xù)運(yùn)行〕。如下幾例:設(shè)電梯當(dāng)前在2層,向上運(yùn)行,LED指示希望在4層停,此時(shí)假設(shè)鍵入3,那么電梯將在3樓停,然后繼續(xù)運(yùn)行至4層停;同上情況,假設(shè)鍵入的不是3而是5,那么電梯將先停在4層,然后運(yùn)行至5層停;同上情況,假設(shè)鍵入的不是3〔或5〕,而是1,那么電梯先停在4層,然后運(yùn)行至1層停。2系統(tǒng)方案設(shè)計(jì)本設(shè)計(jì)主要是利用微機(jī)應(yīng)用實(shí)驗(yàn)平臺(tái)來(lái)模擬電梯的運(yùn)行,用到了平臺(tái)上的一個(gè)非編碼鍵盤(pán)、LED顯示器、八段數(shù)碼管等模塊。有8個(gè)樓層,需要用8個(gè)按鍵模擬電梯中的請(qǐng)求按鈕,用5個(gè)按鍵模擬8個(gè)樓層每層向上請(qǐng)求的按鈕,再用8個(gè)模擬8個(gè)樓層每層向下請(qǐng)求的按鈕。非編碼鍵盤(pán)有16個(gè)鍵,可以用1-8號(hào)鍵模擬電梯內(nèi)的按鈕,用8-0號(hào)鍵模擬每層向上請(qǐng)求的按紐,A-H模擬每層向下請(qǐng)求的按紐。當(dāng)電梯靜止?fàn)顟B(tài)時(shí),無(wú)論外部哪一層有請(qǐng)求,電梯都由靜止?fàn)顟B(tài)轉(zhuǎn)入向上或向下運(yùn)行的狀態(tài),直到到達(dá)請(qǐng)求的樓層;當(dāng)電梯處于向上運(yùn)行的狀態(tài)時(shí),此時(shí)高于該樓層向上的請(qǐng)求和內(nèi)部請(qǐng)求級(jí)別最高,其次是所有樓層向下的請(qǐng)求,再次是低于該樓層向上的請(qǐng)求;當(dāng)電梯處于向下運(yùn)行的狀態(tài)時(shí)那么情況相反。由于中斷級(jí)別在隨著電梯所處樓層的不同而變化,而且中斷源比擬多。所以用每一個(gè)中斷源直接和中斷控制器相連,需要用到多個(gè)8259A級(jí)聯(lián),很不方便。為解決這個(gè)問(wèn)題,首先定義三個(gè)單字節(jié)變量REQ_U、REQ_D和REQ_IN分別存儲(chǔ)電梯每一層向上、向下和內(nèi)部的請(qǐng)求,每一個(gè)變量用低8位,每一位代表一層。例如,REQ_U為00000110B,這代表在2層和3層有向上的請(qǐng)求。8253定時(shí)器每隔20ms產(chǎn)生一次中斷,中斷程序便去執(zhí)行掃描鍵盤(pán),當(dāng)掃描到有電梯內(nèi)部或者外部按鍵時(shí),將請(qǐng)求存儲(chǔ)到變量中。每到一個(gè)狀態(tài)時(shí)再檢查請(qǐng)求變量REQ_U、REQ_D和REQ_IN的值,根據(jù)電梯的運(yùn)行方向和變量中的請(qǐng)求,來(lái)決定電梯下一步的運(yùn)行。設(shè)電梯的當(dāng)前樓層為floor〔floor=1~8〕,運(yùn)行方向?yàn)閐ir〔dir=0,向上;dir=1,向下〕,在電梯運(yùn)行的工程中,用數(shù)碼管輸出floor值顯示當(dāng)前的樓層。LED輸出REQ_IN的值顯示電梯內(nèi)已經(jīng)請(qǐng)求的樓層。3系統(tǒng)硬件的設(shè)計(jì)由于采用了PC機(jī)資源和微機(jī)實(shí)驗(yàn)平臺(tái),不需要其他的硬件電路。利用了微機(jī)平臺(tái)上的8254定時(shí)/計(jì)數(shù)器、8255并行接口單元、LED單元、非編碼鍵盤(pán)、數(shù)碼管顯示單元等等。系統(tǒng)結(jié)構(gòu)框圖,如圖1所示。圖1系統(tǒng)結(jié)構(gòu)框圖主要的模塊如下:1.可編程定時(shí)/計(jì)數(shù)器8254定時(shí)/計(jì)數(shù)器8254主要是用于定時(shí)20ms,觸發(fā)中斷進(jìn)行鍵盤(pán)掃描。電路連線是CLOCK0接Q6,分頻后頻率為46875Hz,OUT0接中斷IRQ2,每20ms中斷一次,GATE0接5v。計(jì)數(shù)器的初值應(yīng)該是3A9H。2.8255并行接口單元 8255主要是用于鍵盤(pán)的掃描和發(fā)光二極管的數(shù)據(jù)輸出。所以用8255A口的低8位接8個(gè)發(fā)光二極管,B口低4位接非編碼鍵盤(pán)的列線,高4位接鍵盤(pán)的行線。3.LED顯示系統(tǒng)雖然只用了1格LED顯示器,但為了數(shù)字更新更方便,主程序更加簡(jiǎn)單,故此系統(tǒng)選用動(dòng)態(tài)顯示方式。由于系統(tǒng)的軟件局部的運(yùn)行時(shí)的核心程序是一直循環(huán)的,因此顯示程序也是在循環(huán)過(guò)程中一直被調(diào)用,從而實(shí)時(shí)地被顯示出來(lái)。4.非編碼鍵盤(pán)本系統(tǒng)采用的是行反轉(zhuǎn)法來(lái)掃描鍵盤(pán)的,調(diào)用鍵盤(pán)掃描的程序TESTKEY后,程序中的變量KEY的值就是按下的鍵的值,如果KEY為0FFH那么表示無(wú)鍵盤(pán)輸入,為0~15那么按照上往下從左往右的順序分別代表每一個(gè)按鍵按下的信息。不過(guò)此掃描程序沒(méi)有考慮到多個(gè)按鍵同時(shí)按下的情況。又因?yàn)槟M電梯的按鍵一般不會(huì)有兩個(gè)按鍵同時(shí)按下的情況,所以,多個(gè)按鍵的情況可以不予考慮。4系統(tǒng)軟件設(shè)計(jì)本設(shè)計(jì)的軟件設(shè)計(jì)的思路:通過(guò)軟件編程使8254輸出定時(shí)信號(hào)申請(qǐng)中斷,在中斷效勞程序中掃描鍵盤(pán),如果有按鍵,修改相應(yīng)的變量位,并輸出內(nèi)部請(qǐng)求變量REQ_IN到發(fā)光二極管顯示當(dāng)前的內(nèi)部請(qǐng)求樓層。在主程序中,查詢(xún)變量的值,根據(jù)電梯調(diào)度算法運(yùn)行電梯。1.主要設(shè)計(jì)模塊程序主要包括以下主要模塊:鍵盤(pán)掃描程序、LED顯示程序、電梯調(diào)度算法。鍵盤(pán)掃描程序:采用的是行反轉(zhuǎn)法來(lái)掃描鍵盤(pán)的,相應(yīng)的程序設(shè)計(jì)請(qǐng)參考實(shí)驗(yàn)指導(dǎo)書(shū)上實(shí)驗(yàn)3中的相關(guān)介紹。LED顯示程序:本設(shè)計(jì)只用到了一個(gè)LED,只要將floor轉(zhuǎn)換為相應(yīng)的段碼。先輸出位碼,再輸出段碼,循環(huán)輸出就可以動(dòng)態(tài)顯示。為了循環(huán)的顯示,將LED顯示程序放在中斷效勞程序中。電梯調(diào)度算法:在設(shè)計(jì)時(shí)將電梯一次從下到上視為一次運(yùn)行〔注意不一定從底層到頂層〕,同理,電梯一次從上到下也視為一次運(yùn)行〔注意不一定從頂層到底層〕。當(dāng)電梯向上運(yùn)行時(shí):位于當(dāng)前層以下的向上請(qǐng)求都被忽略留到下次向上運(yùn)行時(shí)處理。位于當(dāng)前層以上的向上請(qǐng)求都被記錄留到此次運(yùn)行處理。無(wú)論哪層的向下請(qǐng)求都被忽略留到下次向下運(yùn)行時(shí)處理。當(dāng)電梯向下運(yùn)行時(shí):位于當(dāng)前層以上的向下請(qǐng)求都被忽略留到下次向下運(yùn)行時(shí)處理。位于當(dāng)前層以下的向下請(qǐng)求都被記錄留到此次運(yùn)行處理。無(wú)論哪層的向上請(qǐng)求都被忽略留到下次向上運(yùn)行時(shí)處理。二實(shí)踐局部1系統(tǒng)硬件原理簡(jiǎn)介8255可編程外圍接口芯片8255有3個(gè)8為并行I/O口,8255有三通道3種工作方式的可編程并行接口芯片,其可以作為單片機(jī)與多種外圍接口設(shè)備連接時(shí)的中間接口電路。8255作為主機(jī)與外圍設(shè)備的芯片連接,必須提供與主機(jī)相連的3個(gè)總線接口:數(shù)據(jù)線、地址線、控制線接口。同時(shí)必須具有與外設(shè)連接的接口A\B\C口。其必須具有邏輯可控局部,8255內(nèi)部的結(jié)構(gòu)分為3個(gè)局部:與CPU連接局部、與外設(shè)連接局部、可口局部。(1)8254定時(shí)/計(jì)數(shù)器的性能:有3個(gè)獨(dú)立的16位計(jì)數(shù)器;(2)每個(gè)計(jì)數(shù)器可二進(jìn)制或十六進(jìn)制計(jì)數(shù);(3)每個(gè)可編程計(jì)數(shù)器有6種不同的工作方式(4)8254允許的最高的頻率是10MHz,計(jì)數(shù)脈沖可以是有規(guī)律的時(shí)鐘信號(hào),也可是隨機(jī)信號(hào)。2系統(tǒng)硬件調(diào)試中出現(xiàn)的問(wèn)題及解決措施線路連接錯(cuò)誤,無(wú)法實(shí)現(xiàn)預(yù)期功能,解決措施:仔細(xì)檢查電路,查找錯(cuò)誤并改正。在接線的時(shí)候8254的GATE0沒(méi)有接5V電源,導(dǎo)致相關(guān)芯片無(wú)法工作,經(jīng)細(xì)心排查,將錯(cuò)誤找錯(cuò)并改正。有一次調(diào)試時(shí)試驗(yàn)箱的電源沒(méi)開(kāi)就運(yùn)行軟件關(guān)聯(lián)進(jìn)行調(diào)試,結(jié)果認(rèn)為是某個(gè)芯片壞了,后來(lái)才發(fā)現(xiàn)時(shí)低級(jí)錯(cuò)誤。解決措施:重啟電腦,翻開(kāi)試驗(yàn)箱電源,重新運(yùn)行。另一次,8255的A口語(yǔ)8個(gè)發(fā)光二極管連接時(shí)端口的連接順序不小心連反了,結(jié)果實(shí)現(xiàn)不了預(yù)期功能,經(jīng)同學(xué)幫助排查才最終找到錯(cuò)誤并將其改正過(guò)來(lái)。3系統(tǒng)軟件西安唐都TD-CMA計(jì)算機(jī)組成原理與系統(tǒng)結(jié)構(gòu)教學(xué)實(shí)驗(yàn)系統(tǒng)3.1軟件設(shè)計(jì)程序流程圖1〕主程序框圖如圖21〕主程序框圖如圖2圖2主程序框圖2〕中斷效勞程序框圖如圖3圖3中斷效勞程序框圖3〕電梯算法流程圖如圖4其中,dir代表電梯的運(yùn)行方向,0代表電梯向上運(yùn)行,1代表向下運(yùn)動(dòng)。設(shè)REQ_U(n)代表第n層向上的請(qǐng)求,同樣,REQ_D(n)代表第n層向下的請(qǐng)求,REQ_IN(n)代表第n層內(nèi)部的請(qǐng)求。求next的方法為:電梯向上時(shí),next為內(nèi)部請(qǐng)求的最小值和向上請(qǐng)求的大于floor的最小值之間的小者。電梯向下時(shí),next為內(nèi)部請(qǐng)求的最大值和向下請(qǐng)求中小于floor的最大值之間的大者。沒(méi)有滿足要求的時(shí)返回0。圖4電梯算法流程圖3.2軟件調(diào)試中出現(xiàn)的問(wèn)題及解決措施程序編寫(xiě)的時(shí)候,指令寫(xiě)錯(cuò),導(dǎo)致軟件調(diào)試出現(xiàn)問(wèn)題,解決措施:認(rèn)真閱讀程序,把錯(cuò)誤找出并改正。實(shí)驗(yàn)儀器的電源沒(méi)翻開(kāi)就開(kāi)始運(yùn)行程序,結(jié)果造成死機(jī),解決措施:重新正確運(yùn)行。相關(guān)參數(shù)設(shè)計(jì)錯(cuò)誤導(dǎo)致流水燈與聲音無(wú)法同時(shí)滿足實(shí)驗(yàn)要求。解決措施:經(jīng)過(guò)老師指出,發(fā)現(xiàn)是相關(guān)的指令與參數(shù)錯(cuò)誤所致,經(jīng)同學(xué)幫助,將其改正。三附錄:參考程序清單INTR_IVADDEQU01C8H;INTR對(duì)應(yīng)的中斷矢量地址INTR_OCW1EQU0A1H;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的OCW1地址INTR_OCW2EQU0A0H;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的OCW2地址INTR_IMEQU0FBH;INTR對(duì)應(yīng)的中斷屏蔽字IOY1EQU3040H;片選IOY0對(duì)應(yīng)的端口始地址MY8254_COUNT0EQUIOY1+00H*4;8254計(jì)數(shù)器0端口地址MY8254_COUNT1EQUIOY1+01H*4;8254計(jì)數(shù)器1端口地址MY8254_COUNT2EQUIOY1+02H*4;8254計(jì)數(shù)器2端口地址MY8254_MODEEQUIOY1+03H*4;8254控制存放器端口地址IOY2EQU3080H;片選IOY0對(duì)應(yīng)的端口始地址IOY0EQU3000H;片選IOY0對(duì)應(yīng)的端口始地址MY8255_AEQUIOY0+00H*4;8255的A口地址MY8255_BEQUIOY0+01H*4;8255的B口地址MY8255_CEQUIOY0+02H*4;8255的C口地址MY8255_MODEEQUIOY0+03H*4;8255的控制存放器地址STACK1SEGMENTSTACKDW256DUP(?)STACK1ENDSDATASEGMENT;DTABLEDB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HDTABLEDB06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71HNOW_FLOORDB01H-01H;定義數(shù)據(jù)變量DIRDB1TARGET_FLOORDB01H-01H;02H為初始層,出事情況當(dāng)前層和目標(biāo)層一樣F_FLOORDB1;按鍵有效,空閑CS_BAKDW?;保存INTR原中斷處理程序入口段地址的變量IP_BAKDW?;保存INTR原中斷處理程序入口偏移地址的變量IM_BAKDB?;保存INTR原中斷屏蔽字的變量STR1DB'COUNT:$';顯示的字符串FREQ_LISTDW371,495,495,495,624,556,495,556,624;頻率表DW495,495,624,742,833,833,833,742,624 DW624,495,556,495,556,624,495,416,416,371 DW495,833,742,624,624,495,556,495,556,833 DW742,624,624,742,833,990,742,624,624,495DW556,495,556,624,495,416,416,371,495,0TIME_LISTDB4,6,2,4,4,6,2,4,4;時(shí)間表 DB6,2,4,4,12,1,3,6,2 DB4,4,6,2,4,4,6,2,4,4 DB12,4,6,2,4,4,6,2,4,4DB6,2,4,4,12,4,6,2,4,4 DB6,2,4,4,6,2,4,4,12DATAENDS;鍵值表,0~F對(duì)應(yīng)的7段數(shù)碼管的段位值CODESEGMENT ASSUMECS:CODE,DS:DATASTART:MOVAX,DATA MOVDS,AX ;初始化中斷處理 CLIMOVAX,0000H;替換INTR的中斷矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,ES:[DI]MOVIP_BAK,AX;保存INTR原中斷處理程序入口偏移地址MOVAX,OFFSETMYISRMOVES:[DI],AX;設(shè)置當(dāng)前中斷處理程序入口偏移地址ADDDI,2MOVAX,ES:[DI]MOVCS_BAK,AX;保存INTR原中斷處理程序入口段地址MOVAX,SEGMYISRMOVES:[DI],AX;設(shè)置當(dāng)前中斷處理程序入口段地址MOVDX,INTR_OCW1;設(shè)置中斷屏蔽存放器,翻開(kāi)INTR的屏蔽位INAL,DXMOVIM_BAK,AL;保存INTR原中斷屏蔽字ANDAL,INTR_IMOUTDXSTI;初始化8254MOVDX,MY8254_MODE;初始化8254工作方式MOVAL,0B6H;計(jì)數(shù)器2,方式3OUTDXMOVDX,MY8254_COUNT2;裝入計(jì)數(shù)初值MOVAL,00H;18432分頻OUTDXMOVAL,48HOUTDXMOVDX,MY8254_MODE;初始化8254工作方式MOVAL,76H;計(jì)數(shù)器1,方式3OUTDXMOVDX,MY8254_COUNT1;裝入計(jì)數(shù)初值MOVAL,0C8H;100分頻OUTDXMOVAL,00HOUTDX;初始化8255MOVDX,MY8255_MODE;初始化8255工作方式MOVAL,81H;方式0,A口、B口輸出,C口低4位輸入 OUTDX MOVDX,IOY2;用IO-32輸出控制8個(gè)LED,剛開(kāi)始默認(rèn)為全滅 MOVAL,0OUTDXMOVDX,MY8255_MODEMOVAL,00001110B;PC7=0OUTDXMOVAL,NOW_FLOORMOVBX,OFFSETDTABLE ANDAX,00FFH ADDBX,AX MOVAL,[BX];將鍵值作為偏移和鍵值基地址相加得到相應(yīng)的鍵值MOVDX,MY8255_B OUTDXBEGIN: CALLCCSCAN;掃描按鍵 JNZPLAY;有鍵按下那么跳置GETKEY1MOVAH,1;判斷PC鍵盤(pán)是否有按鍵按下INT16HJZBEGIN;無(wú)按鍵那么跳回繼續(xù)循環(huán),有那么退出 ;退出程序前的一個(gè)"太子換貍貓"QUIT:CLIMOVAX,0000H;恢復(fù)INTR原中斷矢量MOVES,AXMOVDI,INTR_IVADDMOVAX,IP_BAK;恢復(fù)INTR原中斷處理程序入口偏移地址MOVES:[DI],AXADDDI,2MOVAX,CS_BAK;恢復(fù)INTR原中斷處理程序入口段地址MOVES:[DI],AXMOVDX,INTR_OCW1;恢復(fù)INTR原中斷屏蔽存放器的屏蔽字MOVAL,IM_BAKOUTDXSTIMOVAX,4C00H;返回到DOSINT21HGETKEY1:CALLDALLYCALLDALLY CALLCCSCAN;再次掃描按鍵 JNZGETKEY2;有鍵按下那么跳置GETKEY2 JMPBEGIN;否那么跳回開(kāi)始繼續(xù)循環(huán)PLAY:MOVDX,MY8254_MODE;初始化8254工作方式MOVAL,36H;定時(shí)器0、方式3OUTDXMOVSI,OFFSETFREQ_LIST;裝入頻率表起始地址MOVDI,OFFSETTIME_LIST;裝入時(shí)間表起始地址MOVDX,0FH;輸入時(shí)鐘為1.0416667MHz,1.0416667M=0FE502HMOVAX,0E502HDIVWORDPTR[SI];取出頻率值計(jì)算計(jì)數(shù)初值,0F4240H/輸出頻率MOVDX,MY8254_COUNT0OUTDX,AL;裝入計(jì)數(shù)初值MOVAL,AHOUTDXMOVDL,[DI];取出演奏相對(duì)時(shí)間,調(diào)用延時(shí)子程序CALLDALLYADDSI,2INCDI;判斷是否到曲末?JEGETKEY1GETKEY2:CALLDALLY1MOVDX,MY8254_MODE;退出時(shí)設(shè)置8254為方式2,OUT0置0MOVAL,10HOUTDXMOVCH,0FEH MOVCL,00H;設(shè)置當(dāng)前檢測(cè)的是第幾列COLUM:MOVAL,CH;選取一列,將X1~X4中一個(gè)置0MOVDX,MY8255_A OUTDXMOVDX,MY8255_C;讀Y1~Y4,用于判斷是哪一行按鍵閉合 INAL,DXL1:TESTAL,01H;是否為第1行JNZL2;不是那么繼續(xù)判斷MOVAL,00H;設(shè)置第1行第1列的對(duì)應(yīng)的鍵值 JMPKCODEL2:TESTAL,02H;是否為第2行JNZL3;不是那么繼續(xù)判斷MOVAL,04H;設(shè)置第2行第1列的對(duì)應(yīng)的鍵值JMPKCODEL3:TESTAL,04H;是否為第3行JNZL4;不是那么繼續(xù)判斷MOVAL,08H;設(shè)置第3行第1列的對(duì)應(yīng)的鍵值 JMPKCODEL4:TESTAL,08H;是否為第4行JNZNEXT;不是那么繼續(xù)判斷MOVAL,0CH;設(shè)置第4行第1列的對(duì)應(yīng)的鍵值KCODE:ADDAL,CL;將第1列的值加上當(dāng)前列數(shù),確定按鍵值 CMPF_FLOOR,1 JNZKON2 CALLPUTBUF;保存按鍵值KON2: PUSHAXKON: CALLCCSCAN;掃描按鍵,判斷按鍵是否彈起 JNZKON;未彈起那么繼續(xù)循環(huán)等待彈起 POPAXNEXT:INCCL;當(dāng)前檢測(cè)的列數(shù)遞增 MOVAL,CH TESTAL,08H;檢測(cè)是否掃描到第4列JZKERR;是那么跳回到開(kāi)始處ROLAL,1;沒(méi)檢測(cè)到第4列那么準(zhǔn)備檢測(cè)下一列 MOVCH,AL JMPCOLUMKERR:JMPBEGINMYISRPROCNEAR;中斷處理程序MYISRPUSHAXMOVAL,DIRCMPAL,0JZDOWNCMPAL,2JZUPJMPOVERDOWN: MOVAL,NOW_FLOOR DECAL MOVNOW_FLOOR,ALMOVBX,OFFSETDTABLE ANDAX,00FFH ADDBX,AX MOVAL,[BX]MOVDX,MY8255_B OUTDX JMPBIJIAOUP: MOVAL,NOW_FLOOR INCAL MOVNOW_FLOOR,ALMOVBX,OFFSETDTABLE ANDAX,00FFH ADDBX,AX MOVAL,[BX]MOVDX,MY8255_B OUTDXBIJIAO:MOVAL,NOW_FLOORMOVAH,TARGET_FLOORCMPAH,ALJZGUANBIJMPOVERGUANBI: MOVDX,MY8255_MODEMOVAL,00001110B;PC7=0OUTDXMOVDIR,1HMOVAL,0MOVDX,IOY2;用IO-32輸出控制8個(gè)LED,顯示目標(biāo)樓層OUTDXMOVF_FLOOR,1;置1,恢復(fù)按鍵有效MOVDX,MY8254_MODE;初始化8254工作方式MOVAL,36H;定時(shí)器0、方式3OUTDXMOVSI,OFFSETFREQ_LIST;裝入頻率表起始地址MOVDI,OFFSETTIME_LIST;裝入時(shí)間表起始地址MOVDX,0FH;輸入時(shí)鐘為1.0416667MHz,1.0416667M=0FE502HMOVAX,0E502HDIVWORDPTR[SI];取出頻率值計(jì)算計(jì)數(shù)初值,0F4240H/輸出頻率MOVDX,MY8254_COUNT0OUTDX,AL;裝入計(jì)數(shù)初值MOVAL,AHOUTDXMOVDL,[DI];取出演奏相對(duì)時(shí)間,調(diào)用延時(shí)子程序CALLDALLYADDSI,2INCDICALLDALLY1MOVDX,MY8254_MODE;退出時(shí)設(shè)置8254為方式2,OUT0置0MOVAL,10H
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國(guó)衛(wèi)生間隔斷支腳行業(yè)市場(chǎng)發(fā)展前景及發(fā)展趨勢(shì)與投資戰(zhàn)略研究報(bào)告
- 中國(guó)PCB鑼板機(jī)行業(yè)市場(chǎng)調(diào)研及投資戰(zhàn)略規(guī)劃報(bào)告
- 2025年中國(guó)辦公一體機(jī)行業(yè)市場(chǎng)發(fā)展監(jiān)測(cè)及投資潛力預(yù)測(cè)報(bào)告
- 2025年鼓風(fēng)機(jī)研究分析報(bào)告
- 2025年中國(guó)功能食品行業(yè)市場(chǎng)深度分析及投資戰(zhàn)略規(guī)劃報(bào)告
- 2021-2026年中國(guó)蓖麻油市場(chǎng)競(jìng)爭(zhēng)策略及行業(yè)投資潛力預(yù)測(cè)報(bào)告
- 2021-2026年中國(guó)肉兔屠宰行業(yè)發(fā)展監(jiān)測(cè)及投資戰(zhàn)略規(guī)劃研究報(bào)告
- 配件鋼結(jié)構(gòu)項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- 2025年中國(guó)室外壁燈行業(yè)市場(chǎng)調(diào)研分析及投資戰(zhàn)略咨詢(xún)報(bào)告
- 搶救臺(tái)項(xiàng)目投資可行性研究分析報(bào)告(2024-2030版)
- GB/T 37234-2018文件鑒定通用規(guī)范
- 健康減肥調(diào)脂降糖
- LaTeX科技排版課件
- 2023年河北交通投資集團(tuán)有限公司招聘筆試題庫(kù)及答案解析
- 反向傳播算法課件
- 企業(yè)質(zhì)量安全主體責(zé)任
- 南模自招試卷-2012年自主招生
- 數(shù)據(jù)倉(cāng)庫(kù)開(kāi)發(fā)規(guī)范
- 可下載打印的公司章程
- 固定資產(chǎn)報(bào)廢申請(qǐng)單
- 小學(xué)美術(shù)人美五年級(jí)上冊(cè)偶戲皮影研究課教案
評(píng)論
0/150
提交評(píng)論