九九热最新网址,777奇米四色米奇影院在线播放,国产精品18久久久久久久久久,中文有码视频,亚洲一区在线免费观看,国产91精品在线,婷婷丁香六月天

微機原理及接口技術 實驗指導

上傳人:努力****83 文檔編號:43589717 上傳時間:2021-12-03 格式:DOC 頁數(shù):44 大?。?.39MB
收藏 版權申訴 舉報 下載
微機原理及接口技術 實驗指導_第1頁
第1頁 / 共44頁
微機原理及接口技術 實驗指導_第2頁
第2頁 / 共44頁
微機原理及接口技術 實驗指導_第3頁
第3頁 / 共44頁

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

30 積分

下載資源

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

資源描述:

《微機原理及接口技術 實驗指導》由會員分享,可在線閱讀,更多相關《微機原理及接口技術 實驗指導(44頁珍藏版)》請在裝配圖網(wǎng)上搜索。

1、微機原理及接口技術實 驗 指 導 書楊霞 周林英 編長安大學電子與控制工程學院2009年9月44前 言本實驗指導是為適應各大、中專院校開設微機原理及應用方面的課程需做大量軟硬件實驗的需要而編寫的,供學生編程用。完成本實驗指導中的實驗,可使學生基本掌握8086/8088的結構原理、接口技術、程序設計技巧。手冊中詳細敘述了各實驗的目的、內(nèi)容,列出了接線圖、程序框圖和實驗步驟。主要學習內(nèi)容為80X86語言實驗環(huán)境配置、匯編源語言格式、輸出字符、循環(huán)結構、子程序調用,以及加減乘除等指令操作、通用接口芯片的接口編程與使用。所有實驗都是相互獨立的,次序上也沒有固定的先后關系,在使用本書進行教學時,教師可根

2、據(jù)教學要求,選擇相應實驗。學習結束后,要求學生能夠獨立編寫出綜合加減乘除等指令,以及循環(huán)結構、子程序調用等程序控制程序、看懂一般接口芯片電路圖。目 錄實驗一 清零程序4實驗二 拆字程序6實驗三 數(shù)據(jù)區(qū)移動8實驗四 多分支程序設計10實驗五 多字節(jié)減法運算13實驗六 顯示程序16實驗七 8251串口實驗25實驗八 步進電機控制29附錄一 匯編語言的存儲模型36附錄二 8279鍵值顯示程序37實驗一 清零程序一、實驗目的 掌握8088匯編語言程序設計和調試方法。二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容 把RAM區(qū)內(nèi)4000H-40FFH單元的內(nèi)容清零 。四、程序框圖五、源程序清

3、單.MODEL TINY.STACK 100.DATA.CODEORG 0100HSTART:MOV BX,4000HMOV AX,0000HMOV CX,80HL1: MOV BX,AXINC BXINC BXLOOP L1JMP $END START六、實驗步驟 手動修改RAM區(qū)內(nèi)4000H-40FFH的內(nèi)容,連續(xù)或單步方式運行程序,檢查4000-40FFH內(nèi)容 執(zhí)行程序前后的變化。七、思考1、把4000H-40FFH中的內(nèi)容改成FF,如何修改程序。2、把4000H-40FFH中的內(nèi)容改成00FF,如何修改程序。實驗二 拆字程序一、實驗目的掌握匯編語言設計和調試方法。 二、實驗設備STAR

4、系列實驗儀一套、PC機一臺。三、實驗內(nèi)容 把4000H單元的內(nèi)容拆開,高位送4001H低位,低位送4002H低位,4001H、4002H 的高位清零,一般本程序用于把數(shù)據(jù)送顯示緩沖區(qū)時用。 四、程序框圖五、源程序.MODEL TINY.STACK.DATA.CODESTART:MOV BX,4000HMOV AL,BXMOV AH,ALMOV CL,4SHR AH,CLINC BXMOV BX,AHAND AL,0FHINC BXMOV BX,ALJMP $六、實驗步驟 手動修改4000H的內(nèi)容,用連續(xù)或單步方式運行程序,檢查4000H-4002H中內(nèi)容變化情況。七、思考1.如何用斷點方式調試

5、本程序。2.把4000H、4001H單元低位的內(nèi)容合成一字送4002H單元。實驗三 數(shù)據(jù)區(qū)移動一、實驗目的掌握RAM中的數(shù)據(jù)操作。二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容把4100H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到4200H目標RAM區(qū)。四、設計思想 程序要求把內(nèi)存中某一數(shù)據(jù)區(qū)(稱為源數(shù)據(jù)塊)傳送到另一存儲區(qū)(稱為目的數(shù)據(jù)塊)。源數(shù)據(jù)塊和目的數(shù)據(jù)塊在存儲器中可能有三種情況,如下圖: 對于兩個數(shù)據(jù)塊分離的情況,如圖(a),數(shù)據(jù)的傳送從數(shù)據(jù)塊的首址開始,或者從數(shù)據(jù)塊的末址開始均可。但對于有部分重疊的情況,則要加以分析,否則重疊部分會因“搬移”而遭破壞。 可以得出以下結論:當

6、源數(shù)據(jù)首址目的塊首址時,從數(shù)據(jù)塊首址開始傳送數(shù)據(jù)。 當源數(shù)據(jù)塊首址目的塊首址時,從數(shù)據(jù)塊末地址開始傳送數(shù)據(jù)。五、程序框圖六、源程序清單 .MODEL TINY.STACK.DATA.CODEORG 0100HSTART0: MOV CX,0010HMOV SI,4100HMOV DI,4200HCMP SI,DIJA A42ADD SI,CXADD DI,CXA41: DEC SI DEC DIMOV AL,SIMOV DI,ALLOOP A41 JMP $A42: MOV AL,SIMOV DI,ALINC SIINC DILOOP A42JMP $END START0七、實驗步驟 調試運行

7、3060程序,檢查4100-410FH中內(nèi)容是否和4200-420FH中內(nèi)容完全一致。 八、思考1.把4200H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到4100H目標RAM區(qū)。2.把4100H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到410AH目標RAM區(qū)。實驗四 多分支程序設計一、實驗目的 掌握匯編語言的編程,熟悉程序散轉的設計方法。二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容編寫程序,根據(jù)接收到的鍵值,作不同的處理。四、設計思想多分支結構相當于一個多路開關,在程序設計中通常是根據(jù)某寄存器或某單元的內(nèi)容進行程序轉移。在設計多分支轉移程序時,如果分支太多,則平均轉移速度太慢,本實驗采用轉

8、移地址表實現(xiàn)多分支轉移,可以提高平均轉移速度。 五、程序框圖六、實驗步驟1、連線說明:E5區(qū) :CLKB2區(qū):2ME5區(qū) :CSA3區(qū):CS5E5區(qū) :A0A3區(qū):A0E5區(qū) :A、B、C、DG5區(qū):A、B、C、D2、在G5區(qū)的鍵盤上輸入1位數(shù)3、使用各種手段調試程序3、結果顯示在G5區(qū)的數(shù)碼管上七、源程序清單;調用GetKeyB返回鍵值,根據(jù)鍵值執(zhí)行相應的程序.MODELTINYEXTRNDisplay8:NEAR, GetKeyB:NEAR.STACK100.DATABUFFERDB8 DUP(?).CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPSTART1

9、:CALLGetKeyB;鍵值存放在AL中CMPAL,8JBSTART2XORAL,AL;大于7,作0處理START2:XORAH,AHMOVBX,AXSHLBX,1LEADI,Table_1JMPCS:DIBXTable_1: DWKey0, Key1, Key2, Key3, Key4, Key5, Key6, Key7Key0:MOVAL,1JMPKeyKey1:MOVAL,2JMPKeyKey2:MOVAL,3JMPKeyKey3:MOVAL,4JMPKeyKey4:MOVAL,5JMPKeyKey5:MOVAL,6JMPKeyKey6:MOVAL,7JMPKeyKey7:MOVAL,

10、8JMPKeyKey:MOVCX,8LEADI,BUFFERREPSTOSBLEASI,BUFFERCALLDisplay8MOVCX,60000LOOP$;延時JMPSTART1ENDSTART實驗五 多字節(jié)減法運算一、實驗目的 掌握BCD碼、補碼,熟悉多文件、多模塊匯編語言程序設計的方法。 二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容 從鍵盤上輸入4位被減數(shù)、減數(shù),實現(xiàn)雙字節(jié)BCD碼(四位數(shù))的減法,結果顯示在數(shù)碼管上;進一步熟悉使用斷點、單步進入、單步、運行到光標處、修改PC指針、全速運行等各種調試手段;熟悉查看特殊功能寄存器、CS段、DS段存貯器的各種方法。四、程序框圖

11、五、實驗步驟1、連線說明:E5區(qū) :CLKB2區(qū):2ME5區(qū) :CSA3區(qū):CS5E5區(qū) :A0A3區(qū):A0E5區(qū) :A、B、C、DG5區(qū):A、B、C、D2、在G5區(qū)的鍵盤上輸入4位被減數(shù)、減數(shù)3、結果顯示在G5區(qū)的數(shù)碼管上六、源程序清單.MODELTINYEXTRNDisplay8:NEAR, GetBCDKey:NEAREXTRNF1:BYTE.STACK100.DATABUFFERDB8 DUP(?)minuendDW1 DUP(?);被減數(shù)subtrahendDW1 DUP(?);減數(shù).CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPMOVF1,0;先清除

12、顯示,再接收鍵輸入START1:LEADI,minuendMOVCX,4;按鍵次數(shù)CALLGetBCDKey;得到雙字節(jié)十進制數(shù)(被減數(shù))MOVF1,1;接收到第一個鍵,才清除顯示LEADI,subtrahendMOVCX,4;按鍵次數(shù)CALLGetBCDKey;得到雙字節(jié)十進制數(shù)(減數(shù))MOVAX,minuendMOVBX,subtrahendMOVDL,10HCMPAX,BXJNBSTART2XCHGAX,BXMOVDL,11H;負數(shù)START2:SUBAL,BL;低位DASXCHGAL,AHSBBAL,BH;高位DASXCHGAL,AHCLDLEADI,BUFFER;存放顯示結果CALL

13、B1toB2;低位MOVAL,AHCALLB1toB2;高位MOVAL,10H;最高三位消隱STOSBSTOSBSTOSBSTOSBLEASI,BUFFER+3MOVCX,3CALLBlackDisplay;將高位0消隱LEASI,BUFFERCALLDisplay8JMPSTART1;將一個字節(jié)壓縮BCD碼轉換成二個字節(jié)非壓縮BCD碼B1toB2PROCNEARPUSHAXANDAL,0FHSTOSBPOPAXANDAL,0F0HRORAL,4STOSBRETB1toB2ENDPBlackDisplayPROCNEAR;將高位0消隱BlackDisplay1:MOVAL,SICMPAL,0J

14、NZExitMOVAL,10HMOVSI,ALDECSILOOPBlackDisplay1Exit:CLDMOVSI+1,DLRETBlackDisplayENDPENDSTART七、思考從鍵盤上輸入4位被加數(shù)、加數(shù),實現(xiàn)雙字節(jié)BCD碼(四位數(shù))的加法,結果顯示在數(shù)碼管上。實驗六 顯示程序一、實驗目的 1、熟悉8255的功能,理解LED顯示原理及控制方法;2、學會使用LED點陣液晶顯示字體和圖形;3、認真預習本節(jié)實驗內(nèi)容,可嘗試自行編寫程序,做好實驗準備工作,填寫實驗報告。二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容1、編寫程序,用8255的PA、PB口控制LED的位選和段選,

15、(1)控制8位數(shù)碼管依次顯示0;(2)編寫程序,控制8位數(shù)碼管依次顯示任意指定字符(0-F);(3)編寫程序,控制8位數(shù)碼管同時顯示0、1、F;2、按圖連接線路,運行程序,觀察實驗結果。四、實驗原理圖五、實驗步驟1、主機連線說明:B4區(qū):CS(8255)A3區(qū):CS1B4區(qū):A0、A1A3區(qū):A0、A1B4區(qū):JP56、JP53G5區(qū):JP 41、 JP 422、運行程序,驗證顯示結果。六:源程序(1) 控制8位數(shù)碼管依次顯示0;.MODELTINY.STACK100.DATAIO8255_ConEQU0F003H;CS3IO8255_AEQU0F000H;AIO8255_BEQU0F001H

16、;BLED_TAB:DB03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB07FH,6FH,77H,7CH,39H,05EH,79H,71H .CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVDX,IO8255_ConMOVAL,80H;方式0,A,B,C均為輸出OUTDX,ALMOVAL,0FEH;8255 PC輸出MOVCX,8GOON:MOVDX,IO8255_A;位選OUTDX,ALROLAL,1MOVAH,ALMOVDX,IO8255_BMOVAL,03FHOUTDX,ALMOVAL,AH;0FFH-8255 PACALLDelay

17、JMPGOONDelayPROCNEARPUSHCXMOVCX,20000Delay1:LOOPDelay1POPCXRETENDPENDSTART (2) 編寫程序,控制8位數(shù)碼管依次顯示任意指定字符(0-F);.MODELTINY.STACK100.MODELTINY.STACK100.DATAIO8255_ConEQU0F003H;CS3IO8255_AEQU0F000H;AIO8255_BEQU0F001H;BLED_TAB:DB03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB07FH,6FH,77H,7CH,39H,05EH,79H,71H .CODESTAR

18、T:MOVAX,DATAMOVDS,AXMOVES,AXMOVDX,IO8255_ConMOVAL,80H;方式0,A,B,C均為輸出OUTDX,ALMOVAL,0FEH;8255 PC輸出MOVCX,8GOON:MOVDX,IO8255_BMOVAL,05BHOUTDX,ALMOVAL,AHMOVDX,IO8255_A;位選OUTDX,ALROLAL,1MOVAH,AL;0FFH-8255 PACALLDelayJMPGOONDelayPROCNEARPUSHCXMOVCX,800Delay1:LOOPDelay1POPCXRETENDPENDSTART(3) 編寫程序,控制8位數(shù)碼管同時顯

19、示0、1、F:.MODELTINY.STACK100.MODELTINY.STACK100.DATAIO8255_ConEQU0F003H;CS3IO8255_AEQU0F000H;AIO8255_BEQU0F001H;BLED_TAB:DB03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB07FH,6FH,77H,7CH,39H,05EH,79H,71H F1DB0.CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXMOVDX,IO8255_ConMOVAL,80H;方式0,A,B,C均為輸出OUTDX,ALMOVAX,0FEFEH;8255 PC

20、輸出MOVCX,1600LEABX,LED_TABGOON:MOVAL,F1XLATMOVDX,IO8255_B;段選OUTDX,ALMOVAL,AHMOVDX,IO8255_A;位選OUTDX,ALROLAL,1MOVAH,ALCALLDL500msLOOPGOON;8段數(shù)碼管顯示當前值MOVCX,1600;8段數(shù)碼管顯示完成,則顯示下個字符MOVAL,AH;CALLDL3SINCF1CMPF1,10H;是否顯示完了JZEXITJMPGOONDL500msPROCNEARPUSHCXMOVCX,400DL500ms1:LOOPDL500ms1POPCXRETDL500msENDPEXIT:E

21、NDSTART七、思考 (4)編寫程序,控制8位數(shù)碼管顯示當前日期以及時間;實驗七 8251串口實驗 一、實驗目的與要求了解8251的內(nèi)部結構、工作原理;了解8251與8088的接口邏輯;掌握對8251的初始化編程方法,學會使用8251實現(xiàn)設備之間的串行通信。復習本節(jié)實驗內(nèi)容,可嘗試自行編寫程序,做好實驗準備工作,填寫實驗報告。二、實驗設備STAR系列實驗儀一套、PC機一臺三、實驗內(nèi)容1、編制程序:實現(xiàn)8251A與PC機的串行通訊,使用8253作分頻器提供8251的收發(fā)時鐘。2、連接線路,從微機接收一批數(shù)據(jù),接收完畢,再將它們回送給微機。四、程序框圖開始初始化8253(定時器0,方式3,BCD

22、碼計數(shù),CLK0/26)初始化8251接收10個字節(jié)數(shù)據(jù)子程序將接收到的10個字節(jié)數(shù)據(jù)通過8251發(fā)送給微機初始化8251:開始允許接收和發(fā)送數(shù)據(jù)清錯誤標志復位8251波特率系數(shù)為16,8個數(shù)據(jù)位,一個停止位,偶校驗返回接收10個字節(jié)數(shù)據(jù)子程序:開始讀入狀態(tài)有數(shù)據(jù)讀數(shù)據(jù)-緩沖區(qū)接收了10個字節(jié)數(shù)據(jù)返回NNYY發(fā)送了10個字節(jié)數(shù)據(jù)子程序:開始讀入狀態(tài)有數(shù)據(jù)發(fā)送發(fā)送了10個字節(jié)數(shù)據(jù)NNYY返回五、實驗原理圖六、實驗步驟1、連線說明:C5區(qū):CS(8253)、A0、A1A3區(qū):CS5、A0、A1C5區(qū):CLK0B2區(qū):2MC5區(qū):GATE0C1區(qū)的VCCC5區(qū):OUT0C5區(qū):RxC、TxCC5區(qū):

23、CS(8251)、C/DA3區(qū):CS1、A0C5區(qū):CLKB2區(qū):4MC5區(qū):RXD、TXDE7區(qū):RXD、TXD2、運行程序3、運行“串口助手(ComPort.EXE)”,設置串口(波特率4800,8個數(shù)據(jù)位,一個停止位,偶校驗),打開串口,選擇“HEX發(fā)送”、“HEX顯示”,向8251發(fā)送10個字節(jié)數(shù)據(jù)(輸入數(shù)據(jù)之間用空格分隔),是否能接收到10個字節(jié)數(shù)據(jù),接收到的數(shù)據(jù)是否與發(fā)送數(shù)據(jù)一致。4、改變傳輸數(shù)據(jù)的數(shù)目,重復實驗,觀察結果。七、演示程序.MODELTINY;使用8253的計數(shù)器0,外接2Mhz,經(jīng)26分頻后,送給8251,產(chǎn)生4800bpsCTL_ADDREQU0FF01H;控制字

24、或狀態(tài)字DATA_ADDREQU0FF00H;讀寫數(shù)據(jù)W_8253_T0EQU0BF00H;計數(shù)器0地址W_8253_CEQU0BF03H;控制字.STACK100.DATAReceive_BufferDB10 DUP(0);接受緩沖器Send_BufferEQUReceive_Buffer;發(fā)送緩沖器.CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPCALLINIT_8253CALLINIT_8251START1:MOVCX,10CALLReceive_GroupMOVCX,10CALLSend_GroupJMP START1INIT_8253PROCNEARM

25、OVDX,W_8253_CMOVAL,37H;定時器0,方式3OUTDX,ALMOVDX,W_8253_T0MOVAL,26H;BCD碼26(2000000/26)=16*4800OUTDX,ALMOVAL,0OUTDX,ALRETINIT_8253ENDPINIT_8251PROCNEARCALLRESET_8251MOVDX,CTL_ADDRMOVAL,7EH;波特率系數(shù)為16,8個數(shù)據(jù)位OUTDX,AL;一個停止位,偶校驗CALLDLTIME;延時MOVAL,15H ;允許接收和發(fā)送發(fā)送數(shù)據(jù),清錯誤標志OUTDX,ALCALLDLTIMERETINIT_8251ENDPReset_825

26、1PROCNEARMOVDX,CTL_ADDRMOVAL,0OUTDX,AL;向控制口寫入0CALLDLTIME;延時,等待寫操作完成OUTDX,AL;向控制口寫入0CALLDLTIME;延時OUTDX,AL;向控制口寫入0CALLDLTIME;延時MOV AL,40H;向控制口寫入復位字40HOUTDX,ALCALLDLTIMERETReset_8251ENDP;接受一組數(shù)據(jù),CX-接受數(shù)目Receive_GroupPROCNEARLEADI,Receive_BufferReceive_Group1: CALLReceive_ByteSTOSBLOOPReceive_Group1RETRec

27、eive_GroupENDP;接受一個字節(jié)Receive_BytePROCNEARMOVDX,CTL_ADDRReceive_Byte1:INAL,DX;讀入狀態(tài)TESTAL,2JZReceive_Byte1;有數(shù)據(jù)嗎?MOVDX,DATA_ADDR;有INAL,DXRETReceive_ByteENDP;發(fā)送一組數(shù)據(jù),CX-發(fā)送數(shù)目Send_GroupPROCNEARLEASI,Send_BufferSend_Group1:LODSBCALLSendByteLOOPSend_Group1RETSend_GroupENDP;發(fā)送一個字節(jié)SendbytePROCNEARPUSHAXMOVDX,C

28、TL_ADDR;讀入狀態(tài)Sendbyte1:INAL,DXTESTAL,1JZSendbyte1;允許數(shù)據(jù)發(fā)送嗎?POPAX;發(fā)送MOVDX,DATA_ADDROUTDX,ALRETSendbyteENDP;延時DLTIMEPROCNEARMOVCX,10LOOP$RETDLTIMEENDPENDSTART八、實驗擴展及思考請讀者思考,如何修改程序實現(xiàn)8251的自發(fā)自收功能?實驗八 步進電機控制一、實驗目的與要求1、了解步進電機的基本原理,掌握步進電機的轉動編程方法2、了解影響電機轉速的因素有那些二、實驗設備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容編寫程序:使用G5區(qū)的鍵盤控制步進電機

29、的正反轉、調節(jié)轉速,連續(xù)轉動或轉動指定步數(shù);將相應的數(shù)據(jù)顯示在G5區(qū)的數(shù)碼管上。四、控制原理步進電機的驅動原理是通過它每相線圈的電流的順序切換來使電機作步進式旋轉,驅動電路由脈沖來控制,所以調節(jié)脈沖的頻率便可改變步進電機的轉速,微控制器最適合控制步進電機。另外,由于電機的轉動慣量的存在,其轉動速度還受驅動功率的影響,當脈沖的頻率大于某一值(本實驗為f.100hz)時,電機便不再轉動。實驗電機共有四個相位(A,B,C,D),按轉動步驟可分單4拍(A-B-C-D-A),雙4拍(AB-BC-CD-DA-AB)和單雙8拍(A-AB-B-BC-C-CD-D-DA-A).五、程序框圖NYNYNNNN0-需

30、要刷新顯示標志1-步進電機未轉動過標志1-轉動方向標志(1:表示順時針方向)33H-下次送給步進電機值5-步進電機轉速初始化8255(PC口輸出)初始化8253(計數(shù)器T0設置在模式2狀態(tài),BCD碼計數(shù),CLK0/210)初始化8259(允許8253中斷)初始化8253中斷向量初始化顯示緩沖區(qū):(數(shù)碼管第8位:0,順時針方向;5、7位消隱;6位:轉速;1、2、3、4位:0,表示連續(xù)轉動,其他值表示需要轉動的步數(shù))調用顯示子程序有鍵按下需要刷新顯示標志=10-需要刷新顯示標志調用步數(shù)調整子程序關中斷(終止步進電機轉動)數(shù)碼管的1、2、3位-2、3、4位鍵值送給數(shù)碼管的第一位調用改變轉向子程序鍵值

31、9鍵值=0AH調用增速子程序調用減速子程序調用啟動步進電機子程序Y鍵值=0BH鍵值=0CH鍵值=0DH開始YYY改變方向子程序:YYNNY開始轉動方向標志=091H-下次送給步進電機值下次送給步進電機值循環(huán)右移二次1-轉動方向標志0-送給數(shù)碼管的第7位步進電機未轉動過標志33H-下次送給步進電機值下次送給步進電機值循環(huán)左移二次0-轉動方向標志1-送給數(shù)碼管的第7位步進電機未轉動過標志返回啟動步進電機子程序:YNY開始0-步進電機未轉動過標志取轉動步數(shù)取轉速對應的延時值(轉速延時)初始轉速延時1=初始轉速延時轉速延時需要刷新顯示標志轉動步數(shù)減一1-1轉動步數(shù)=0時關中斷清中斷標志開始下次送給步進

32、電機值循環(huán)左移一次1-1返回下次送給步進電機值-8255的PC口(控制步進電機轉動一步)Y六、實驗原理圖七、實驗步驟1、主機連線說明:E1區(qū):A、B、C、DB4區(qū):PC0、PC1、PC2、PC3E5區(qū):CLKB2區(qū):2M E5區(qū):CS、A0A3區(qū):CS5、A0E5區(qū):A、B、C、DG5區(qū):A、B、C、DB3區(qū):CS、A0A3區(qū):CS1、A0B3區(qū):INT、INTAES8688:INTR、INTAC5區(qū):CS(8253)、A0、A1A3區(qū):CS2、A0、A1C5區(qū):GATE0C1區(qū):VCCC5區(qū):CLK0B2區(qū):1MC5區(qū):OUT0B3區(qū):IR0B4區(qū):CS(8255)、A0、A1A3區(qū):CS3

33、、A0、A12、調試程序,查看運行結果是否正確八、演示程序 .MODELTINYEXTRNDisplay8:NEAR, SCAN_KEY:NEARIO8259_0EQU0F000HIO8259_1EQU0F001HCon_8253EQU0E003HT0_8253EQU0E000HIO8255_ConEQU0D003H;CS3IO8255_PCEQU0D002H.STACK100.DATAStepControlDB0;下一次送給步進電機的值bufferDB8 DUP(0);顯示緩沖區(qū),8個字節(jié)buffer1DB8 DUP(0);顯示緩沖區(qū),8個字節(jié)SpeedNoDB0;選擇哪一級速度StepDe

34、layDB0;轉動一步后,延時常數(shù)StartStepDelayDB0;若選擇速度過快,延時由長到短,最終使用對應延時常數(shù)StartStepDelay1 DB0;StartStepDelaybFirstDB0;有沒有轉動過步進電機bClockwiseDB0 ; =1 順時針方向 =0 逆時針方向轉動bNeedDisplayDB0;已轉動一步,需要顯示新步數(shù)StepCountDW0;需要轉動的步數(shù)StepDelayTab:DB250,125,83,62,50,42,36,32,28,25,22,21.CODESTART:MOV AX,DATAMOVDS,AXMOVES,AXNOPMOVbFirst

35、,1;有沒有轉動過步進電機MOVbClockwise,1;順時針方向MOVStepControl,33H;下一次送給步進電機的值MOVSpeedNo,5;第五級速度CALLInit8255CALLInit8253CALLInit8259CALLWriIntverMOVbuffer,0;顯示緩沖器初始化MOVbuffer+1,0MOVbuffer+2,0MOVbuffer+3,0MOVbuffer+4,10HMOVAL,SpeedNoMOVbuffer+5,ALMOVbuffer+6,10HMOVbuffer+7,0STAR2:LEASI,bufferLEADI,buffer1MOVCX,8RE

36、PMOVSBLEASI,buffer1CALLDisplay8STAR3:CALLScan_KeyJBSTAR5CMPbNeedDisplay,0JZSTAR3MOVbNeedDisplay,0CALLStep_SUB_1JMPSTAR2STAR5:CLI;終止步進電機轉動CMPAL,10JNBSTAR1MOVAH,buffer+2MOVbuffer+3,AHMOVAH,buffer+1MOVbuffer+2,AHMOVAH,bufferMOVbuffer+1,AHMOVbuffer,ALJMPSTAR2STAR1:CMPAL,14JNBSTAR3LEASI,DriverTabSUBAL,10

37、SHLAL,1XORAH,AHMOVBX,AXJMPCS:SI+BXDriverTab:DWDirection;轉動方向DWSpeed_up;提高轉速DWSpeed_Down;降低轉速DWExec ;步進電機根據(jù)方向、轉速、步數(shù)開始轉動Direction:CMPbClockwise,0JZClockwiseMOVbClockwise,0MOVbuffer+7,1AntiClockwise:CMPbFirst,0JZAntiClockwise1MOVStepControl,91HJMPDirection1AntiClockwise1:MOVAL,StepControlRORAL,2MOVStep

38、Control,ALJMPDirection1Clockwise:MOVbClockwise,1MOVbuffer+7,0CMPbFirst,0JZClockwise1MOVStepControl,33HJMPDirection1Clockwise1:MOVAL,StepControlROLAL,2MOVStepControl,ALDirection1:JMPSTAR2Speed_up:MOVAL,SpeedNoCMPAL,11JZSpeed_up2Speed_up1:INCALMOVSpeedNo,ALMOVbuffer+5,ALSpeed_up2:JMPSTAR2Speed_Down:MO

39、VAL,SpeedNoCMPAL,0JZSpeed_Down1DECALMOVSpeedNo,ALMOVbuffer+5,ALSpeed_Down1:JMPSTAR2Exec:MOVbFirst,0CALLTakeStepCountLEABX,StepDelayTabMOVAL,SpeedNoXLATMOVStepDelay,ALCMPAL,50JNBExec1MOVAL,50Exec1:MOVStartStepDelay,ALMOVStartStepDelay1,ALSTIJMPSTAR2TIMER0:PUSHAXPUSHDXDECStartStepDelayJNZTIMER0_1MOVAL

40、,StartStepDelay1CMPAL,StepDelayJZTIMER0_2DECALMOVStartStepDelay1,ALTIMER0_2:MOVStartStepDelay,ALMOVAL,StepControlMOVDX,IO8255_PCOUTDX,ALCMPbClockwise,0JNZTIMER0_3RORAL,1JMPTIMER0_4TIMER0_3:ROLAL,1TIMER0_4:MOVStepControl,ALCMPStepCount,0JZTIMER0_1MOVbNeedDisplay,1DECStepCountJNZTIMER0_1addsp,8 ;小寫部分不

41、允許使用單步、單步進入命令popfclipushfsubsp,8nopTIMER0_1:MOVDX,IO8259_0MOVAL,20HOUTDX,ALPOPDXPOPAXIRETStep_SUB_1PROCNEARMOVCX,4LEABX,bufferStep_SUB_1_1:DECBYTE PTR BXCMPBYTE PTR BX,0FFHJNZStep_SUB_1_2MOVBYTE PTR BX,9INCBXLOOPStep_SUB_1_1Step_SUB_1_2:RETStep_SUB_1ENDPTakeStepCountPROCNEARMOVAL,buffer+3;轉動步數(shù)送入Step

42、CountMOVBX,10MULBLADDAL,buffer+2MULBLADDAL,buffer+1ADCAH,0MULBXADDAL,bufferADCAH,0MOVStepCount,AXRETTakeStepCountENDPInit8255PROCNEARMOVDX,IO8255_ConMOVAL,80HOUTDX,AL;8255 PC輸出DECDXMOVAL,0FFHOUTDX,AL;0FFH-8255 PCRETInit8255ENDPInit8253PROCNEARMOVDX,Con_8253MOVAL,35HOUTDX,AL ;計數(shù)器T0設置在模式2狀態(tài),BCD碼計數(shù)MOVD

43、X,T0_8253MOVAL,10HOUTDX,ALMOVAL,02HOUTDX,AL;CLK0/210RETInit8253ENDPInit8259PROCNEARMOVDX,IO8259_0MOVAL,13HOUTDX,ALMOVDX,IO8259_1MOVAL,08HOUTDX,ALMOVAL,09HOUTDX,ALMOVAL,0FEHOUTDX,ALRETInit8259ENDPWriIntverPROCNEARPUSHESMOVAX,0MOVES,AXMOVDI,20HLEAAX,TIMER0STOSWMOVAX,CSSTOSWPOPESRETWriIntverENDPENDSTAR

44、T九、實驗擴展及思考1、怎樣改變電機的轉速?2、通過實驗找出電機轉速的上限,如何能進一步提高最大轉速?3、怎樣能使電機反轉?附錄一 匯編語言的存儲模型模型說明TINY(微)所有數(shù)據(jù)及代碼裝入同一個代碼段內(nèi),此模型的程序按.COM文件格式編寫,要求程序從地址0100H處開始SMALL(小)這種模型包含兩個段:一個64KB的數(shù)據(jù)段和一個64KB的代碼段MEDIUM(中)這種模型包含一個64KB的數(shù)據(jù)段和任意多個代碼段,以供大程序使用COMPACT(壓縮)包含一個代碼段和任意多個數(shù)據(jù)段LARGE(大)LARGE模型允許多個代碼段和數(shù)據(jù)段HUGE(巨型)允許數(shù)據(jù)段大于64KB,其他與LARGE模型相同

45、FLAT(平展)僅限于MASM6.X版本。FLAT模型使用一個512KB的段來存儲所有的代碼和數(shù)據(jù),應注意的是該模型主要用于Windows NT中附錄二 8279鍵值顯示程序;8279 鍵盤顯示器接口芯片;1.查詢控制方式 2.輸入時鐘2MHZ 3.8279內(nèi)部20分頻(100KHZ) ;4.掃描計數(shù)器采用編碼工作方式(通過外部138譯碼);5.顯示按鍵值,第九次按鍵,清除顯示;8279 查詢工作方式.MODELTINYCMD_8279 EQU 0BF01H;8279命令字、狀態(tài)字地址DATA_8279 EQU 0BF00H;8279讀寫數(shù)據(jù)口的地址PUBLICGetKey, GetKeyA, GetKeyB, GetBCDKey, DisPlay8, SCAN_KEYPUBLICF1.STACK100.DATAF1 DB ?LED_TAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8HDB080H,90H,88H,83H,0C6H,0A1H,86H,8EH DB0FFH,0BFH.CODEGetKeyPROCNEARCMPCX,0JZGetKey5CMPCX,9JNBGetKey5PUSHAXPUSHBXPUSHDXPUSHFMOVAX,CXCLCRCRAX,1DECAXADDDI,AXSTDMO

展開閱讀全文
溫馨提示:
1: 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
2: 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
3.本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
4. 未經(jīng)權益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
5. 裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
6. 下載文件中如有侵權或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

相關資源

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

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

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


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