《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)

上傳人:仙*** 文檔編號(hào):30335687 上傳時(shí)間:2021-10-10 格式:DOC 頁(yè)數(shù):25 大?。?62KB
收藏 版權(quán)申訴 舉報(bào) 下載
《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)_第1頁(yè)
第1頁(yè) / 共25頁(yè)
《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)_第2頁(yè)
第2頁(yè) / 共25頁(yè)
《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)_第3頁(yè)
第3頁(yè) / 共25頁(yè)

下載文檔到電腦,查找使用更方便

15 積分

下載資源

還剩頁(yè)未讀,繼續(xù)閱讀

資源描述:

《《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)》由會(huì)員分享,可在線閱讀,更多相關(guān)《《微機(jī)原理課程設(shè)計(jì)》基于80x86的步進(jìn)電機(jī)控制系統(tǒng)(25頁(yè)珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、江蘇科技大學(xué)(張家港) 微機(jī)原理與接口技術(shù)課程設(shè)計(jì) 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)姓名: 厲小洋 學(xué)號(hào): 0945533117 班級(jí): 09電氣1班 專業(yè): 電氣工程及其自動(dòng)化學(xué)院: 電氣與信息工程學(xué)院江蘇科技大學(xué)張家港校區(qū)2012年9月24 目錄一 理論部分21課題要求與內(nèi)容22 系統(tǒng)方案設(shè)計(jì)33 系統(tǒng)硬件的設(shè)計(jì)44 系統(tǒng)軟件設(shè)計(jì)5二 實(shí)踐部分61 系統(tǒng)硬件原理簡(jiǎn)介62 系統(tǒng)硬件調(diào)試中出現(xiàn)的問題及解決措施103 系統(tǒng)軟件113.1 軟件設(shè)計(jì)113.2軟件調(diào)試中出現(xiàn)的問題及解決措施14三 附錄15題目:基于80x86的步進(jìn)電機(jī)控制系統(tǒng)第一章、 理論部分一 微機(jī)原理課程設(shè)計(jì)課題要求與內(nèi)容內(nèi)容要求:(

2、1) 使用8255A控制步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)。(2) 使用數(shù)碼管LED顯示速度的大小。(3) 使用8253定時(shí)器調(diào)節(jié)速度的大小。(4) 使用4個(gè)獨(dú)立按鍵控制步進(jìn)電機(jī),即“正傳”、“反轉(zhuǎn)”、“停止”、“調(diào)速”。(5) 使用8259A產(chǎn)生中斷控制按鍵;(6) 使用DAC0832顯示速度的波形。拓展功能:(1) 按鍵部分可以增加“加速”、“減速”等功能;(2) 考慮可以加蜂鳴器來區(qū)分“正轉(zhuǎn)”和“反轉(zhuǎn)”;(3) 其他可以有自己特色的功能均可。二 系統(tǒng)方案設(shè)計(jì)80X86825582598254步進(jìn)電機(jī)LED顯示按鍵控制在課程要求的前提下,步進(jìn)電機(jī)為四相八拍步進(jìn)電機(jī),這樣可以用8255的一個(gè)端口控制電機(jī)的驅(qū)動(dòng),

3、LED顯示為十六位 圖1系統(tǒng)流程圖在8255中可用兩個(gè)端口控制,按鍵單元可與電機(jī)共用一個(gè)八位端口,由8254產(chǎn)生可編程脈沖,進(jìn)入8259產(chǎn)生中斷,反饋給80x86,控制8255。再執(zhí)行到步進(jìn)電機(jī)及其LED顯示上,一個(gè)脈沖步進(jìn)電機(jī)一拍。由按鍵讀入系統(tǒng)狀態(tài)。具體的系統(tǒng)設(shè)計(jì)如圖1為系統(tǒng)概況流程圖三 系統(tǒng)硬件設(shè)計(jì)在硬件設(shè)計(jì)中,主要是通過步進(jìn)電機(jī)模塊、8255模塊、LED模塊、8254模塊。在8255芯片上用A,B口控制數(shù)碼管的顯示(A為位選B為段選),C口的高四位為四個(gè)按鍵單元,低四位作為輸出,控制步進(jìn)電機(jī)。片選CS接IOY2。在8259和8254上,采用一個(gè)脈沖一拍的方式。給8254一個(gè)1.8432

4、MHZ在CLK2,OUT2輸出給CLK0,由OUT0給8259的INT,輸出一個(gè)脈沖,經(jīng)由IR0給80x86的中斷口INTR。如圖2為硬件連接圖,如下 硬件連接:8254,8255,8259的CS分別接在IOY2,IOY0,IOY1 8255芯片連接:8255的A,B控制LED,A口接位選,B口接段選,將C口分為兩段,高四位讀取按鍵,低四位控制步進(jìn)電機(jī),按鍵分為四個(gè)如下表1所示 表1 K1K2K3 K4判斷開關(guān)0開1關(guān)判斷正反轉(zhuǎn)0正1反0 0 速度11 0 速度20 1 速度31 1 速度4 8254:GATE2接電源+5v 給CLK2一個(gè)信號(hào)OUT2接CLK0將輸出接8259的INT ,在用

5、8259的IRO1連接到80X86的中斷INTRXD0XD7XIORXIOWXA2XA2INTRIOY0XD0XD7IOY1IORIOWIORIOWXA28086系統(tǒng)總線D0 PC0D7 PC3 A0 PC4A1 PC7 8255WR A口RDCS B口按鍵單元步進(jìn)電機(jī)單元LED顯示XD0XD7D0 D7 WRRD INTCS 8259 IR0A0D0 OUT0D7 CLK0WR OUT2RDCS CLK2 8254A0A1 GATE21.8432MHZ+5VIOY2圖2硬件連接圖四 系統(tǒng)軟件設(shè)計(jì)開始系統(tǒng)初始化判斷開關(guān)判斷正反判斷速度計(jì)數(shù)器裝入初值判斷是否進(jìn)入中斷LED顯示判斷是否八拍走完判斷

6、鍵盤是否有按鍵否否是是是否結(jié)束是否 圖3軟件系統(tǒng)工作流程圖 過8255讀取按鍵的信號(hào),來控制步進(jìn)電機(jī)的開關(guān),正轉(zhuǎn),反轉(zhuǎn),速度的大小。通過8254計(jì)數(shù)器工作在方式0的狀態(tài)下來控制每拍運(yùn)行的時(shí)間,步進(jìn)電機(jī)速度不同,賦給8254的初始值不同,同時(shí)8255的PA,PB口向LED接口輸出信號(hào),LED數(shù)碼管顯示步進(jìn)電機(jī)每分鐘的轉(zhuǎn)速。8254計(jì)數(shù)器每次運(yùn)行結(jié)束,向8259發(fā)出一個(gè)高電平,8259IR0接口檢測(cè)到高電平信號(hào),即進(jìn)入中斷服務(wù)程序,在中斷服務(wù)程序里,執(zhí)行對(duì)下一拍給步進(jìn)電機(jī)信號(hào)的賦值。在每次循環(huán)中,執(zhí)行鍵盤按鍵檢測(cè)程序,如有按鍵,退出程序,否則,反復(fù)循環(huán)。如圖3為軟件系統(tǒng)的工作流程圖第二章 實(shí)踐部分

7、一 系統(tǒng)硬件原理簡(jiǎn)介 1.1步進(jìn)電機(jī)的簡(jiǎn)介及其工作原理步進(jìn)電機(jī)的驅(qū)動(dòng)原理是通過它每相線圈的電流的順序切換來使電機(jī)作步進(jìn)式旋轉(zhuǎn),驅(qū)動(dòng)電路由脈沖來控制,所以調(diào)節(jié)脈沖的頻率便可改變步進(jìn)電機(jī)的轉(zhuǎn)速,微控制器最適合控制步進(jìn)電機(jī)。另外,由于電機(jī)的轉(zhuǎn)動(dòng)慣量的存在,其轉(zhuǎn)動(dòng)速度還受驅(qū)動(dòng)功率的影響,當(dāng)脈沖的頻率大于某一值時(shí),電機(jī)便不再轉(zhuǎn)動(dòng)。本次課程設(shè)計(jì)中電機(jī)共有四個(gè)相位(A,B,C,D),按轉(zhuǎn)動(dòng)步驟可分單4拍(A-B-C-D-A),雙4拍(AB-BC-CD-DA-AB)和單雙8拍(A-AB-B-BC-C-CD-D-DA-A).此模塊的主要功能是通過接收8255的C口輸入信號(hào)來控制步進(jìn)電機(jī)的轉(zhuǎn)動(dòng),A,B,C,D分別

8、代表不同的四個(gè)相位,分別接入到PC0,PC1,PC2和PC3實(shí)現(xiàn)轉(zhuǎn)動(dòng)控制相12345678A11000001B01110000C00011100D00000111表 2如上述表2所示,通過編程對(duì)8255的輸出進(jìn)行控制,使輸出按照相序表給驅(qū)動(dòng)電路供電,則步進(jìn)電機(jī)的輸入也和相序表一致,這樣步進(jìn)電機(jī)就可以正向轉(zhuǎn)動(dòng),反之,則反向轉(zhuǎn)動(dòng)。1.2實(shí)驗(yàn)所用芯片的介紹及其控制方式 1.2.1 8254的簡(jiǎn)介 8254是Intel公司生產(chǎn)的課可編程定時(shí)器,8254芯片主要由四部分組成: 1 數(shù)據(jù)總線緩沖器 數(shù)據(jù)總線緩沖器是一個(gè)三態(tài)、雙向8位寄存器主要作用是與CPU進(jìn)行數(shù)據(jù)交換,8位數(shù)據(jù)線D7D0與CPU的系統(tǒng)數(shù)據(jù)

9、總線連接,構(gòu)成CPU和8254之間信息傳送的通道,CPU通過數(shù)據(jù)總線緩沖器向8254寫入控制命令、計(jì)數(shù)初始值或讀取計(jì)數(shù)值。 2 讀寫邏輯 讀寫邏輯是芯片的控制部分,編程人員通過控制信號(hào)的選擇來選擇芯片的工作方式。讀/寫控制邏輯用來接收CPU系統(tǒng)總線的讀、寫控制信號(hào)和端口選擇信號(hào),用于控制8254內(nèi)部寄存器的讀/寫操作。 3 控制字寄存器 控制寄存器是一個(gè)只能寫不能讀的8位寄存器,系統(tǒng)通過指令將控制字寫入控制寄存器,設(shè)定8254的不同工作方式。 4 計(jì)數(shù)器 8254內(nèi)部有三個(gè)結(jié)構(gòu)完全相同而又相互獨(dú)立的16位減“1”計(jì)數(shù)器,每個(gè)計(jì)數(shù)器有六種工作方式,各自可按照編程設(shè)定的方式工作。1).有3個(gè)獨(dú)立的

10、16位計(jì)數(shù)器2).每個(gè)計(jì)數(shù)器可按十進(jìn)制或二進(jìn)制計(jì)數(shù)3).8254每個(gè)計(jì)數(shù)器允許最高計(jì)數(shù)為10MHZ4).8254 有讀回指令,還可以讀出狀態(tài)寄存器的內(nèi)容5).每個(gè)計(jì)數(shù)器可編程工作于6中不同的方式6)計(jì)數(shù)脈沖可以是有規(guī)律的時(shí)鐘信號(hào),也可以是隨機(jī)信號(hào),計(jì)數(shù)初值公式為n=fclki/fouti(fclki是輸入時(shí)鐘脈沖的頻率,fouti是輸出波形的頻率)工作方式的分類:1) 方式0:計(jì)數(shù)到0結(jié)束輸出正跳躍信號(hào)方式2)方式1:硬件可重觸發(fā)單穩(wěn)方式3)方式2:頻率發(fā)生器4)方式3:方波發(fā)生器5)方式4:軟件觸發(fā)選通方式6)方式5:硬件觸發(fā)選通方式8254的控制字有兩個(gè):一個(gè)用來設(shè)置計(jì)數(shù)工作方式稱為方式控

11、制字。另一個(gè)用來設(shè)置讀回命令,稱為讀回控制字。如下表3是控制方式表格表3 8254的方式控制字格式D7D6D5D4D3D2D1D0計(jì)數(shù)器選擇讀/寫工作方式選擇計(jì)數(shù)碼制選擇00-計(jì)數(shù)器000-鎖存計(jì)數(shù)值000-方式00-二進(jìn)制數(shù)01-計(jì)數(shù)器101-讀/寫低8位001-方式11-十進(jìn)制數(shù)10-計(jì)數(shù)器210-讀/寫高8位010-方式211-讀出控制字標(biāo)志11-先讀/寫低8位再讀/寫高8位011-方式3100-方式4101-方式58255的簡(jiǎn)介及其控制8255是Intel公司生產(chǎn)的可編程并行I/O接口芯片,有3個(gè)8位并行I/O口。具有3個(gè)通道3種工作方式的可編程并行接口芯片(40引腳)。 其各口功能可

12、由軟件選擇,使用靈活,通用性強(qiáng)。8255可作為單片機(jī)與多種外設(shè)連接時(shí)的中間接口電路。 8255作為主機(jī)與外設(shè)的連接芯片,必須提供與主機(jī)相連的3個(gè)總線接口,即數(shù)據(jù)線、地址線、控制線接口。同時(shí)必須具有與外設(shè)連接的接口A、B、C口。由于8255可編程,所以必須具有邏輯控制部分,因而8255內(nèi)部結(jié)構(gòu)分為3個(gè)部分:與CPU連接部分、與外設(shè)連接部分、控制部分。8255可編程外圍接口芯片是通用并行口芯片,具有A、B、C三個(gè)并行接口,有三種工方式。方式0基本的輸入輸出。方式1選通輸入輸出。方式2雙選通工作方式表格2為控制字格式,如下圖4 、圖5分別為8255工作方式控制字格式和8255 C口按位置位/復(fù)位控制

13、字格式。圖4、 8255工作方式控制字格式圖5 8255 C口按位置位/復(fù)位控制字格式8259的簡(jiǎn)介及其控制方式8259A是專門為了對(duì)8085A和8086/8088進(jìn)行中斷控制而設(shè)計(jì)的芯片,它是可以用程序控制的中斷控制器。單個(gè)的8259A能管理8級(jí)向量?jī)?yōu)先級(jí)中斷。在不增加其他電路的情況下,最多可以級(jí)聯(lián)成64級(jí)的向量?jī)?yōu)級(jí)中斷系統(tǒng)。8259A有多種工作方式,能用于各種系統(tǒng)。各種工作方式的設(shè)定是在初始化時(shí)通過軟件進(jìn)行的。 在總線控制器的控制下,8259A芯片可以處于編程狀態(tài)和操作狀態(tài),編程狀態(tài)是CPU使用IN或OUT指令對(duì)8259A芯片進(jìn)行初始化編程的狀態(tài)。功能:就是在有多個(gè)中斷源的系統(tǒng)中,接受外部

14、的中斷請(qǐng)求,并進(jìn)行判斷,選中當(dāng)前優(yōu)先級(jí)最高的中斷請(qǐng)求,再將此請(qǐng)求送到CPU的INTR端;當(dāng)CPU響應(yīng)中斷并進(jìn)入中斷子程序的處理過程后,中斷控制器仍負(fù)責(zé)對(duì)外部中斷請(qǐng)求的管理。二 系統(tǒng)硬件調(diào)試中出現(xiàn)的問題及解決措施問題一 步進(jìn)電機(jī)運(yùn)轉(zhuǎn)不流暢原因:分析后發(fā)現(xiàn),程序執(zhí)行中的中斷無(wú)法連續(xù)執(zhí)行,因?yàn)?254采用方式3發(fā)出的中斷信號(hào),脈沖時(shí)間太短,解決方法:在調(diào)整8254的計(jì)數(shù)器采用方式1后,一旦檢測(cè)信號(hào),重新將計(jì)數(shù)器裝入初值問題二 數(shù)碼管顯示亂碼原因:查看顯示數(shù)據(jù)發(fā)現(xiàn),當(dāng)8255輸出一個(gè)段碼后,下一次出現(xiàn)的是上一次輸出的值解決方法:在以后每次輸出之后,都輸出一個(gè)00A,以清除8255寄存器中的值,以達(dá)到清

15、除亂碼的效果問題三 程序執(zhí)行中有計(jì)數(shù)器賦初值,所以每次計(jì)數(shù)器都不能執(zhí)行完發(fā)出中斷原因:賦初值在循環(huán)當(dāng)中解決方法:將計(jì)數(shù)器賦初值放到循環(huán)外面,引用FLAG來判斷是否進(jìn)入中斷,如果進(jìn)入,則重新將計(jì)數(shù)器賦初值問題四:讀取按鍵混亂原因:用PC7-PC4來讀取按鍵。讀出的按鍵數(shù)值在高四位,于我們用低四位處理相沖突解決方法:將讀出的數(shù)值右移四位三 系統(tǒng)軟件3.1 軟件設(shè)計(jì)3.1.1 8255控制模塊如圖6所示,8255主要負(fù)責(zé)不停的讀取按鍵狀態(tài)檢測(cè)速度的大小PC6為00(關(guān))初始化8259、82558255PC4口檢測(cè)開關(guān)按鍵8255PC5口檢測(cè)正反轉(zhuǎn)按鍵1(開)8255PC6口檢測(cè)速度8255PC7口檢

16、測(cè)速度8255PC7口檢測(cè)速度PC6為1PC7為0PC7為1PC7為0???1(反轉(zhuǎn))口20(正轉(zhuǎn))PC7為1 如圖6 8255流程圖3.1.2 8254延時(shí)模塊設(shè)置8254的控制字,通過8254設(shè)置延時(shí),產(chǎn)生延時(shí)頻率,最后再接入到8255控制步進(jìn)電機(jī)的運(yùn)轉(zhuǎn)與停止,速度大小主要通過對(duì)8254裝入初值的不同來控制,流程如下圖7,與上圖6銜接(圖7分別于圖6最后連接)否否是是8254裝入初值8255PA.PB口輸出LED顯示速度判斷是否運(yùn)轉(zhuǎn)八拍是否進(jìn)入中斷PC低四位控制步進(jìn)電機(jī)進(jìn)入圖6的口1進(jìn)入圖6的口2 圖7 8254模塊流程3.1.3 LED顯示模塊LED模塊的主要功能是前四位顯示步進(jìn)電機(jī)的轉(zhuǎn)

17、速(r/min)度的值。此模塊用8255A、B口的控制LED數(shù)碼管的位碼,采用動(dòng)態(tài)掃描方式讓數(shù)碼管顯示出速度值。利用8255的端口A、B口各八位,共十六位控制數(shù)碼管的顯示,其中A口為位選控制,B口為段選控制,直接顯示步進(jìn)電機(jī)的轉(zhuǎn)速。數(shù)碼管的顯示控制對(duì)應(yīng)于下圖8 圖8 數(shù)碼管對(duì)應(yīng)圖來自8254的信號(hào)3.1.4 8259中斷模塊8259中斷模塊的8259主要負(fù)責(zé)接收來自8254的信號(hào)產(chǎn)生中斷,給80x86,控制一個(gè)脈沖產(chǎn)生一個(gè)中斷步進(jìn)電機(jī),如圖9步進(jìn)電機(jī)轉(zhuǎn)動(dòng)一拍80x86 圖9 3.2軟件調(diào)試中出現(xiàn)的問題及解決措施問題一 程序運(yùn)行中反復(fù)執(zhí)行MOV BX,OFFSET TTABLEL.原因:放在最高

18、的級(jí)別的大循環(huán)當(dāng)中,所以會(huì)反復(fù)執(zhí)行。解決方法:引用CX計(jì)數(shù),當(dāng)CX由08H變成00H時(shí),才返回執(zhí)行MOV BX,OFFSET TTABLEL問題二 跳轉(zhuǎn)指令無(wú)法達(dá)到期望位置,提示錯(cuò)誤。原因:JZ,JNZ指令只能跳轉(zhuǎn)255,而我們程序跳轉(zhuǎn)跳遠(yuǎn),超出范圍。解決方法:使用JMP語(yǔ)句,在中間插入,多次跳轉(zhuǎn),以達(dá)到跳轉(zhuǎn)位置附錄(源程序)IOY1 EQU 3040H ;片選IOY0對(duì)應(yīng)的端口始地址MY8255_A EQU IOY1+00H*4 ;8255的A口地址MY8255_B EQU IOY1+01H*4 ;8255的B口地址MY8255_C EQU IOY1+02H*4 ;8255的C口地址MY82

19、55_MODE EQU IOY1+03H*4 ;8255的控制寄存器地址IOY2 EQU 3080H ;片選IOY1對(duì)應(yīng)的端口始地址MY8254_COUNT0 EQU IOY2+00H*4 ;8254計(jì)數(shù)器0端口地址MY8254_COUNT1 EQU IOY2+01H*4 ;8254計(jì)數(shù)器1端口地址MY8254_COUNT2 EQU IOY2+02H*4 ;8254計(jì)數(shù)器2端口地址MY8254_MODE EQU IOY2+03H*4 ;8254控制寄存器端口地址INTR_IVADD EQU 01C8H ;INTR對(duì)應(yīng)的中斷矢量地址INTR_OCW1 EQU 0A1H ;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8

20、259的OCW1地址INTR_OCW2 EQU 0A0H ;INTR對(duì)應(yīng)PC機(jī)內(nèi)部8259的OCW2地址INTR_IM EQU 0FBH ;INTR對(duì)應(yīng)的中斷屏蔽字IOY0 EQU 3000H ;片選IOY0對(duì)應(yīng)的端口始地址MY8259_ICW1 EQU IOY0+00H ;實(shí)驗(yàn)系統(tǒng)中8259的ICW1端口地址MY8259_ICW2 EQU IOY0+04H ;實(shí)驗(yàn)系統(tǒng)中8259的ICW2端口地址MY8259_ICW3 EQU IOY0+04H ;實(shí)驗(yàn)系統(tǒng)中8259的ICW3端口地址MY8259_ICW4 EQU IOY0+04H ;實(shí)驗(yàn)系統(tǒng)中8259的ICW4端口地址MY8259_OCW1

21、EQU IOY0+04H ;實(shí)驗(yàn)系統(tǒng)中8259的OCW1端口地址MY8259_OCW2 EQU IOY0+00H ;實(shí)驗(yàn)系統(tǒng)中8259的OCW2端口地址MY8259_OCW3 EQU IOY0+00H ;實(shí)驗(yàn)系統(tǒng)中8259的OCW3端口地址STACK1 SEGMENT STACK DW 256 DUP(?)STACK1 ENDSDATA SEGMENT MES DB Press any key to exit!,0AH,0DH,0AH,0DH,$CS_BAK DW ? ;保存INTR原中斷處理程序入口段地址的變量IP_BAK DW ? ;保存INTR原中斷處理程序入口偏移地址的變量IM_BAK

22、 DB ? ;保存INTR原中斷屏蔽字的變量TTABLE1 DB 01H,03H,02H,06H,04H,0CH,08H,09H ;正轉(zhuǎn)編碼 TTABLE2 DB 09H,08H,0CH,04H,06H,02H,03H,01H ;反轉(zhuǎn)編碼FLAG DB 00H ;標(biāo)志位DATA ENDS CODE SEGMENT ASSUME CS:CODE,DS:DATASTART: MOV AX,DATA MOV DS,AX MOV DX,OFFSET MES ;顯示退出提示 MOV AH,09H INT 21H CLI MOV AX,0000H ;替換INTR的中斷矢量 MOV ES,AX MOV DI

23、,INTR_IVADD MOV AX,ES:DI MOV IP_BAK,AX ;保存INTR原中斷處理程序入口偏移地址 MOV AX,OFFSET MYISR MOV ES:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口偏移地址 ADD DI,2 MOV AX,ES:DI MOV CS_BAK,AX ;保存INTR原中斷處理程序入口段地址 MOV AX,SEG MYISR MOV ES:DI,AX ;設(shè)置當(dāng)前中斷處理程序入口段地址 MOV DX,INTR_OCW1 ;設(shè)置中斷屏蔽寄存器,打開INTR的屏蔽位 IN AL,DX MOV IM_BAK,AL ;保存INTR原中斷屏蔽字 AND AL,INT

24、R_IM OUT DX,AL MOV DX,MY8259_ICW1 ;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW1 MOV AL,13H ;邊沿觸發(fā)、單片8259、需要ICW4 OUT DX,AL MOV DX,MY8259_ICW2 ;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW MOV AL,08H OUT DX,AL MOV DX,MY8259_ICW4 ;初始化實(shí)驗(yàn)系統(tǒng)中8259的ICW4 MOV AL,01H ;非自動(dòng)結(jié)束EOI OUT DX,AL MOV DX,MY8259_OCW3 ;向8259的OCW3發(fā)送讀取IRR命令 MOV AL,0AH OUT DX,AL MOV DX,MY8259_OCW1

25、 ;初始化實(shí)驗(yàn)系統(tǒng)中8259的OCW1 MOV AL,0FEH ;打開IR0的屏蔽位 OUT DX,AL STI MOV DX,MY8255_MODE ;初始化8255工作方式 MOV AL,88H ;工作方式0,A口輸出,B口輸出,C高四位輸入,低四位輸出 OUT DX,AL A: MOV AH,1 ;判斷是否有按鍵按下 INT 16H JNZ WAIT1 ;無(wú)按鍵則跳回繼續(xù)執(zhí)行,有則退出 MOV CX,08H ;計(jì)數(shù)初值 MOV DX,MY8255_C IN AL,DX ;讀C口高4位的數(shù)據(jù) SHR AL,1 ;轉(zhuǎn)向C口的低4位 SHR AL,1 SHR AL,1 SHR AL,1 PUS

26、H BX MOV BL,AL ;BL保存AL中的數(shù)據(jù) MOV BH,BL ;BH中保存AL的數(shù)據(jù) AND BL,01H ;取開關(guān)狀態(tài) CMP BL,00H JZ A ;如果是0,則跳轉(zhuǎn)到A AND BH,02H ;取正反轉(zhuǎn)狀態(tài) CMP BH,00H JZ FORWARD ;如果是0,跳正轉(zhuǎn) JNZ BACKWARD ;如果是1,跳反轉(zhuǎn) POP BX FORWARD: MOV BX,OFFSET TTABLE1 ;將的TTABLE1首地址賦給BX JMP B ;跳轉(zhuǎn)到B取速度 BACKWARD: MOV BX,OFFSET TTABLE2 ;將的TTABLE2首地址賦給BX JMP B ;跳轉(zhuǎn)到

27、B取速度 B: MOV CX,08H ;計(jì)數(shù)初值 MOV FLAG,00H ;中斷結(jié)束后給FLAG賦值00H MOV DX,MY8255_C IN AL,DX ;讀C口數(shù)據(jù) SHR AL,04H ;將數(shù)據(jù)左移四位 AND AL,0CH ;取高兩位 MOV AH,AL ;保存AL中的數(shù)據(jù) AND AL,08H ;取最高位 CMP AL,00H ;與00比較 JZ CAMP1 JNZ CAMP2CAMP1: AND AH,04H ;取第二位 CMP AH,00H JZ SPEED1C ;00速度1, 跳SPEED1C JNZ SPEED2C ;01速度2,跳SPEED2CCAMP2: AND AH

28、,04H ;取第二位 CMP AH,00H JZ SPEED3C ;10速度3,跳SPEED1C JNZ SPEED4C1 ;11速度4,跳SPEED1CSPEED1C: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H ;計(jì)數(shù)器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;裝入計(jì)數(shù)初值 MOV AL,24H ;36分頻 OUT DX,AL MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,30H ;計(jì)數(shù)器0,方式1 OUT DX,AL MOV DX,MY8

29、254_COUNT0 ;裝入計(jì)數(shù)初值 MOV AL,0FFH ;255 OUT DX,AL MOV AL,00H OUT DX,AL JMP SPEED1SPEED2C: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H ;計(jì)數(shù)器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;裝入計(jì)數(shù)初值 MOV AL,48H ;72分頻 OUT DX,AL MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H ;計(jì)數(shù)器0,方式1 OUT DX,AL MOV DX,MY8

30、254_COUNT0 ;裝入計(jì)數(shù)初值 MOV AL,0FFH ;255 OUT DX,AL MOV AL,00H OUT DX,AL JMP SPEED2A1: JMP A SPEED4C1:JMP SPEED4 SPEED3C: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H ;計(jì)數(shù)器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;裝入計(jì)數(shù)初值 MOV AL,90H ;144分頻 OUT DX,AL MOV AL,00H OUT DX,AL MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,36H

31、 ;計(jì)數(shù)器0,方式1 OUT DX,AL MOV DX,MY8254_COUNT0 ;裝入計(jì)數(shù)初值 MOV AL,0FFH ;255 OUT DX,AL MOV AL,00H OUT DX,AL JMP SPEED3 SPEED4C: MOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,0B6H ;計(jì)數(shù)器2,方式3 OUT DX,AL MOV DX,MY8254_COUNT2 ;裝入計(jì)數(shù)初值 MOV AL,0FFH ;288分頻 OUT DX,AL MOV AL,01H OUT DX,ALMOV DX,MY8254_MODE ;初始化8254工作方式 MOV AL,3

32、6H ;計(jì)數(shù)器0,方式1 OUT DX,AL MOV DX,MY8254_COUNT0 ;裝入計(jì)數(shù)初值 MOV AL,0FFH ;255 OUT DX,AL MOV AL,00H OUT DX,AL JMP SPEED4 A2: JMP A1SPEED1: MOV AL,BX MOV DX,MY8255_C ;給步進(jìn)電機(jī)輸入信號(hào) OUT DX,AL DEC CX ;每輸入一次信號(hào)CX減1 CMP CX,00H ;將CX的值與00H比較,如果跳轉(zhuǎn)8次,跳轉(zhuǎn)到A,重新開始掃描按鍵 JZ A CMP FLAG,OOH ;判斷是不是已經(jīng)進(jìn)入中斷,如果進(jìn)入,跳轉(zhuǎn)到B,如果沒有,繼續(xù)執(zhí)行LED的顯示 JN

33、Z B MOV DX,MY8255_A MOV AL,0EFH ;段選3號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,06H ;顯示數(shù)字1 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL MOV DX,MY8255_A MOV AL,0F7H ;段選2號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,5BH ;顯示數(shù)字2 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL MOV DX,MY8255_A MOV AL,0FBH ;段選1號(hào)位 OUT DX,AL MOV DX,MY8255_B M

34、OV AL,3FH ;顯示數(shù)字0 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL JMP A1A3: JMP A2 SPEED2: MOV AL,BX MOV DX,MY8255_C ;給步進(jìn)電機(jī)輸入信號(hào) OUT DX,AL DEC CX ;每輸入一次信號(hào)CX減1 CMP CX,00H ;將CX的值與00H比較,如果跳轉(zhuǎn)8次,跳轉(zhuǎn)到A,重新開始掃描按鍵 JZ A CMP FLAG,OOH ;判斷是不是已經(jīng)進(jìn)入中斷,如果進(jìn)入,跳轉(zhuǎn)到B,如果沒有,繼續(xù)執(zhí)行LED的顯示 JNZ B MOV DX,MY8255_A MOV AL,0F7H ;段選2號(hào)位 OUT DX,AL

35、MOV DX,MY8255_B MOV AL,7DH ;顯示數(shù)字6 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL MOV DX,MY8255_A MOV AL,0FBH ;段選1號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,3FH ;顯示數(shù)字0 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL JMP A2 SPEED3: MOV AL,BX MOV DX,MY8255_C ;給步進(jìn)電機(jī)輸入信號(hào) OUT DX,AL DEC CX ;每輸入一次信號(hào)CX減1 CMP CX,00H ;將CX的值與00H比較,如果跳轉(zhuǎn)8

36、次,跳轉(zhuǎn)到A,重新開始掃描按鍵 JZ A CMP FLAG,OOH ;判斷是不是已經(jīng)進(jìn)入中斷,如果進(jìn)入,跳轉(zhuǎn)到B,如果沒有,繼續(xù)執(zhí)行LED的顯示 JNZ B MOV DX,MY8255_A MOV AL,0F7H ;段選2號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,4FH ;顯示數(shù)字3 OUT DX,AL MOV AL,00H ;消除鎖存值 OUT DX,AL MOV DX,MY8255_A MOV AL,0FBH ;段選1號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,3FH ;顯示數(shù)字0 OUT DX,AL MOV AL,00H OUT

37、DX,AL JMP A3A4: JMP A3 SPEED4: MOV AL,BX MOV DX,MY8255_C OUT DX,AL DEC CX ;每輸入一次信號(hào)CX減1 CMP CX,00H ;將CX的值與C00H比較,如果跳轉(zhuǎn)8次,跳轉(zhuǎn)到A,重新開始掃描按鍵 JZ A CMP FLAG,OOH ;判斷是不是已經(jīng)進(jìn)入中斷,如果進(jìn)入,跳轉(zhuǎn)到B,如果沒有,繼續(xù)執(zhí)行LED的顯示 JNZ B MOV DX,MY8255_A MOV AL,0F7H ;段選2號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,06H ;顯示數(shù)字5 OUT DX,AL MOV AL,00H ;消除鎖

38、存值 OUT DX,AL MOV DX,MY8255_A MOV AL,0FBH ;段選1號(hào)位 OUT DX,AL MOV DX,MY8255_B MOV AL,6DH OUT DX,AL ;顯示數(shù)字1 MOV AL,00H OUT DX,AL ;消除鎖存值 JMP A4 QUIT: CLI MOV AX,0000H ;恢復(fù)INTR原中斷矢量 MOV ES,AX MOV DI,INTR_IVADD MOV AX,IP_BAK ;恢復(fù)INTR原中斷處理程序入口偏移地址 MOV ES:DI,AX ADD DI,2 MOV AX,CS_BAK ;恢復(fù)INTR原中斷處理程序入口段地址 MOV ES:D

39、I,AX MOV DX,INTR_OCW1 ;恢復(fù)INTR原中斷屏蔽寄存器的屏蔽字 MOV AL,IM_BAK OUT DX,AL STI MOV AX,4C00H ;返回到DOS INT 21HMYISR PROC NEAR ;中斷處理程序MYISR PUSH AXIR0ISR:MOV AL,30H ;IR0處理,顯示字符串STR0 MOV AH,0EH INT 10H MOV AL,20H INT 10H INC BX ;列表向后移一格 MOV FLAG,01H JMP OVEROVER: MOV DX,INTR_OCW2 ;向試驗(yàn)箱上8259發(fā)送中斷結(jié)束命令 MOV AL,20H OUT DX,AL MOV AL,20H ;向PC機(jī)內(nèi)部8259發(fā)送中斷結(jié)束命令 OUT 20H,AL POP AX IRET MYISR ENDP CODE ENDS END START

展開閱讀全文
溫馨提示:
1: 本站所有資源如無(wú)特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!