




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第5章匯編語言程序設計教學目標及要求:1了解單片機匯編語言的標準2熟悉單片機的順序、循環和分支程序設計方法主要內容:1順序與循環程序設計2分支程序設計3查表程序設計4子程序設計5綜合編程舉例教學重點和難點:熟悉單片機循環和分支程序設計,掌握單片機各種查表程序的設計。5.1.2匯編語言的標準一、匯編語言源程序的格式(標號:)操作碼操作數,操作數(;注釋)HF_CON00:MOVA,#30H;30H
A
二、匯編語言偽指令(1)ORG(origin)
ORG1000HMOVA,
#30H
1000H74H1001H30H二、匯編語言偽指令(2)END整個程序結束例如:MOV30H,AENDMOV40H,A二、匯編語言偽指令(3)EQU(equate)等值偽指令,用在整個程序的最前面,定義變量或常數.BCD_DATA0EQU30HBCD_DATA1EQU31HASCII_VALUEEQU32HHOUR_MAXEQU23二、匯編語言偽指令(3)EQU(equate)MOVA,BCD_DATA0MOVASCII_VALUE,ACJNEA,#HOUR_MAX,HF_CON0二、匯編語言偽指令(4)DB(definebyte)(5)DW定義數據常數,用于建表DISP_TAB:DB78HDB00001100BDB‘A’MOVDPTR,#DISP_TABMOVA,#2MOVCA,@A+DPTR二、匯編語言偽指令(6)BIT象EQU一樣,只是定義的是位地址例如:ERR_FLAGBIT00HDISP_FLAGBIT01HP0.0BIT?程序的整體格式:ASCII_VALEQU32HORG0000HLJMPINIT_STARTORG0030HINIT_START:;………;-----------------------------------------------------MAIN_LOOP: LCALLSUB_PROGRAM LJMPMAIN_LOOP;------------------------------------------------------;INPUT:WR0;OUTPUT:WR2;FUN:Addthreebytestothreebytes;-----------------------------------SUB_PROGRAM: RET;--------------------------------- END
5.2.1順序程序設計例1:把30H單元中壓縮兩個BCD碼拆開成ASCII碼,存入40H,41H單元。BCD_DATAEQU30HASC_DATA0EQU40HASC_DATA1EQU41H;----------------------------------;INPUT:BCD_DATA;OUTPUT:ASC_DATA0/1;FUN:changebcdcodetoascii;----------------------------BCD_TO_ASC:RET例1:把30H單元中壓縮兩個BCD碼拆開成ASCII碼,存入40H,41H單元。563635例1:把30H單元中壓縮兩個BCD碼拆開成ASCII碼,存入40H,41H單元。5630063665300535565.2.1順序程序設計例2:求一個16位二進制負數的補碼,設此16位二進制存放在20H,21H中,求補后送存30H,31H。COMP_DATA0EQU20HCOMP_DATA1EQU21HRESULT0EQU30HRESULT1EQU31H;----------------------------------;INPUT:BU_DATA0/1;OUTPUT:RESULT0/1;FUN:getcomplement;----------------------------CALCULATE_COMP_CODE:RET負數補碼方法:去掉負號,取反加1
1111000001010101011100000101010110001111101010101000111110101011負數補碼方法:去掉負號,取反加1
11110000000000000111000000000000100011111111111110010000000000005.2.2循環程序設計例4:80C51單片機使用的晶振為6MHz,要求設計一個軟件延時程序,延時時間為10ms.;----------------------------------;INPUT:NO;OUTPUT:NO;FUN:Delay10ms;R0/2;----------------------------DELAY_10MS:RET計算循環時間:1T=2usDELAY_10MS:MOVR2,#XXDELAY_LOOP0:DJNZR2,DELAY_LOOP0RET;2T(LCALL);1T;;2T×(XX);2TT(sum)=2T+1T+2T(XX)+2TTmax=2T+1T+2T×256+2T=517×2us=1034usDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;2T×(YY);(1T+2T×(YY)+2T)×XX;2TTs=2T+1T+(1T+2T×(YY)+2T)×XX+2TTs=2T+1T+(1T+2T×(YY)+2T)×XX+2T10×1000=(5+(3+2Y)×X)×2解:(3+2Y)X=4995=5×9×111X=45,Y=54DELAY_10MS:MOVR2,#45DELAY_LOOP1:MOVR0,#54DELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RETDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:NOPNOPDJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;4T×(YY);;;(1T+4T×(YY)+2T)×XX;2TDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0NOPNOPDJNZR2,DELAY_LOOP1RET;2T(LCALL);1T;;1T;;2T×(YY);;;(1T+2T×(YY)+4T)×XX;2TDELAY_10MS:MOVR2,#XXDELAY_LOOP1:MOVR0,#YYDELAY_LOOP0:DJNZR0,DELAY_LOOP0DJNZR2,DELAY_LOOP1NOPNOPRET;2T(LCALL);1T;;1T;;2T×(YY);(1T+2T×(YY)+2T)×XX;1T;1T;2T5.2.2循環程序設計例5:用P1口作為數據讀入口,為了讀取穩定的值,要求讀8次后取平均。;----------------------------------;INPUT:NO;OUTPUT:R1;VAR:R0/1/2;FUN:getaverageofreadingP1eighttimes.;----------------------------AVERAGE_OF_P1:RET5.2.2循環程序設計例5:將20H單元內的兩個BCD數相乘,相乘的結果要求仍為BCD數,乘積存入21H單元。;----------------------------------;INPUT:BCD;OUTPUT:BCD_RESULT;VAR:;FUN:BCD×BCDBCD;----------------------------MUL_BCD:RET750705×0707070707+5次5.3分支程序設計
5.3.2無條件/條件轉移程序例1:設5AH單元中有一變量X,請編寫計算下述函數式,結果存入5BH單元.X2–1;X<10Y=X2+8;10≦X≦1541;X>155.3分支程序設計
5.3.3散轉程序設計1、采用轉移指令表2、采用地址偏移量表3、采用轉向地址表例2根據R7的內容,轉向各個操作程序R7=0,轉入OPR0R7=1,轉入OPR1....R7=n,轉入OPRnMOVDPTR,#JPTAB1MOVA,R7ADDA,R7JNCNOADINCDPHNOAD:JMP@A+DPTRJPTAB1:AJMPOPR0AJMPOPR1....AJMPOPRn5.4查表程序設計5.4.2規那么變量的查表程序設計例1:設計一個將十六進制數轉換成ASCII碼的子程序.設十六進制數存放在R0中的低4位,要求將轉換后的ASCII碼送回R0中.MOVA,R0ANLA,#0FHADDA,#02HMOVCA,@A+PCMOVR0,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46HMOVDPTR,#TABMOVA,R0ANLA,#0FHMOVCA,@A+DPTRMOVR0,ARETTAB:DB30H,31H,32H,33H,34H,35H,36H,37HDB38H,39H,41H,42H,43H,44H,45H,46H5.4查表程序設計5.4.2非規那么變量的查表程序設計例3:Y=f〔X〕X0123H0234H085AH……0AC4HY34A7H5678HAC23H……E345H設子程序中,X值存放在X_H和X_L單元中,一旦找到X的存放地址,相應的Y值就在其后的兩個單元中.所查到的Y值放到Y_H和Y_L中.TAB:DB01H,23H
DB34H,0A7H
DB02H,34HDB56H,78HDB08H,5AHDB0ACH,23HDB0AH,0C4HDB0E3H,045H
X:0123HY:34A7H
X_H:08HX_L:5AHY_H:0ACHY_L:23HMOVCA,@A+DPTRMOVY_H,AINCDPTRMOVCA,@A+DPTRMOVY_L,ARETNO_SAME1:INCDPTRNO_SAME2:INCDPTRINCDPTRINCDPTRLJMPLOOP
MOVDPTR,#TABLOOP:
CLRAMOVCA,@A+DPTRCJNEA,X_H,NO_SAME1INCDPTRMOVCA,@A+DPTRCJNEA,X_L,NO_SAME2INCDPTRMOVDPTR,#TABLP:CLRAMOVCA,@A+DPTRCJNEA,X_H,LP1INCDPTRMOVCA,@A+DPTRCJNEA,X_L,LP2INCDPTRMOVCA,@A+DPTRMOVY_H,AINCDPTRMOVCA,@A+DPTRMOVY_L,ARETLP1:INCDPTRLP2:INCDPTRINCDPTRINCDPTRLJMPLPMOVA,END_H
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 給媽媽出數學試卷
- 2025年4月新疆醫科大學第六附屬醫院高層次人才引進12人筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2025年吉林松原市長嶺縣衛健系統事業單位專項招聘大學生鄉村醫生2人筆試歷年專業考點(難、易錯點)附帶答案詳解
- 2025至2030代理記賬行業市場深度研究與戰略咨詢分析報告
- 2025至2030創傷外科用藥行業市場深度研究與戰略咨詢分析報告
- 愛心籌款 傳遞希望主題班會課件
- 關于小學升初中數學試卷
- 肥城三模數學試卷
- 化纖漿粕的復合材料應用研究考核試卷
- 網球場圍網材質防蟲害性能研究考核試卷
- 15ZJ001 建筑構造用料做法
- 員工工資條模板
- VDA6.3過程審核檢查表(中英文版)6
- 新能源4兆瓦光伏施工方案設計
- 年產5萬噸趣味酥性餅干生產車間設計
- 鋼化爐作業指導書
- 吊頂工程施工培訓講義內容詳細
- RFJ013-2010 人民防空工程防化設計規范
- 柳州某醫院空氣源熱泵熱水系統設計案例
- 天門山污水處理廠二期擴建項目環境影響報告書
- 婦產科學 妊娠合并心臟病
評論
0/150
提交評論