微機(jī)原理課程設(shè)計(jì)模板_第1頁
微機(jī)原理課程設(shè)計(jì)模板_第2頁
微機(jī)原理課程設(shè)計(jì)模板_第3頁
微機(jī)原理課程設(shè)計(jì)模板_第4頁
微機(jī)原理課程設(shè)計(jì)模板_第5頁
已閱讀5頁,還剩27頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

課程設(shè)計(jì)任務(wù)書專業(yè)自動(dòng)化班級(jí)2班姓名唐惠楷設(shè)計(jì)起止日期2023.12.16~2023.12.20設(shè)計(jì)題目:出租車計(jì)價(jià)器的設(shè)計(jì)設(shè)計(jì)任務(wù)〔主要技術(shù)參數(shù)〕:1.利用8253作為定時(shí)/計(jì)數(shù)器,控制電機(jī)轉(zhuǎn)速并測量電機(jī)的轉(zhuǎn)數(shù);8255作為輸入輸出接口,控制數(shù)碼管顯示啟動(dòng)后經(jīng)過的里程數(shù)〔小數(shù)點(diǎn)后取2位有效值〕。2.①里程顯示、起步價(jià)〔5公里后按里程計(jì)費(fèi)〕;②等時(shí)收費(fèi);③復(fù)位指導(dǎo)教師評(píng)語:成績:簽字:年月日課程設(shè)計(jì)說明書NO.11引言汽車計(jì)價(jià)器是乘客與司機(jī)雙方的交易準(zhǔn)那么,它是出租車行業(yè)開展的重要標(biāo)志,是出租車中最重要的工具。它關(guān)系著交易雙方的利益。具有良好性能的計(jì)價(jià)器無論是對(duì)廣闊出租車司機(jī)朋友還是乘客來說都是很必要的。因此,汽車計(jì)價(jià)器的研究也是十分有一個(gè)應(yīng)用價(jià)值的。我國在70年代開始出現(xiàn)出租車,但那時(shí)的計(jì)費(fèi)系統(tǒng)大都是國外進(jìn)口不但不夠準(zhǔn)確,價(jià)格還十分昂貴。隨著改革開放日益深入,出租車行業(yè)的開展勢頭已十分突出,國內(nèi)各機(jī)械廠家紛紛推出國產(chǎn)計(jì)價(jià)器。出租車計(jì)價(jià)器的功能從剛開始的只顯示路程〔需要司機(jī)自己定價(jià),計(jì)算后四舍五入〕,到能夠自主計(jì)費(fèi),以及現(xiàn)在的能夠打一發(fā)票和語音提示、按時(shí)間自主變動(dòng)單價(jià)等功能。隨著城市旅游業(yè)的開展,出租車行業(yè)已成為城市的窗口,象征著一個(gè)城市的文明程度。隨著出租車行業(yè)的開展,出租車已經(jīng)是城市交通的重要組成局部,從加強(qiáng)行業(yè)管理以及減少司機(jī)與乘客的糾紛出發(fā),具有良好性能的計(jì)價(jià)器對(duì)出租車司機(jī)和乘客來說都是很必要的。我們?cè)O(shè)計(jì)采用8086為主控器,以A44E霍爾傳感器測距,實(shí)現(xiàn)對(duì)出租車的多功能的計(jì)價(jià)設(shè)計(jì),輸出采用8段數(shù)碼顯示管。沈陽大學(xué)課程設(shè)計(jì)說明書NO.22設(shè)計(jì)方案論證2.1設(shè)計(jì)原理利用8253作為定時(shí)/計(jì)數(shù)器,控制電機(jī)轉(zhuǎn)速并測量電機(jī)的轉(zhuǎn)數(shù);8255作為輸入輸出接口,控制數(shù)碼管顯示啟動(dòng)后經(jīng)過的里程數(shù)〔小數(shù)點(diǎn)后取2位有效值〕。硬件連接說明:直流電機(jī)控制器的根底上,增加了一個(gè)電機(jī)測速電路構(gòu)成。8255的B口作為數(shù)碼管的筆劃碼驅(qū)動(dòng);C口的低4位作為段碼控制,顯示實(shí)際里程,同時(shí),也用于輸出鍵盤的列掃描碼;PC6、PC7輸入行掃描碼,用于識(shí)別按鍵,程序中僅使用了PC6行上的四個(gè)按鍵,其定義如下:X1:啟動(dòng)/停止鍵;X2:加速鍵,與X3、X4鍵組合使用;X3:“+〞鍵;X4:“-〞鍵。A口僅使用了PA0,輸出PWM脈沖信號(hào),通過驅(qū)動(dòng)芯片驅(qū)動(dòng)電機(jī),其輸出電壓的上下與PWM脈沖的占空比成正比。電機(jī)的轉(zhuǎn)數(shù),通過霍爾元件變換為脈沖個(gè)數(shù),送入8253的通道2,計(jì)數(shù)后,將轉(zhuǎn)數(shù)轉(zhuǎn)換為里程數(shù),最小單位為0.01公里,送CPU記錄,結(jié)果由數(shù)碼管顯示出來。2.2設(shè)計(jì)環(huán)境及設(shè)備1.PC機(jī)一臺(tái),EL教學(xué)實(shí)驗(yàn)箱一臺(tái)及匯編程序;沈陽大學(xué)課程設(shè)計(jì)說明書NO.3 2.3軟硬件流程圖沈陽大學(xué)課程設(shè)計(jì)說明書NO.4開始主程序流程開始修改8、F號(hào)中斷矢量,指向IRO、IR7中斷處理程序 修改8、F號(hào)中斷矢量,指向IRO、IR7中斷處理程序?qū)懭?259的OCW1開放IRO、IR7中斷寫入8259的OCW1開放IRO、IR7中斷 初始化8253,CHO采取方式2,,CH2采取方式3,都采用先寫低8位,后寫高8位,二進(jìn)制計(jì)數(shù)初始化8253,CHO采取方式2,,CH2采取方式3,都采用先寫低8位,后寫高8位,二進(jìn)制計(jì)數(shù) 寫入8253通道0和2初值為609和50寫入8253通道0和2初值為609和50 關(guān)電機(jī),PA0=0 關(guān)電機(jī),PA0=0將壓縮碼BCD碼的里程數(shù)SOEED轉(zhuǎn)換成非壓縮BCD碼,存顯示緩沖區(qū)將壓縮碼BCD碼的里程數(shù)SOEED轉(zhuǎn)換成非壓縮BCD碼,存顯示緩沖區(qū) 調(diào)用顯示子程序 調(diào)用顯示子程序 翻開鍵盤端口翻開鍵盤端口有鍵按下嗎? N 有鍵按下嗎? Y延時(shí),去抖動(dòng) 延時(shí),去抖動(dòng)行掃描法識(shí)別按鍵,AH存掃描碼 行掃描法識(shí)別按鍵,AH存掃描碼是加速鍵嗎? 是加速鍵嗎? N Y AH的最高位置1,D7=1AH的最高位置1,D7=1是“+〞鍵是是“+〞鍵是“—〞鍵是啟/停鍵加速嗎?加速嗎?嗎?啟動(dòng)嗎? N N N加速嗎?加速嗎?嗎?啟動(dòng)嗎? Y Y Y沈陽大學(xué)課程設(shè)計(jì)說明書NO.5占空比+10占空比+1里程=0啟動(dòng)占空比-10占空比-1設(shè)為停止占空比+10占空比+1里程=0啟動(dòng)占空比-10占空比-1設(shè)為停止循環(huán) 循環(huán)IRO中斷處理流程圖IR7中斷處理程序流程圖保存現(xiàn)場,AX入棧保存現(xiàn)場,AX入棧保存現(xiàn)場,AX入棧保存現(xiàn)場,AX入棧是啟動(dòng)狀態(tài)嗎?開中斷,允許IRO調(diào)速中斷 N是啟動(dòng)狀態(tài)嗎?開中斷,允許IRO調(diào)速中斷取出當(dāng)前壓縮BCD碼的里程數(shù) Y取出當(dāng)前壓縮BCD碼的里程數(shù)高電平時(shí)間—高電平時(shí)間—1=0? N里程數(shù)的低字節(jié)+1,十進(jìn)制調(diào)數(shù)里程數(shù)的低字節(jié)+1,十進(jìn)制調(diào)數(shù)重裝高電平時(shí)間,PA0=0 Y重裝高電平時(shí)間,PA0=0高字節(jié)+0+進(jìn)位,十進(jìn)制調(diào)數(shù)高字節(jié)+0+進(jìn)位,十進(jìn)制調(diào)數(shù)保存結(jié)果到里程數(shù)SPEED中保存結(jié)果到里程數(shù)SPEED中PWM定時(shí)時(shí)間PWM定時(shí)時(shí)間—1=0?恢復(fù)現(xiàn)場,中斷結(jié)束 N恢復(fù)現(xiàn)場,中斷結(jié)束 Y 中斷返回中斷返回重裝PWM定時(shí)時(shí)重裝PWM定時(shí)時(shí)間,PA0=1 恢復(fù)現(xiàn)場,中斷結(jié)束恢復(fù)現(xiàn)場,中斷結(jié)束中斷返回中斷返回沈陽大學(xué)課程設(shè)計(jì)說明書NO.63源程序設(shè)計(jì)與硬件介紹中斷程序里程計(jì)數(shù)中斷程序每當(dāng)霍爾傳感器輸出一個(gè)低電平信號(hào)就使中斷一次,當(dāng)里程計(jì)數(shù)器對(duì)里程脈沖計(jì)滿1000次時(shí),進(jìn)入里程計(jì)數(shù)中斷效勞程序中,里程變量加一。主函數(shù)中總金額也相應(yīng)地變化。中途等待中斷程序在中途等待中斷程序中,每1ms產(chǎn)生一次中斷,將當(dāng)前里程值送入某個(gè)緩存變量,每5分鐘將緩存變量中的值和當(dāng)前里程值比擬,當(dāng)汽車停止,霍爾傳感器5分鐘沒有輸出信號(hào),當(dāng)前里程值和緩存變量內(nèi)的值相同,那么進(jìn)入等待計(jì)時(shí),每5分鐘記一次價(jià)格。顯示程序顯示程序利用定時(shí)器每1ms產(chǎn)生一次中斷,相應(yīng)變量置位,點(diǎn)亮一個(gè)數(shù)碼管,顯示一位數(shù)據(jù),利用主函數(shù)內(nèi)的循環(huán),實(shí)現(xiàn)動(dòng)態(tài)掃描顯示,同時(shí)根據(jù)數(shù)碼管余輝和人眼暫留現(xiàn)象,即可實(shí)現(xiàn)顯示。

鍵盤程序鍵盤采用查詢的方式,放在主程序中,當(dāng)沒有按鍵按下的時(shí)候,循環(huán)主程序,一旦右按鍵按下,便轉(zhuǎn)向相應(yīng)的子程序處理,處理結(jié)束再返回。沈陽大學(xué)課程設(shè)計(jì)說明書NO.73.18086最小系統(tǒng)模塊1、8086CPU構(gòu)成的系統(tǒng)框圖如圖:2、8255A的功能分析8255A是可編程并行接口,可以根據(jù)外界條件〔I/O設(shè)備需要的信號(hào)線和它能提供的狀態(tài)線〕來使其構(gòu)成多種接口電路。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口,即A口、B口、C口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號(hào)使用。本實(shí)驗(yàn)將控制字設(shè)為80H,初始化8255,使得B口、C口為輸出。在三種工作方式中,本設(shè)計(jì)只使用了方式0,即方式0是根本的輸入/輸出方式,在這種方式下,三個(gè)端口都可以由程序規(guī)定為輸入/出方式,但是不能既作為輸入又作為輸出,也沒有提供固定的聯(lián)絡(luò)信號(hào)。C口分為兩個(gè)4位---高4位和低4位,可以分別設(shè)置為輸入或輸出方式。沈陽大學(xué)課程設(shè)計(jì)說明書NO.83、8255A的技術(shù)參數(shù)8255A的引腳信號(hào)CS:片選信號(hào),低電平有效;A0、A1:地址信號(hào)。CS:片選信號(hào),低電平有效;A0、A1:地址信號(hào)。JP52:PC口;JP53:PB口;JP56:PA口。1〕與外設(shè)相連的PA7~PA0:A口數(shù)據(jù)信號(hào)線;PB7~PB0:B口數(shù)據(jù)信號(hào)線;PC7~PC0:C口數(shù)據(jù)信號(hào)線;2〕與CPU相連的RESET:復(fù)位信號(hào)。當(dāng)此信號(hào)來時(shí),所有存放器都被去除。同時(shí)三個(gè)數(shù)據(jù)端口被自動(dòng)置為輸入端口。D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。CS:片選信號(hào)。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配假設(shè)于低位地址〔比方A5、A4、A3〕組成各種芯片選擇碼,當(dāng)這幾位地址組成某一個(gè)低電平,于8255A被選中。只有當(dāng)有效時(shí),讀信號(hào)寫才對(duì)8255進(jìn)行讀寫。RD:讀信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可從8255A中讀取數(shù)據(jù)。WR:寫信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可向8255A中寫入數(shù)據(jù)。沈陽大學(xué)課程設(shè)計(jì)說明書NO.9A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定:A1、A0為00時(shí),選中A端口;A1、A0為01時(shí),選中B端口;A1、A0為10時(shí),選中C端口;A1、A0為11時(shí),選中控制口。4、8255A的方式控制字8255A的控制字有兩種:一種是方式選擇控制字,另一種是C口按位置位/復(fù)位控制字①方式選擇控制字圖18255A的方式控制字表②C口按位置位/復(fù)位控制字圖28255A的置位/控制字表沈陽大學(xué)課程設(shè)計(jì)說明書NO.103.2芯片82538253的功能分析Intel8253是NMOS工藝制成的可編程計(jì)數(shù)器/定時(shí)器,有幾種芯片型號(hào),外形引腳及功能都是兼容的,只是工作的最高計(jì)數(shù)速率有所差異,例如8253〔2.6MHz〕,8253-5(5MHz)8253內(nèi)部有三個(gè)計(jì)數(shù)器,分別成為計(jì)數(shù)器0、計(jì)數(shù)器1和計(jì)數(shù)器2,他們的機(jī)構(gòu)完全相同。每個(gè)計(jì)數(shù)器的輸入和輸出都決定于設(shè)置在控制存放器中的控制字,互相之間工作完全獨(dú)立。每個(gè)計(jì)數(shù)器通過三個(gè)引腳和外部聯(lián)系,一個(gè)為時(shí)鐘輸入端CLK,一個(gè)為門控信號(hào)輸入端GATE,另一個(gè)為輸出端OUT。每個(gè)計(jì)數(shù)器內(nèi)部有一個(gè)8位的控制存放器,還有一個(gè)16位的計(jì)數(shù)初值存放器CR、一個(gè)計(jì)數(shù)執(zhí)行部件CE和一個(gè)輸出鎖存器OL。執(zhí)行部件實(shí)際上是一個(gè)16位的減法計(jì)數(shù)器,它的起始值就是初值存放器的值,而初始值存放器的值是通過程序設(shè)置的。輸出鎖存器的值是通過程序設(shè)置的。輸出鎖存器OL用來鎖存計(jì)數(shù)執(zhí)行部件CE的內(nèi)容,從而使CPU可以對(duì)此進(jìn)行讀操作。順便提一下,CR、CE和OL都是16位存放器,但是也可以作8位存放器來用。8253的引腳信號(hào)CS:片選信號(hào),低電平有效;A0、A1:地址信號(hào);CS:片選信號(hào),低電平有效;A0、A1:地址信號(hào);沈陽大學(xué)課程設(shè)計(jì)說明書NO.113.3可編程控制芯片8259A8259A的原理一片8959A有8條中斷請(qǐng)求線IR0~IR7,8259A被操作系統(tǒng)初始化后,就可以接收中斷信號(hào)了。8259A從IR請(qǐng)求線上接受中斷信號(hào),每個(gè)請(qǐng)求線有一個(gè)觸發(fā)器來保存請(qǐng)求信號(hào),從而形成中斷請(qǐng)求存放器〔IRR〕。同時(shí)如果中斷請(qǐng)求信號(hào)線上不是被屏蔽的,8259A向CPU發(fā)出INT信號(hào),請(qǐng)求中斷。這時(shí)如果CPU是處于允許中斷狀況,CPU就會(huì)發(fā)送INTA信號(hào)給8259A進(jìn)入中斷響應(yīng)周期。接著CPU再次發(fā)送一個(gè)INTA脈沖給8259A,啟動(dòng)另外一個(gè)中斷相應(yīng)周期。8259A在這個(gè)相應(yīng)周期向數(shù)據(jù)總線的D0-D7上輸入一個(gè)中斷向量。CPU根據(jù)該向量的值*4后就可以從中斷入口地址表〔IDT〕中取出中斷效勞程序的入口地址而轉(zhuǎn)入中斷效勞程序。而8259A如果工作在自動(dòng)結(jié)束中斷〔AEOI〕模式時(shí)會(huì)自動(dòng)使其ISR中的相應(yīng)位復(fù)位,否那么需要發(fā)出EOI命令使ISR復(fù)位。在老式的PC-XT/AT中,一般使用一片8259A進(jìn)行中斷信號(hào)請(qǐng)求。在現(xiàn)代的多數(shù)PC中,一般都會(huì)采用兩片8259A作為級(jí)連。其中一片是Master一片是Slave,由于Master上的一個(gè)中斷請(qǐng)求線需要連接到Slave的INT腳,所以實(shí)際可以使用的外部中斷個(gè)數(shù)是15〔8*2–1〕個(gè)。8259A結(jié)構(gòu)1、數(shù)據(jù)總線緩沖器--D7~D0數(shù)據(jù)總線緩沖器為三態(tài)、雙向、8位存放器,數(shù)據(jù)線D7~D0與CPU系統(tǒng)總線連接,構(gòu)成CPU與8259A之間信息傳送的通道。2、讀/寫控制邏輯--WR/WD讀/寫控制邏輯用來接收CPU系統(tǒng)總線的讀/寫控制信號(hào)和端口地址選擇信號(hào),用于控制8259A內(nèi)部存放器的讀/寫操作。3、級(jí)聯(lián)緩沖/比擬器8259A既可以工作于單片方式,也可以工作于多片級(jí)聯(lián)方式,級(jí)聯(lián)方式硬件連接如圖6.10所示沈陽大學(xué)課程設(shè)計(jì)說明書NO.124、中斷控制邏輯中斷控制邏輯按照編程設(shè)定的工作方式管理中斷,負(fù)責(zé)向片內(nèi)各部件發(fā)送控制信號(hào),向CPU發(fā)送中斷請(qǐng)求信號(hào)INT和接收CPU回送的中斷響應(yīng)信號(hào)INTA,控制8259A進(jìn)入中斷管理狀態(tài)。5、中斷請(qǐng)求存放器〔interruptrequestregister,IRR〕IRR是一個(gè)8位存放器,用于記錄外部中斷請(qǐng)求。其中D7~D0分別與外部中斷請(qǐng)求信號(hào)IR7~I(xiàn)R0相對(duì)應(yīng),當(dāng)IRi〔i=0~7〕有請(qǐng)求〔電平或邊沿觸發(fā)〕時(shí),IRR中的相應(yīng)位Di置1,在中斷響應(yīng)信號(hào)INTA有效時(shí),DI被去除。6、中斷效勞存放器〔interruptserviceregister,ISR〕ISR是一個(gè)8位存放器,用于記錄CPU當(dāng)前正在效勞的中斷標(biāo)志。當(dāng)外部中斷IRi〔i=0~7〕的請(qǐng)求得到CPU響應(yīng)進(jìn)入效勞時(shí),由CPU發(fā)來的第一個(gè)中斷響應(yīng)脈沖INTA將ISR中的相應(yīng)位Di〔i=0~7〕置1,而ISR的復(fù)位那么由8259A中斷結(jié)束方式?jīng)Q定。7、中斷屏蔽存放器〔interruptmaskregister,IMR〕3.4軟件編程實(shí)現(xiàn)計(jì)價(jià)器(利用調(diào)速控制器控制電機(jī)的旋轉(zhuǎn),讀出總里程數(shù))DATA SEGMENT T EQU100 ;定時(shí)周期時(shí)間(根本周期*T) T_HI DB50 ;高電平持續(xù)時(shí)間(根本周期*T_HI)NOW_T DBTNOW_HI DB50 T8253 EQU609 ;定時(shí)器8253的初值=1.19M*0.512MS(根本周期)=609 RUN DB0 ;啟停標(biāo)志 SPEED DW0 ;里程數(shù) STEP DW50 ;10米的8253脈沖個(gè)數(shù)(即每來50個(gè)脈沖,那么前進(jìn)10米) TAB DB3FH,06H,5BH,4FH,66H,6DH,7DH,07H,7FH,6FH ;0~9的顯示碼 DISP DB4DUP(0),52H;存儲(chǔ)轉(zhuǎn)速DATA ENDS沈陽大學(xué)

課程設(shè)計(jì)說明書NO.13STACKSEGMENTSTACK DW64DUP(?) ;定義堆棧段STACKENDSCODESEGMENT ;代碼段定義 ASSUMECS:CODE,DS:DATA ;段指定START: MOV AX,DATA MOV DS,AX PUSH DS ;當(dāng)前用戶DS段入棧保存 MOV AX,0000H MOV DS,AX ;修改DS=0000H,指向中斷矢量表所在段 MOV AX,OFFSETIRQ0 ;取出中斷處理子程序的入口偏移地址(以0為基準(zhǔn)) ADD AX,2000H ;修正,實(shí)際地址=裝入地址的偏移量+相對(duì)于0起始的偏移量 MOV SI,0020H ;IR0中斷矢量號(hào)為08H,處于矢量表的20H~23H MOV [SI],AX ;將偏移地址裝入矢量表 MOV AX,0000H MOV SI,0022H MOV [SI],AX ;將段地址(0000H)裝入矢量表 MOV AX,OFFSETIRQ7 ADD AX,2000H MOV SI,0003CH MOV [SI],AX ;將偏移地址裝入IRQ7的中斷矢量 MOV AX,0000H MOV SI,003EH MOV [SI],AX ;將段地址(0000H)裝入矢量表 POP DS ;恢復(fù)用戶數(shù)據(jù)段DS MOV AL,13HOUT 20H,AL ;寫入ICW1沈陽大學(xué)課程設(shè)計(jì)說明書NO.14MOV AL,08H OUT 21H,AL ;寫入ICW2 MOV AL,01H OUT 21H,AL ;寫入ICW4 MOV AL,7EH ;D7,D0位復(fù)位為0 OUT 21H,AL ;寫入OCW1(IMR);開放8259A的IR7和IR0中斷 MOV AL,34H ;設(shè)定8253通道0的工作方式,00110100B OUT 43H,AL ;CH0采用先寫低8位,后寫高8位,方式2,二進(jìn)制計(jì)數(shù) MOV AX,T8253 ;計(jì)數(shù)初值為根本周期 OUT 40H,AL ;寫入CH0MOV AL,AH OUT 40H,AL MOV AL,0B6H ;設(shè)定8253通道2的工作方式,10110110B OUT 43H,AL ;CH2采用先寫低8位,后寫高8位=0,方式3,二進(jìn)制計(jì)數(shù) MOV AX,STEP OUT 42H,AL MOV AL,AH OUT 42H,AL ;寫入CH2 MOV AL,88H ;寫入8255A的方式控制字,設(shè)定工作方式為10001000B OUT 63H,AL ;即A口方式0輸出,C口高4位輸入,B口方式0輸出,C口低4位輸出MOV AL,00H OUT 60H,AL ;關(guān)電機(jī) STI ;開中斷沈陽大學(xué)

課程設(shè)計(jì)說明書NO.15A1: MOV SI,OFFSETDISP MOV BL,2 MOV AX,SPEEDA11: AND AL,0FH MOV [SI+3],AL AND AH,0FH MOV [SI+1],AH DEC SI MOV AX,SPEED MOV CL,4 ROR AX,CL DEC BL JNZ A11 ;將速度的壓縮BCD碼轉(zhuǎn)換為非壓縮碼,存入緩沖區(qū) MOV SI,OFFSETDISP CALL DISPLAYMOV AL,00H ;翻開開關(guān)掃描 OUT 62H,AL IN AL,62H ;讀C口 AND AL,40H JZ A2 ;有鍵按下,轉(zhuǎn)讀鍵盤 JMP EXITA2: MOV AH,00H ;記錄按鍵掃描碼 MOV CX,04 ;循環(huán)掃描4次 MOV DL,77H ;翻開第一行的開關(guān)掃描A21: INC AH ;掃描碼+1ROL DL,1沈陽大學(xué)

課程設(shè)計(jì)說明書NO.16MOVAL,DL OUT 62H,AL ;翻開一行的開關(guān)掃描 IN AL,62H ;讀C口 TEST AL,40H ;取PC6(Y1) JNZ A22 ;無鍵按下,轉(zhuǎn) CALL DALEY CALL DALEY ;去抖動(dòng) IN AL,62H ;讀C口 AND AL,40H ;取PC6(Y1) JNZ A22 ;是抖動(dòng),轉(zhuǎn) CMP AH,2 JNZ RELEA ;不是加速鍵,轉(zhuǎn)(單獨(dú)按下加速鍵無效) OR AH,80H ;是加速鍵,那么D7位=1 JMP A22RELEA: CALL DISPLAY MOV AL,DL OUT 62H,AL IN AL,62H AND AL,40H ;等待鍵釋放 JZ RELEA JMP A23 ;AH存掃描碼,=1(X1鍵按下)啟停,=2加速,=3'+',=4'-'鍵A22:LOOP A21 JMP EXIT沈陽大學(xué)

課程設(shè)計(jì)說明書NO.17A23: MOV AL,AH AND AL,0FH CMP AL,01H JNZ A3 ;不是按下啟停鍵,那么轉(zhuǎn) MOV AL,RUN TEST AL,01H JNZ A24 ;原為啟動(dòng),那么轉(zhuǎn)停止MOV RUN,01 ;置位啟動(dòng)標(biāo)志 MOV NOW_T,T ;重裝定時(shí)周期 MOV AL,T_HI MOV NOW_HI,AL ;重裝高電平定時(shí)時(shí)間 MOV SPEED,00 ;重新計(jì)價(jià)〔里程〕 JMP EXITA24: MOV RUN,00 ;復(fù)位啟動(dòng)標(biāo)志 MOV AL,00H OUT 60H,AL ;關(guān)電機(jī) JMP EXITA3: MOV AL,AHAND AL,0FH CMP AL,03 JNZ A6 ;不是'+'鍵,轉(zhuǎn) MOV BL,1 TEST AH,80H JZ A4 ;沒按加速鍵,轉(zhuǎn) MOV BL,10 ;按加速鍵,加10,正常加1沈陽大學(xué)

課程設(shè)計(jì)說明書NO.18A4: ADD BL,T_HI CMP BL,100 JBE A5 MOV BL,100A5: MOV T_HI,BL ;增加的百分比不能>100% JMP EXITA6: MOV AL,AH AND AL,0FH CMP AL,04 JNZ EXIT ;不是'-'鍵,轉(zhuǎn) MOV BH,01 TEST AH,80H JZ A7 ;沒按加速鍵,轉(zhuǎn) MOV BH,10 ;按加速鍵,-10,正常-1A7: MOV BL,T_HI SUB BL,BH JNC A8 MOV BL,00A8: MOV T_HI,BL ;最小的百分比為0%EXIT: JMP A1;8259A的IR0中斷處理子程序(8253的CH0定時(shí)根本周期0.512MS)IRQ0: PUSH AX沈陽大學(xué)

課程設(shè)計(jì)說明書NO.19STI MOV AL,RUN AND AL,AL JZ IREXIT ;不啟動(dòng),那么轉(zhuǎn)測速度 MOV AL,NOW_T SUB AL,1 JNZ IRSP1 MOV NOW_T,T ;重裝定時(shí)周期 MOV AL,T_HI MOV NOW_HI,AL ;重裝高電平定時(shí)時(shí)間 JMP IREXITIRSP1: MOV NOW_T,AL ;保存-1后的定時(shí)周期MOV AL,NOW_HI TEST AL,AL JNZ IRSP2 MOV AH,00H ;高電平持續(xù)時(shí)間到,那么PA0輸出為0 JMP IRSP3IRSP2: SUB AL,1 ;高電平持續(xù)時(shí)間不到 MOV NOW_HI,AL ;保存-1后的值 MOV AH,01H ;PA0輸出為1,高電平IRSP3: MOV AL,AH OUT 60H,ALIREXIT: MOV AL,20H ;常規(guī)EOI中斷結(jié)束指令 OUT 20H,AL ;寫入8259A的OCW2 沈陽大學(xué)

課程設(shè)計(jì)說明書NO.20CLI POP AX IRET ;中斷返回;8259A的IR7中斷處理子程序(8253的CH2計(jì)數(shù)中斷,10米到)IRQ7: PUSH AX STI MOV AX,SPEED ADD AL,01 DAA XCHG AL,AH ADC AL,00 DAA XCHG AL,AH MOV SPEED,AX MOV AL,20H ;常規(guī)EOI中斷結(jié)束指令DISPLAY:PUSH AX PUSH BX PUSH CX PUSH DX PUSH SI MOV CX,4 MOV DL,7FH MOV SI,OFFSETDISP MOV BX,OFFSETTAB沈陽大學(xué)課程設(shè)計(jì)說明書NO.21DISP1: ROL DL,1 MOV AL,[SI] XLAT ;查表轉(zhuǎn)換為顯示碼 TEST DL,02H JNZ DISP2 ;是第二位顯示嗎? OR AL,80H ;是,加小數(shù)點(diǎn)DISP2: OUT 61H,AL MOV AL,DL ;允許X1、X2、X3、X4〔PC3~PC0〕數(shù)碼管依次選通 OUT 62H,AL CALL DALEY INC SI LOOP DISP1 ;四次循環(huán),顯示轉(zhuǎn)速 XOR AL,AL OUT 61H,AL ;關(guān)顯示 POP SI POP DX POP CX POP BX POP AX RET;延時(shí)子程序DALEY: PUSH CX MOV CX,0560H ;置內(nèi)循環(huán)次數(shù)DALEY1:LOOP DALEY1 ;共循環(huán)0560H次,以完成延時(shí) POP CX RETCODE ENDS ENDSTART沈陽大學(xué)課程設(shè)計(jì)說明書NO.224結(jié)果分析本系統(tǒng)在硬件設(shè)計(jì)的根底上,在軟件編程上選擇查詢方式,再進(jìn)行相關(guān)的軟件設(shè)計(jì)和開發(fā),所設(shè)計(jì)系統(tǒng)測試結(jié)果滿足設(shè)計(jì)要求。在本系統(tǒng)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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ǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論