微機(jī)原理與應(yīng)用第四章.ppt_第1頁
微機(jī)原理與應(yīng)用第四章.ppt_第2頁
微機(jī)原理與應(yīng)用第四章.ppt_第3頁
微機(jī)原理與應(yīng)用第四章.ppt_第4頁
微機(jī)原理與應(yīng)用第四章.ppt_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第四章 匯編語言程序設(shè)計(jì) 4-1 匯編語言程序設(shè)計(jì)基本概念 4-2 匯編語言程序的基本結(jié)構(gòu)形式,4-1 匯編語言程序設(shè)計(jì)基本概念 一、MCS-51指令操作數(shù)說明 1、語句格式 標(biāo)號(hào): 操作碼 操作數(shù)(目的操作數(shù),源操作數(shù)) ;注釋 2、操作數(shù) 對(duì)于立即數(shù) #data (1)立即數(shù)188,可表示為 #10111100B、#0BCH、#188 (2)MOV DPTR,# BLOCK;BLOCK為定義過的標(biāo)號(hào)地址 對(duì)于直接地址 direct (1)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),MOV A,30H (2)定義過的標(biāo)號(hào)地址,AGAIN:SJMP AGAIN (3)表達(dá)式,如SUM+2,其中SUM為定義過的標(biāo)號(hào)地址 (4) SFR寄存器名,如SP、DPH、DPL等,對(duì)于偏移量 rel (1)可以是數(shù)值、標(biāo)號(hào)地址、表達(dá)式 (2)使用特殊符號(hào)“”,它代表本條轉(zhuǎn)移指令所在的地址, 如LJMP (死循環(huán)) (3)實(shí)際編程時(shí),凡指令中用到地址(rel、 addr11 、addr16等)都可用標(biāo)號(hào)地址代替實(shí)際地址,而地址的運(yùn)算有匯編程序完成。 二、常用偽指令 匯編:將計(jì)算機(jī)不可直接識(shí)別的匯編語言源程序翻譯成機(jī)器語 言的過程。分為計(jì)算機(jī)匯編和人工匯編兩種。 匯編程序:具有完成匯編功能的程序。 目標(biāo)程序:匯編語言源程序經(jīng)過匯編得到的機(jī)器語言程序。 偽指令:提供匯編用控制信息的指令,只能被匯編程序所識(shí)別, 不是單片機(jī)的CPU可執(zhí)行的指令。,1、定位偽指令ORG(Origin) 格式: 標(biāo)號(hào): ORG m m:16位二進(jìn)制數(shù),代表地址。 功能:得到機(jī)器語言程序的起始地址。 2、定義字節(jié)偽指令DB(Define Byte) 格式:標(biāo)號(hào): DB X1,X2,Xn Xn:?jiǎn)巫止?jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以 括起來的字符串,數(shù)據(jù)符號(hào)。 功能:定義程序存儲(chǔ)器從標(biāo)號(hào)開始的連續(xù)單元,用來存放常 數(shù)、字符和表格。 3、定義字偽指令DW(Define Word) 格式:標(biāo)號(hào): DW Y1,Y2,Yn Yn:雙字節(jié)二進(jìn)制、十進(jìn)制、十六進(jìn)制數(shù),或以 括起來的 字符串,數(shù)據(jù)符號(hào)。 功能:同DB,不同的是為16位數(shù)據(jù)。,4、匯編結(jié)束命令END 格式:標(biāo)號(hào): END 功能:END是匯編語言源程序的匯編結(jié)束標(biāo)志,在它后面所 寫的指令均不予處理。 5、等值命令EQU 格式:字符名稱 EQU 數(shù)或匯編符號(hào) 功能:將一個(gè)數(shù)或特定的匯編符號(hào)賦予規(guī)定的字符名稱。先 定義后使用。,三、匯編語言程序的結(jié)構(gòu) 1、程序設(shè)計(jì)的基本步驟 一般步驟為: (1)分析題意,明確要求; (2)建立思路,確定算法; (3)編制框圖,繪出流程; (4)編寫程序,上機(jī)調(diào)試; 程序結(jié)構(gòu)有簡(jiǎn)單順序、分支、循環(huán)和子程序等 2、畫流程圖 畫流程圖是指用各種圖形、符號(hào)、指向線等來說明程序 設(shè)計(jì)的過程。國際通用的圖形和符號(hào)說明如下:,橢圓框:起止框,在程序的開始和結(jié)束時(shí)使用。 矩形框:處理框,表示要進(jìn)行的各種操作。 菱形框:判斷框,表示條件判斷,以決定程序的流向。 指向線:流程線,表示程序執(zhí)行的流向。 圓 圈:連接符,表示不同頁之間的流程連接。 各種幾何圖形符號(hào)如下圖所示。,4-2 匯編語言程序的基本結(jié)構(gòu)形式 一、簡(jiǎn)單程序的設(shè)計(jì) 例4-1 已知兩個(gè)壓縮BCD碼分別放在內(nèi)部RAM的31H30H和33H 32H等4個(gè)單元中,試編程求和,結(jié)果存入R4R3R2中。 分析:流程如圖:,程序如下: ORG 0000H LJMP MAIN ORG 0040H MAIN: MOV A,30H ADD A,32H DA A MOV R2,A MOV A,31H ADDC A,33H DA A MOV R3,A CLR A MOV ACC.0,C MOV R4,A HERE: SJMP HERE END,二、分支程序設(shè)計(jì) 1、單分支程序 單分支結(jié)構(gòu)程序使用轉(zhuǎn)移指令實(shí)現(xiàn),即根據(jù)條件對(duì)程序的執(zhí)行進(jìn)行判斷,滿足條件是轉(zhuǎn)移執(zhí)行,否則順序執(zhí)行。 在MCS-51指令系統(tǒng)中條件轉(zhuǎn)移指令有: (1)判A轉(zhuǎn)移指令JZ、JNZ; (2)判位轉(zhuǎn)移指令JB、JNB、JBC、JC、JNC; (3)比較轉(zhuǎn)移指令CJNE; (4)減1不為0轉(zhuǎn)移指令DJNZ;,例4-2 假定在外部RAM中有100H、101H和102H共3個(gè)連續(xù)單元,其中100H、101H單元中分別存放著兩個(gè)8位無符號(hào)數(shù),要求找出其中的大數(shù)并存入102H單元。 分析:兩個(gè)無符號(hào)數(shù)的大小比較可利用兩數(shù)相減是否有借位來判斷,流程圖和程序如下所示:,ORG 0000H LJMP START ORG 0040H START:CLR C MOV DPTR,#100H MOVX A, DPTR MOV R7, A INC DPTR MOVX A, DPTR SUBB A, R7 JC BIG1 MOVX A, DPTR SJMP BIG2 BIG1:XCH A, R7 BIG2:INC DPTR MOVX DPTR,A SJMP ,2、多分支程序 (1)嵌套分支結(jié)構(gòu) 例4-3 設(shè)變量X存放于30H單元,函數(shù)值Y存放31H單元。試按照式: 1 X0 Y= 0 X=0 的要求給Y賦值 -1 X0 分析:X是有符號(hào)數(shù),判斷符號(hào)位是0還是1可利用JB或JNB指令。 判斷X是否等于0則直接可以使用累加器A的判0指令。 流程、程序如下頁:,ORG 0000H LJMP START ORG 0040H START: MOV A,30H JZ OVER JNB ACC.7,LAB1 MOV A, #0FFH SJMP OVER LAB1: MOV A, #1 OVER: MOV 31H, A SJMP ,(2)多重分支結(jié)構(gòu) 利用MCS-51單片機(jī)的散轉(zhuǎn)指令JMP A+DPTR, 可方便地實(shí)現(xiàn)多重分支控制,因此,又稱為散轉(zhuǎn)程序。 假定多路分支的最大序號(hào)為n,則分支的結(jié)構(gòu)如圖所示。,三、循環(huán)程序設(shè)計(jì) 1、循環(huán)程序的結(jié)構(gòu) 循環(huán)程序包括以下四個(gè)部分: 置循環(huán)初值 循環(huán)體 循環(huán)控制變量修改 循環(huán)終止控制 常用于循環(huán)控制的指令有: DJNZ、CJNE、JC、JNC 等控制類指令。,2、單循環(huán) 終止循環(huán)控制采用計(jì)數(shù)的方法,即用一個(gè)寄存器作為循環(huán)次數(shù)計(jì)數(shù)器,每次循環(huán)后計(jì)數(shù)加1或減1,達(dá)到終止值后退出循環(huán)。 例4-4 計(jì)算50個(gè)8位二進(jìn)制數(shù)(單字節(jié))之和。 要求:50個(gè)數(shù)存放在30H開頭的內(nèi)部RAM中,和放在R6R7中。 分析:采用DJNZ循環(huán)體的流程框圖如下頁所示,在參考程序中,R0為數(shù)據(jù)地址指針,R2為減法循環(huán)計(jì)數(shù)器。,START:MOV R6, #0 MOV R7, #0 MOV R2, #50 MOV R0, #30H LOOP:MOV A, R7 ADD A, R0 MOV R7, A CLR A ADDC A, R6 MOV R6, A INC R0 DJNZ R2, LOOP SJMP $,3、多重循環(huán) 如果在一個(gè)循環(huán)程序中嵌套了其他的循環(huán)程序,稱為多重循環(huán)程序。在用軟件實(shí)現(xiàn)延時(shí)時(shí)顯得特別有用。 例4-5 設(shè)計(jì)1秒延時(shí)子程序,假設(shè)fosc=12MHz。 分析:軟件延時(shí)與指令的執(zhí)行時(shí)間關(guān)系密切,在使用12MHz晶振時(shí),一個(gè)機(jī)器周期的時(shí)間為1us,執(zhí)行一條DJNZ指令的時(shí)間為2us,我們可以采用三重循環(huán)的方法寫出延時(shí)1秒的子程序 流程、程序如下圖所示:,DELAY:MOV R7, #10; DL3: MOV R6, #200 ; DL2: MOV R5, #250 ; DL1: DJNZ R5, DL1 ; DJNZ R6, DL2 ; DJNZ R7, DL3 ; RET,4、按條件轉(zhuǎn)移控制的循環(huán) 例4-6 把內(nèi)部RAM從地址20H開始存放的數(shù)據(jù)傳送到以地址40H開始的存儲(chǔ)區(qū)中,數(shù)據(jù)塊長度未知,但已知數(shù)據(jù)塊的最后一個(gè)字節(jié)內(nèi)容為00H,而其它字節(jié)均不為0。并設(shè)源地址與目的地址空間不重復(fù)。 分析:可以利用判斷每次傳送的內(nèi)容是否為 0 這一條件來控制循環(huán)。也可用CJNE來比較與0是否相等設(shè)計(jì)。 利用判A轉(zhuǎn)移控制的循環(huán)流程圖如下圖所示。,START:MOV R0, #20H MOV R1, #40H LOOP:MOV A, R0 JZ ENT MOV R1,A INC R0 INC R1 SJMP LOOP ENT:RET,四、應(yīng)用控制流程設(shè)計(jì) 1、控制流程設(shè)計(jì)的基本方法 在單片機(jī)的控制系統(tǒng)中,為了實(shí)現(xiàn)系統(tǒng)的自動(dòng)控制,必須將控制現(xiàn)場(chǎng)的信息輸入到單片機(jī),經(jīng)過計(jì)算機(jī)的處理以后以被控對(duì)象能夠接受的形式輸出到執(zhí)行機(jī)構(gòu),實(shí)現(xiàn)對(duì)現(xiàn)場(chǎng)的控制。 例4-7 電機(jī)的簡(jiǎn)單起??刂?;其框圖如下頁圖 a 所示 1)分析:簡(jiǎn)單的電機(jī)起動(dòng)停止控制,其控制的示意圖及I/O分配如圖 b 所示。 輸入信號(hào):?jiǎn)?dòng)按鈕SB1、停止按鈕SB2 輸出信號(hào):繼電器KA,假定:按下按鈕,相應(yīng)的接口信號(hào)為低電平(P1.1=0)時(shí); 若:程序使 P1.3=1,即KA = 1; 則:電機(jī)啟動(dòng)。,2)按照上述的控制思路,流程圖如下圖所示。,ORG 1000H STR:MOV P1, #00000110B WT1:JB P1.1, WT1 ;啟動(dòng)? SETB P1.3 ;電機(jī)啟動(dòng) WT2:JB P1.2, WT2 ;停止? CLR P1.3 ;電機(jī)停止 SJMP WT1 END,2、應(yīng)用程序控制流程設(shè)計(jì) 例4-8 某機(jī)床動(dòng)力頭,其行程如圖(a)所示,,SQ1、SQ2為左、右行程開關(guān),要求: 1)每次按SB1啟動(dòng),工作3個(gè)來回后停止,等待下次啟 動(dòng) 2)每次按SB2按鈕,在完成當(dāng)前進(jìn)給后,停在初始 位SQ1處,等待下次啟動(dòng);,1 硬件原理圖,如圖(b)所示,其中: 輸入信號(hào):?jiǎn)?dòng)按鈕P1.0、停止P1.1、 左右行程開關(guān) P1.2、P1.3; 輸出信號(hào):前進(jìn)LED燈P1.7、后退 LED燈P1.6。,2 控制流程:如圖(c)。,3)匯編程序 MAIN: MOV R0, #00H MOV P1, #0FH WT1: JB P1.0,WT1 LOOP: SETB P1.7 WT2: JB P1.3,WT2 CLR P1.7 SETB P1.6 INC R0 W

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論