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

歡迎來到裝配圖網(wǎng)! | 幫助中心 裝配圖網(wǎng)zhuangpeitu.com!
裝配圖網(wǎng)
ImageVerifierCode 換一換
首頁 裝配圖網(wǎng) > 資源分類 > DOC文檔下載  

微機原理及接口技術(shù) 實驗指導(dǎo) 加了注釋

  • 資源ID:43589447       資源大?。?span id="24d9guoke414" class="font-tahoma">2.40MB        全文頁數(shù):45頁
  • 資源格式: DOC        下載積分:30積分
快捷下載 游客一鍵下載
會員登錄下載
微信登錄下載
三方登錄下載: 微信開放平臺登錄 支付寶登錄   QQ登錄   微博登錄  
二維碼
微信掃一掃登錄
下載資源需要30積分
郵箱/手機:
溫馨提示:
用戶名和密碼都是您填寫的郵箱或者手機號,方便查詢和重復(fù)下載(系統(tǒng)自動生成)
支付方式: 支付寶    微信支付   
驗證碼:   換一換

 
賬號:
密碼:
驗證碼:   換一換
  忘記密碼?
    
友情提示
2、PDF文件下載后,可能會被瀏覽器默認(rèn)打開,此種情況可以點擊瀏覽器菜單,保存網(wǎng)頁到桌面,就可以正常下載了。
3、本站不支持迅雷下載,請使用電腦自帶的IE瀏覽器,或者360瀏覽器、谷歌瀏覽器下載即可。
4、本站資源下載后的文檔和圖紙-無水印,預(yù)覽文檔經(jīng)過壓縮,下載后原文更清晰。
5、試題試卷類文檔,如果標(biāo)題沒有明確說明有答案則都視為沒有答案,請知曉。

微機原理及接口技術(shù) 實驗指導(dǎo) 加了注釋

微機原理及接口技術(shù)實 驗 指 導(dǎo) 書楊霞 周林英 編長安大學(xué)電子與控制工程學(xué)院2009年9月45前 言本實驗指導(dǎo)是為適應(yīng)各大、中專院校開設(shè)微機原理及應(yīng)用方面的課程需做大量軟硬件實驗的需要而編寫的,供學(xué)生編程用。完成本實驗指導(dǎo)中的實驗,可使學(xué)生基本掌握8086/8088的結(jié)構(gòu)原理、接口技術(shù)、程序設(shè)計技巧。手冊中詳細(xì)敘述了各實驗的目的、內(nèi)容,列出了接線圖、程序框圖和實驗步驟。主要學(xué)習(xí)內(nèi)容為80X86語言實驗環(huán)境配置、匯編源語言格式、輸出字符、循環(huán)結(jié)構(gòu)、子程序調(diào)用,以及加減乘除等指令操作、通用接口芯片的接口編程與使用。所有實驗都是相互獨立的,次序上也沒有固定的先后關(guān)系,在使用本書進行教學(xué)時,教師可根據(jù)教學(xué)要求,選擇相應(yīng)實驗。學(xué)習(xí)結(jié)束后,要求學(xué)生能夠獨立編寫出綜合加減乘除等指令,以及循環(huán)結(jié)構(gòu)、子程序調(diào)用等程序控制程序、看懂一般接口芯片電路圖。目 錄實驗一 清零程序4實驗二 拆字程序6實驗三 數(shù)據(jù)區(qū)移動8實驗四 多分支程序設(shè)計10實驗五 多字節(jié)減法運算13實驗六 顯示程序16實驗七 8251串口實驗25實驗八 步進電機控制29附錄一 匯編語言的存儲模型36附錄二 8279鍵值顯示程序37實驗一 清零程序一、實驗?zāi)康?掌握8088匯編語言程序設(shè)計和調(diào)試方法。二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容 把RAM區(qū)內(nèi)4000H-40FFH單元的內(nèi)容清零 。四、程序框圖五、源程序清單.MODEL TINY;.STACK 100;.DATA;簡化段定義偽指令.CODEORG 0100HSTART:MOV BX,4000H;將內(nèi)存區(qū)4000H地址給BXMOV AX,0000H;將AX寄存器清零,后面用于給內(nèi)存區(qū)賦值0MOV CX,80H;循環(huán)量L1: MOV BX,AX;用AX中的0對內(nèi)存區(qū)清零INC 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,如何修改程序。實驗二 拆字程序一、實驗?zāi)康恼莆諈R編語言設(shè)計和調(diào)試方法。 二、實驗設(shè)備STAR系列實驗儀一套、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.如何用斷點方式調(diào)試本程序。2.把4000H、4001H單元低位的內(nèi)容合成一字送4002H單元。實驗三 數(shù)據(jù)區(qū)移動一、實驗?zāi)康恼莆誖AM中的數(shù)據(jù)操作。二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容把4100H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到4200H目標(biāo)RAM區(qū)。四、設(shè)計思想 程序要求把內(nèi)存中某一數(shù)據(jù)區(qū)(稱為源數(shù)據(jù)塊)傳送到另一存儲區(qū)(稱為目的數(shù)據(jù)塊)。源數(shù)據(jù)塊和目的數(shù)據(jù)塊在存儲器中可能有三種情況,如下圖: 對于兩個數(shù)據(jù)塊分離的情況,如圖(a),數(shù)據(jù)的傳送從數(shù)據(jù)塊的首址開始,或者從數(shù)據(jù)塊的末址開始均可。但對于有部分重疊的情況,則要加以分析,否則重疊部分會因“搬移”而遭破壞。 可以得出以下結(jié)論:當(dāng)源數(shù)據(jù)首址目的塊首址時,從數(shù)據(jù)塊首址開始傳送數(shù)據(jù)。 當(dāng)源數(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七、實驗步驟 調(diào)試運行3060程序,檢查4100-410FH中內(nèi)容是否和4200-420FH中內(nèi)容完全一致。 八、思考1.把4200H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到4100H目標(biāo)RAM區(qū)。2.把4100H源RAM區(qū)首址內(nèi)的16字節(jié)數(shù)據(jù)傳送到410AH目標(biāo)RAM區(qū)。實驗四 多分支程序設(shè)計一、實驗?zāi)康?掌握匯編語言的編程,熟悉程序散轉(zhuǎn)的設(shè)計方法。二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容編寫程序,根據(jù)接收到的鍵值,作不同的處理。四、設(shè)計思想多分支結(jié)構(gòu)相當(dāng)于一個多路開關(guān),在程序設(shè)計中通常是根據(jù)某寄存器或某單元的內(nèi)容進行程序轉(zhuǎn)移。在設(shè)計多分支轉(zhuǎn)移程序時,如果分支太多,則平均轉(zhuǎn)移速度太慢,本實驗采用轉(zhuǎn)移地址表實現(xiàn)多分支轉(zhuǎn)移,可以提高平均轉(zhuǎ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、使用各種手段調(diào)試程序3、結(jié)果顯示在G5區(qū)的數(shù)碼管上七、源程序清單;調(diào)用GetKeyB返回鍵值,根據(jù)鍵值執(zhí)行相應(yīng)的程序.MODELTINYEXTRNDisplay8:NEAR, GetKeyB:NEAR.STACK100.DATABUFFERDB8 DUP(?).CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPSTART1: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,8JMPKeyKey:MOVCX,8LEADI,BUFFERREPSTOSBLEASI,BUFFERCALLDisplay8MOVCX,60000LOOP$;延時JMPSTART1ENDSTART實驗五 多字節(jié)減法運算一、實驗?zāi)康?掌握BCD碼、補碼,熟悉多文件、多模塊匯編語言程序設(shè)計的方法。 二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容 從鍵盤上輸入4位被減數(shù)、減數(shù),實現(xiàn)雙字節(jié)BCD碼(四位數(shù))的減法,結(jié)果顯示在數(shù)碼管上;進一步熟悉使用斷點、單步進入、單步、運行到光標(biāo)處、修改PC指針、全速運行等各種調(diào)試手段;熟悉查看特殊功能寄存器、CS段、DS段存貯器的各種方法。四、程序框圖五、實驗步驟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、結(jié)果顯示在G5區(qū)的數(shù)碼管上六、源程序清單.MODELTINYEXTRNDisplay8:NEAR, GetBCDKey:NEAREXTRNF1:BYTE.STACK100.DATABUFFERDB8 DUP(?)minuendDW1 DUP(?);被減數(shù)subtrahendDW1 DUP(?);減數(shù).CODESTART:MOVAX,DATAMOVDS,AXMOVES,AXNOPMOVF1,0;先清除顯示,再接收鍵輸入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;負(fù)數(shù)START2:SUBAL,BL;低位DASXCHGAL,AHSBBAL,BH;高位DASXCHGAL,AHCLDLEADI,BUFFER;存放顯示結(jié)果CALLB1toB2;低位MOVAL,AHCALLB1toB2;高位MOVAL,10H;最高三位消隱STOSBSTOSBSTOSBSTOSBLEASI,BUFFER+3MOVCX,3CALLBlackDisplay;將高位0消隱LEASI,BUFFERCALLDisplay8JMPSTART1;將一個字節(jié)壓縮BCD碼轉(zhuǎn)換成二個字節(jié)非壓縮BCD碼B1toB2PROCNEARPUSHAXANDAL,0FHSTOSBPOPAXANDAL,0F0HRORAL,4STOSBRETB1toB2ENDPBlackDisplayPROCNEAR;將高位0消隱BlackDisplay1:MOVAL,SICMPAL,0JNZExitMOVAL,10HMOVSI,ALDECSILOOPBlackDisplay1Exit:CLDMOVSI+1,DLRETBlackDisplayENDPENDSTART七、思考從鍵盤上輸入4位被加數(shù)、加數(shù),實現(xiàn)雙字節(jié)BCD碼(四位數(shù))的加法,結(jié)果顯示在數(shù)碼管上。實驗六 顯示程序一、實驗?zāi)康?1、熟悉8255的功能,理解LED顯示原理及控制方法;2、學(xué)會使用LED點陣液晶顯示字體和圖形;3、認(rèn)真預(yù)習(xí)本節(jié)實驗內(nèi)容,可嘗試自行編寫程序,做好實驗準(zhǔn)備工作,填寫實驗報告。二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容1、編寫程序,用8255的PA、PB口控制LED的位選和段選,(1)控制8位數(shù)碼管依次顯示0;(2)編寫程序,控制8位數(shù)碼管依次顯示任意指定字符(0-F);(3)編寫程序,控制8位數(shù)碼管同時顯示0、1、F;2、按圖連接線路,運行程序,觀察實驗結(jié)果。四、實驗原理圖五、實驗步驟1、主機連線說明:B4區(qū):CS(8255)A3區(qū):CS1B4區(qū):A0、A1A3區(qū):A0、A1B4區(qū):JP56、JP53G5區(qū):JP 41、 JP 422、運行程序,驗證顯示結(jié)果。六:源程序(1) 控制8位數(shù)碼管依次顯示0;.MODELTINY.STACK100.DATAIO8255_ConEQU0F003H;CS3控制字端口地址IO8255_AEQU0F000H;A數(shù)據(jù)口IO8255_BEQU0F001H;B數(shù)據(jù)口LED_TAB:DB03FH,06H,05BH,04FH,66H,6DH,7DH,07HDB07FH,6FH,77H,7CH,39H,05EH,79H,71H ;存儲要顯示的數(shù)碼管的值,B口的8位分別對應(yīng)7位數(shù)碼管的abcdefg.CODESTART:MOVAX,DATA; 單片機尋址方式,地址怎樣傳到DATA中的MOVDS,AX;初始化數(shù)據(jù)段寄存器MOVES,AX;初始化附加段,這一句不需要MOVDX,IO8255_Con;控制字地址送DXMOVAL,80H;方式0,A,B,C均為輸出OUTDX,ALMOVAL,0FEH; 8255 PC輸出,輸出0FEH到A口MOVCX,8GOON:MOVDX,IO8255_A;位選,就是片選,選擇哪一個LED組OUTDX,AL ;1111 1110輸出到A口ROLAL,1 ;循環(huán)左移1位,最低位的0移動1位到高位,進行片選用MOVAH,AL;AL當(dāng)前值送AH暫存,因為AL還要用于B口數(shù)據(jù)送DX。MOVDX,IO8255_B;選擇B口,MOVAL,03FHOUTDX,AL;送入要顯示的字符03FH,對照實驗原理圖可知,B口選擇的是相應(yīng)的abcdefg7段數(shù)碼管的位置,所以現(xiàn)在顯示的是數(shù)字0MOVAL,AH;0FFH->8255 PACALLDelay;調(diào)用延時;這里可以加入一行指令,讓CX減1,以使得程序運行一次,即8個LED都顯示一次0就結(jié)束。JMPGOON循環(huán)DelayPROCNEARPUSHCXMOVCX,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,07H DB07FH,6FH,77H,7CH,39H,05EH,79H,71H;這些數(shù)值控制LED7段數(shù)碼管的顯示位置.CODESTART: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ù)碼管同時顯示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輸出MOVCX,1600LEABX,LED_TABGOON:MOVAL,F1XLATMOVDX,IO8255_B;段選OUTDX,ALMOVAL,AHMOVDX,IO8255_A;位選OUTDX,ALROLAL,1MOVAH,ALCALLDL500msLOOPGOON;8段數(shù)碼管顯示當(dāng)前值MOVCX,1600;8段數(shù)碼管顯示完成,則顯示下個字符MOVAL,AH;CALLDL3SINCF1CMPF1,10H;是否顯示完了JZEXITJMPGOONDL500msPROCNEARPUSHCXMOVCX,400DL500ms1:LOOPDL500ms1POPCXRETDL500msENDPEXIT:ENDSTART七、思考 (4)編寫程序,控制8位數(shù)碼管顯示當(dāng)前日期以及時間;實驗七 8251串口實驗 一、實驗?zāi)康呐c要求了解8251的內(nèi)部結(jié)構(gòu)、工作原理;了解8251與8088的接口邏輯;掌握對8251的初始化編程方法,學(xué)會使用8251實現(xiàn)設(shè)備之間的串行通信。復(fù)習(xí)本節(jié)實驗內(nèi)容,可嘗試自行編寫程序,做好實驗準(zhǔn)備工作,填寫實驗報告。二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺三、實驗內(nèi)容1、編制程序:實現(xiàn)8251A與PC機的串行通訊,使用8253作分頻器提供8251的收發(fā)時鐘。2、連接線路,從微機接收一批數(shù)據(jù),接收完畢,再將它們回送給微機。四、程序框圖開始初始化8253(定時器0,方式3,BCD碼計數(shù),CLK0/26)初始化8251接收10個字節(jié)數(shù)據(jù)子程序?qū)⒔邮盏降?0個字節(jié)數(shù)據(jù)通過8251發(fā)送給微機初始化8251:開始允許接收和發(fā)送數(shù)據(jù)清錯誤標(biāo)志復(fù)位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ū):CS(8251)、C/DA3區(qū):CS1、A0C5區(qū):CLKB2區(qū):4MC5區(qū):RXD、TXDE7區(qū):RXD、TXD2、運行程序3、運行“串口助手(ComPort.EXE)”,設(shè)置串口(波特率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ù)目,重復(fù)實驗,觀察結(jié)果。七、演示程序.MODELTINY;使用8253的計數(shù)器0,外接2Mhz,經(jīng)26分頻后,送給8251,產(chǎn)生4800bpsCTL_ADDREQU0FF01H;控制字或狀態(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_8253PROCNEARMOVDX,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ù),清錯誤標(biāo)志OUTDX,ALCALLDLTIMERETINIT_8251ENDPReset_8251PROCNEARMOVDX,CTL_ADDRMOVAL,0OUTDX,AL;向控制口寫入"0"CALLDLTIME;延時,等待寫操作完成OUTDX,AL;向控制口寫入"0"CALLDLTIME;延時OUTDX,AL;向控制口寫入"0"CALLDLTIME;延時MOV AL,40H;向控制口寫入復(fù)位字40HOUTDX,ALCALLDLTIMERETReset_8251ENDP;接受一組數(shù)據(jù),CX-接受數(shù)目Receive_GroupPROCNEARLEADI,Receive_BufferReceive_Group1: CALLReceive_ByteSTOSBLOOPReceive_Group1RETReceive_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,CTL_ADDR;讀入狀態(tài)Sendbyte1:INAL,DXTESTAL,1JZSendbyte1;允許數(shù)據(jù)發(fā)送嗎?POPAX;發(fā)送MOVDX,DATA_ADDROUTDX,ALRETSendbyteENDP;延時DLTIMEPROCNEARMOVCX,10LOOP$RETDLTIMEENDPENDSTART八、實驗擴展及思考請讀者思考,如何修改程序?qū)崿F(xiàn)8251的自發(fā)自收功能?實驗八 步進電機控制一、實驗?zāi)康呐c要求1、了解步進電機的基本原理,掌握步進電機的轉(zhuǎn)動編程方法2、了解影響電機轉(zhuǎn)速的因素有那些二、實驗設(shè)備STAR系列實驗儀一套、PC機一臺。三、實驗內(nèi)容編寫程序:使用G5區(qū)的鍵盤控制步進電機的正反轉(zhuǎn)、調(diào)節(jié)轉(zhuǎn)速,連續(xù)轉(zhuǎn)動或轉(zhuǎn)動指定步數(shù);將相應(yīng)的數(shù)據(jù)顯示在G5區(qū)的數(shù)碼管上。四、控制原理步進電機的驅(qū)動原理是通過它每相線圈的電流的順序切換來使電機作步進式旋轉(zhuǎn),驅(qū)動電路由脈沖來控制,所以調(diào)節(jié)脈沖的頻率便可改變步進電機的轉(zhuǎn)速,微控制器最適合控制步進電機。另外,由于電機的轉(zhuǎn)動慣量的存在,其轉(zhuǎn)動速度還受驅(qū)動功率的影響,當(dāng)脈沖的頻率大于某一值(本實驗為f.>100hz)時,電機便不再轉(zhuǎn)動。實驗電機共有四個相位(A,B,C,D),按轉(zhuǎn)動步驟可分單4拍(A->B->C->D->A),雙4拍(AB->BC->CD->DA->AB)和單雙8拍(A->AB->B->BC->C->CD->D->DA->A).五、程序框圖NYNYNNNN0->需要刷新顯示標(biāo)志1->步進電機未轉(zhuǎn)動過標(biāo)志1->轉(zhuǎn)動方向標(biāo)志(1:表示順時針方向)33H->下次送給步進電機值5->步進電機轉(zhuǎn)速初始化8255(PC口輸出)初始化8253(計數(shù)器T0設(shè)置在模式2狀態(tài),BCD碼計數(shù),CLK0/210)初始化8259(允許8253中斷)初始化8253中斷向量初始化顯示緩沖區(qū):(數(shù)碼管第8位:0,順時針方向;5、7位消隱;6位:轉(zhuǎn)速;1、2、3、4位:0,表示連續(xù)轉(zhuǎn)動,其他值表示需要轉(zhuǎn)動的步數(shù))調(diào)用顯示子程序有鍵按下需要刷新顯示標(biāo)志=10->需要刷新顯示標(biāo)志調(diào)用步數(shù)調(diào)整子程序關(guān)中斷(終止步進電機轉(zhuǎn)動)數(shù)碼管的1、2、3位->2、3、4位鍵值送給數(shù)碼管的第一位調(diào)用改變轉(zhuǎn)向子程序鍵值>9鍵值=0AH調(diào)用增速子程序調(diào)用減速子程序調(diào)用啟動步進電機子程序Y鍵值=0BH鍵值=0CH鍵值=0DH開始YYY改變方向子程序:YYNNY開始轉(zhuǎn)動方向標(biāo)志=091H->下次送給步進電機值下次送給步進電機值循環(huán)右移二次1->轉(zhuǎn)動方向標(biāo)志0->送給數(shù)碼管的第7位步進電機未轉(zhuǎn)動過標(biāo)志33H->下次送給步進電機值下次送給步進電機值循環(huán)左移二次0->轉(zhuǎn)動方向標(biāo)志1->送給數(shù)碼管的第7位步進電機未轉(zhuǎn)動過標(biāo)志返回啟動步進電機子程序:YNY開始0->步進電機未轉(zhuǎn)動過標(biāo)志取轉(zhuǎn)動步數(shù)取轉(zhuǎn)速對應(yīng)的延時值(轉(zhuǎn)速延時)初始轉(zhuǎn)速延時1=初始轉(zhuǎn)速延時轉(zhuǎn)速延時< 50初始轉(zhuǎn)速延時=50返回開中斷初始轉(zhuǎn)速延時=轉(zhuǎn)速延時增速子程序:YN開始轉(zhuǎn)速=11轉(zhuǎn)速+1轉(zhuǎn)速送給數(shù)碼管第5位返回減速子程序:NY開始轉(zhuǎn)速=0轉(zhuǎn)速-1轉(zhuǎn)速送給數(shù)碼管第5位返回定時中斷程序:NNYNNNYYNY初始轉(zhuǎn)速延時1=轉(zhuǎn)速延時初始轉(zhuǎn)速延時 -1=0時初始轉(zhuǎn)速延時1 - 1初始轉(zhuǎn)速延時=初始轉(zhuǎn)速延時11-1轉(zhuǎn)動方向標(biāo)志=0時下次送給步進電機值循環(huán)右移一次1-1轉(zhuǎn)動步數(shù)=0時1->需要刷新顯示標(biāo)志轉(zhuǎn)動步數(shù)減一1-1轉(zhuǎn)動步數(shù)=0時關(guān)中斷清中斷標(biāo)志開始下次送給步進電機值循環(huán)左移一次1-1返回下次送給步進電機值->8255的PC口(控制步進電機轉(zhuǎn)動一步)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、A0、A12、調(diào)試程序,查看運行結(jié)果是否正確八、演示程序 .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;選擇哪一級速度StepDelayDB0;轉(zhuǎn)動一步后,延時常數(shù)StartStepDelayDB0;若選擇速度過快,延時由長到短,最終使用對應(yīng)延時常數(shù)StartStepDelay1 DB0;StartStepDelaybFirstDB0;有沒有轉(zhuǎn)動過步進電機bClockwiseDB0 ; =1 順時針方向 =0 逆時針方向轉(zhuǎn)動bNeedDisplayDB0;已轉(zhuǎn)動一步,需要顯示新步數(shù)StepCountDW0;需要轉(zhuǎn)動的步數(shù)StepDelayTab:DB250,125,83,62,50,42,36,32,28,25,22,21.CODESTART:MOV AX,DATAMOVDS,AXMOVES,AXNOPMOVbFirst,1;有沒有轉(zhuǎn)動過步進電機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,8REPMOVSBLEASI,buffer1CALLDisplay8STAR3:CALLScan_KeyJBSTAR5CMPbNeedDisplay,0JZSTAR3MOVbNeedDisplay,0CALLStep_SUB_1JMPSTAR2STAR5:CLI;終止步進電機轉(zhuǎn)動CMPAL,10JNBSTAR1MOVAH,buffer+2MOVbuffer+3,AHMOVAH,buffer+1MOVbuffer+2,AHMOVAH,bufferMOVbuffer+1,AHMOVbuffer,ALJMPSTAR2STAR1:CMPAL,14JNBSTAR3LEASI,DriverTabSUBAL,10SHLAL,1XORAH,AHMOVBX,AXJMPCS:SI+BXDriverTab:DWDirection;轉(zhuǎn)動方向DWSpeed_up;提高轉(zhuǎn)速DWSpeed_Down;降低轉(zhuǎn)速DWExec ;步進電機根據(jù)方向、轉(zhuǎn)速、步數(shù)開始轉(zhuǎn)動Direction:CMPbClockwise,0JZClockwiseMOVbClockwise,0MOVbuffer+7,1AntiClockwise:CMPbFirst,0JZAntiClockwise1MOVStepControl,91HJMPDirection1AntiClockwise1:MOVAL,StepControlRORAL,2MOVStepControl,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:MOVAL,SpeedNoCMPAL,0JZSpeed_Down1DECALMOVSpeedNo,ALMOVbuffer+5,ALSpeed_Down1:JMPSTAR2Exec:MOVbFirst,0CALLTakeStepCountLEABX,StepDelayTabMOVAL,SpeedNoXLATMOVStepDelay,ALCMPAL,50JNBExec1MOVAL,50Exec1:MOVStartStepDelay,ALMOVStartStepDelay1,ALSTIJMPSTAR2TIMER0:PUSHAXPUSHDXDECStartStepDelayJNZTIMER0_1MOVAL,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 ;小寫部分不允許使用單步、單步進入命令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;轉(zhuǎn)動步數(shù)送入StepCountMOVBX,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設(shè)置在模式2狀態(tài),BCD碼計數(shù)MOVDX,T0_8253MOVAL,10HOUTDX,ALMOVAL,02HOUTDX,AL;CLK0/210RETInit8253ENDPInit8259PROCNEARMOVDX,IO8259_0MOVAL,13HOUTDX,ALMOVDX,IO8259_1MOVAL,08HOUTDX,ALMOVAL,09HOUTDX,ALMOVAL,0FEHOUTDX,ALRETInit8259ENDPWriIntverPROCNEARPUSHESMOVAX,0MOVES,AXMOVDI,20HLEAAX,TIMER0STOSWMOVAX,CSSTOSWPOPESRETWriIntverENDPENDSTART九、實驗擴展及思考1、怎樣改變電機的轉(zhuǎn)速?2、通過實驗找出電機轉(zhuǎn)速的上限,如何能進一步提高最大轉(zhuǎn)速?3、怎樣能使電機反轉(zhuǎn)?附錄一 匯編語言的存儲模型模型說明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模型相同F(xiàn)LAT(平展)僅限于MASM6.X版本。FLAT模型使用一個512KB的段來存儲所有的代碼和數(shù)據(jù),應(yīng)注意的是該模型主要用于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

注意事項

本文(微機原理及接口技術(shù) 實驗指導(dǎo) 加了注釋)為本站會員(努力****83)主動上傳,裝配圖網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對上載內(nèi)容本身不做任何修改或編輯。 若此文所含內(nèi)容侵犯了您的版權(quán)或隱私,請立即通知裝配圖網(wǎng)(點擊聯(lián)系客服),我們立即給予刪除!

溫馨提示:如果因為網(wǎng)速或其他原因下載失敗請重新下載,重復(fù)下載不扣分。




關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

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

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


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