MCS51系列單片機程序設計ppt課件_第1頁
MCS51系列單片機程序設計ppt課件_第2頁
MCS51系列單片機程序設計ppt課件_第3頁
MCS51系列單片機程序設計ppt課件_第4頁
MCS51系列單片機程序設計ppt課件_第5頁
已閱讀5頁,還剩55頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

1、MCS-51系列單片機的程序設計第四章 交叉匯編語言交叉匯編語言MASM51MASM51 單片機匯編語言程序設計方法及技巧單片機匯編語言程序設計方法及技巧 了解交叉匯編語言了解交叉匯編語言MASM51MASM51的特點的特點掌握順序程序、分支程序、循環(huán)程序、查表程序、子程序的基本設計方法和技巧掌握順序程序、分支程序、循環(huán)程序、查表程序、子程序的基本設計方法和技巧掌握匯編語言程序設計的一般步驟掌握匯編語言程序設計的一般步驟 匯編語言源程序是由匯編指令和偽指令組成的文件,其擴展名為“ASM”。 源程序編輯完后只有轉換為機器碼表示的目標程序計算機才能執(zhí)行,這個轉換的過程稱為匯編。 例4.1 請用MC

2、S-51匯編指令編寫程序,將片內(nèi)RAM104、105單元中的內(nèi)容分別傳送到片外數(shù)據(jù)存儲器 104H、105H單元中。分析:應注意片內(nèi)和片外的尋址指令不同分析:應注意片內(nèi)和片外的尋址指令不同YN 順序執(zhí)行條件滿足?轉向目標程序圖4.1 簡單分支程序轉移 已知片內(nèi)RAM FIRST 開始的兩個單元中各存放有一個8位無符號二進制數(shù),要求找出其中的大數(shù)并存入片內(nèi)RAM的SECOND單元中。K=n K=n-1 K=2 轉向分支n-1 轉向分支2 轉向分支1 轉向分支n K=? K=1 可通過間接轉移指令JMP A+DPTR和無條件轉移指令中的AJMP或LJMP指令來實現(xiàn)多路分支轉移: 已知R0中存放有一

3、數(shù)字關鍵碼,要求根據(jù)碼值的不同,分別轉向對應的碼值程序段去執(zhí)行。即當R0=K時,便執(zhí)行CODEK程序。 AJMP指令的轉移范圍不超出所在的2KB字節(jié)區(qū)間,如各小段程序較長,在2KB字節(jié)內(nèi)無法全部容納,上面的程序應該怎樣修改? 設MCS-51單片機內(nèi)部RAM從40H開始的連續(xù)16個單元中,每個單元中分別存放有單字節(jié)的帶符號數(shù)。要求將其中的正數(shù)存入50H開始的連續(xù)單元中,負數(shù)存入60H開始的連續(xù)單元中,并將正數(shù)、負數(shù)和零的個數(shù)分別存入70H、71H、72H單元中。例例 4.4 分析 查表就是把事先計算或測得的數(shù)據(jù)按照一定的順序編制成表格存放在存儲器中,然后根據(jù)輸入的數(shù)據(jù),從表格中查出所需的結果。

4、例 4.6 LOOP: MOVC A ,A+DPTR ;查表 MOV R0 , A ;存結果 INC R0 ;調(diào)整存放結果地址指針 INC DPTR ;修正表地址指針 MOV A , R2 ;恢復n*3 DJNZ R1 , LOOP ;未查完,繼續(xù) SJMP $ TAB: DB 01H , 00H , 00H , 01H , 00H , 00H DB 02H , 00H , 00H , 06H , 00H , 00H DB 24H , 00H , 00H , 20H , 01H , 00H DB 20H , 07H , 00H , 40H , 50H , 00H DB 20H , 03H ,

5、04H , 80H , 28H , 36H二進制數(shù)與二進制數(shù)與ASCII碼的對應關系:碼的對應關系: 四位二進制四位二進制 ASCII 0000 (0) 30H 0001 (1) 31H 1001 (9) 39H 1010 (A) 41H 1111 (F) 46H ORG 1000BTOASC: PUSH A PUSH PSW MOV A , R0 ANL A , #0FH ;取四位二進制數(shù) MOV R0 , A ;暫存 CLR C SUBB A , #0AH ;與10比較 MOV A , R0 ;恢復四位二進制數(shù) JC LOOP ;小于10轉LOOP ADD A , #07H ;大于10先加

6、07HLOOP: ADD A , #30H ;加30H MOV R0 , A ;存結果 POP PSW POP A RET 已知片內(nèi)BLOCKB單元開始處有一數(shù)據(jù)塊,塊長在R2中,在此數(shù)據(jù)塊的每個單元中存放有一個未組合的BCD碼,要求將每個BCD碼轉換為ASCAII碼,并存放在片內(nèi)BLOCKA開始的連續(xù)單元中。 主程序: ORG 1000H MOV R2 ,#L MOV R0 ,#BLOCKB ;設BCD碼的地址指針 MOV R1 ,#BLOCKA ;設ASCAII的地址指針LOOP:ACALL TRANS ;調(diào)用TRANS子程序 DJNZ R2 ,LOOP ;未轉換完,繼續(xù) SJMP $ 設

7、片內(nèi)40H單元中有一組合的BCD碼,要求將其轉換為二進制數(shù)存回原處。分析:1組合的BCD碼為兩位十進制數(shù),需將十位 數(shù)和個位數(shù)分開處理。2十位數(shù)轉換時只要累加0AH就能將其轉換 為相應的二進制數(shù),然后再將個位數(shù)直接 加到轉換后的十位數(shù)上就可完成整個數(shù)的 轉換。 加加10子程序子程序: 已知8位二進制數(shù)在R0中,要求將其轉換為BCD碼并存放在片內(nèi)30H、31H單元中。 已知片內(nèi)RAM ADR1開始的單元依次從低位到高位存放有L個字節(jié)的無符號數(shù),片外RAM ADR2開始的單元也依次從低位到高位存放有L個字節(jié)的無符號數(shù)。請編一個加法程序,將他們的和存放在ADR1開始的連續(xù)單元中。R0: 片內(nèi)片內(nèi)RA

8、M地址指針,初值為地址指針,初值為ADR1DPTR:片外片外RAM地址指針,初值為地址指針,初值為ADR2每完成一個字節(jié)的加法后,每完成一個字節(jié)的加法后,R0、DPTR各自加各自加1,調(diào)整為加數(shù)、被加數(shù)下一待加字節(jié)的地址。調(diào)整為加數(shù)、被加數(shù)下一待加字節(jié)的地址。R2:計數(shù)器。存放待加的字節(jié)數(shù),每完成一個字:計數(shù)器。存放待加的字節(jié)數(shù),每完成一個字節(jié)的加法后,內(nèi)容減節(jié)的加法后,內(nèi)容減1,當,當R2=0時,程序結束。時,程序結束。開場開場#ADR1(R0)#ADR2(DPRTR)#L(R2)C清零(R0)+(DPTR)(A) (A) (R0)(R0)+1 (R0)(R1)+1 (R1)(R2)-1 (

9、R2)(R2) = 0?YN出口出口初始化初始化設初值設初值循環(huán)體循環(huán)體工作部分工作部分修正修正循環(huán)體循環(huán)體參數(shù)參數(shù)判別判別 a b c dbdH bdLadH adLbcH bcLacH acLR0+3 R0+2 R0+1 R0 b da db ca c積積+R7 R6R5 R4 ORG 1000HMUL1: MOV 40H ,#00H ;統(tǒng)計統(tǒng)計bdH+adL+bcL ;的進位單元清的進位單元清0 MOV 41H ,#00H ;統(tǒng)計統(tǒng)計adH+bcH+acL ;的進位單元清的進位單元清0 MOV R0 ,#50H ;積的首地址送積的首地址送R0中中 MOV A ,R6 ;b送送A MOV

10、B ,R4 ;d送送B MUL AB ;bd MOV R0 , A ;bdL送送50H單元中單元中 MOV R1 , B ;bdH送送R1中中R1R3R1R2 MOV R1 , B ;bcH存R1中 MOV A , R7 ;a送A MOV B , R5 ;c送B MUL AB ;ac ADD A , 40H ;acL加低位進位 JNC NEXT3 ;無進位轉NEXT3 INC 41H ;統(tǒng)計進位NEXT3: ADD A , R1 ;acL+bcH JNC NEXT4 ;無進位轉NEXT4 INC 41H ;統(tǒng)計acL+bcH進位NEXT4: ADD A , R3 ;acL+bcH+adH INC R0 MOV R0 , A ;存acL+bcH+adH的結 果于52H單元中 MOV A , B ADDC A , 41H ;acH加低位進位 INC R0 MOV R0 , A ;積最高位存53H單元中 RET R1R3 定時或延時方法:定時或延時方法:不需另添硬件,且變化靈活。軟件延時:利用計算機執(zhí)行程序耗用的軟件延時:利用計算機執(zhí)行程序耗用的時間來實現(xiàn)延時,又稱時間來實現(xiàn)延時,又稱“延時程

溫馨提示

  • 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. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論