MCS-51基本程序結(jié)構(gòu)設(shè)計課件_第1頁
MCS-51基本程序結(jié)構(gòu)設(shè)計課件_第2頁
MCS-51基本程序結(jié)構(gòu)設(shè)計課件_第3頁
MCS-51基本程序結(jié)構(gòu)設(shè)計課件_第4頁
MCS-51基本程序結(jié)構(gòu)設(shè)計課件_第5頁
已閱讀5頁,還剩12頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、概 述1匯編語言程序設(shè)計的步驟(1)分析問題。 (2)確定算法。 (3)畫出程序流程圖。 (4)分配內(nèi)存單元。 (5)編寫匯編語言源程序。 (6)匯編語言程序的調(diào)試。 2022/10/101頁概 述1匯編語言程序設(shè)計的步驟(1)分析問題。 2022流程線端點符號處理符號判斷符號連接符號實現(xiàn)流程圖之間的連接程序的判斷功能程序的處理功能單元程序的起始和結(jié)束程序執(zhí)行順序流程2022/10/102頁流程線端點符號處理符號判斷符號連接符號實現(xiàn)流程圖之間的連接程基本結(jié)構(gòu)程序設(shè)計 ABC入口出口(a)順序結(jié)構(gòu)圖S1S2條件滿足?入口出口(b)分支結(jié)構(gòu)A條件滿足?修改條件出口入口(c)循環(huán)結(jié)構(gòu) 2022/10

2、/103頁基本結(jié)構(gòu)程序設(shè)計 ABC入口出口(a)順序結(jié)構(gòu)圖S1S2條件一、順序結(jié)構(gòu)程序設(shè)計及舉例例4-1 將片外數(shù)據(jù)存儲器中2040H的內(nèi)容拆成兩段,其高4位存入2041H單元的低4位,其低4位存入2042H單元的低4位。 開始(DPTR)2040H取數(shù)送A,R0分離高4位高、低4位交換(2041H)結(jié)果分離低4位(2042H)低4位結(jié)束START:MOV DPTR,#2040H ; MOVX A,DPTR ;取數(shù)送A MOV R0,A ;數(shù)據(jù)暫存于R0 SWAP A ;(A)的高、低4位互換 ANL A,#0FH ;分離出(A)的低4位 INC DPTR ; MOVX DPTR,A ;將分離

3、結(jié)果送2041H單元 MOV A,R0 ;重新取數(shù) ANL A,#0FH ;分離出(A)的低4位 INC DPTR ; MOVX DPTR,A ;將分離結(jié)果送2042H單元 END2022/10/104頁一、順序結(jié)構(gòu)程序設(shè)計及舉例開始(DPTR)2040H取數(shù)送例4-2 設(shè)數(shù)a存放在R1中,數(shù)b存放在R2中,計算 ,并將結(jié)果放入R4和R5中。開始Aa,BaABAAb,R4AAB,AACYR5A結(jié)束MOV A,R1 ;AaMOV B,A ;BaMUL AB ;計算CLR CSUBB A,R2;MOV R4,A ; 結(jié)果低8位送R4MOV A,B ; 高8位送ASUBB A,#00H ;MOV R

4、5,A ;END ;結(jié)束 低8位減b2022/10/105頁例4-2 設(shè)數(shù)a存放在R1中,數(shù)b存放在R2中,計算 分支結(jié)構(gòu)程序設(shè)計 在形成分支時,一般要有測試、轉(zhuǎn)向和標(biāo)識三個部分 ;測試:通過對程序狀態(tài)寄存器PSW中各位狀態(tài)的測試,或通過對指定的單元或指定的寄存器的某位或某些位或全部位的測試,判斷某條件是否成立,決定是否轉(zhuǎn)移,形成分支,MCS-51系列單片機(jī)指令系統(tǒng)中的條件轉(zhuǎn)移類指令均具有這種測試功能,可用它們來實現(xiàn)。轉(zhuǎn)向:根據(jù)測試結(jié)果決定程序的走向。在源程序中由轉(zhuǎn)移類指令完成,在流程圖中以菱形邏輯框表示走向。標(biāo)識:對每個程序分支,給出一個標(biāo)識,以標(biāo)明程序轉(zhuǎn)移的方向,一般將分支程序轉(zhuǎn)向的第一個

5、語句賦予一個標(biāo)號,作為此分支的標(biāo)識。2022/10/106頁分支結(jié)構(gòu)程序設(shè)計 在形成分支時,一般要有測求符號函數(shù),其中X在30H單元,結(jié)果y 放在31H單元 y=1,x00,x=0-1,x0?NN2022/10/107頁求符號函數(shù),其中X在30H單元,結(jié)果y 放在31H單元 ORG 1000HMOV A,30H;取x CJNE A,#00H,N2;比較x0,則轉(zhuǎn)N2MOV A,#00HAJMP L2;若x=0,置A=0,轉(zhuǎn)L2N2:JB ACC.7,M2;判x是否為負(fù)數(shù),是轉(zhuǎn)M2MOV A,#01H;判x不為負(fù)數(shù),A置為01HAJMP L2M2:MOV A,#81H;若x是負(fù)數(shù),置A為-1L2

6、:MOV 31H,A;A送結(jié)果單元END2022/10/108頁ORG 1000H2022/10/98頁設(shè)有兩個16位無符號數(shù)NA,NB分別存放在8031單片機(jī)內(nèi)部RAM的40H、41H及50H、51H單元中,當(dāng)NANB時,將內(nèi)部RAM的42H單元清0;否則,將該單元置成全1,試編制實現(xiàn)此功能的程序。YYNN開始 結(jié)果單元置大于標(biāo)志結(jié)束NALNBL?NAL=NBL?NAH=NBH?NAHNBH? 結(jié)果單元置非大于標(biāo)志YY2022/10/109頁設(shè)有兩個16位無符號數(shù)NA,NB分別存放在8031單片機(jī)內(nèi)部ORG 1000HSTART1:MOV A,50H;取NB高8位CJNE A,40H,SUB

7、1;判NA高8位=NB高8位?若不相等,則轉(zhuǎn)SUB1MOV A,51H;若高8位相等,則取NB低8位CJNE A,41H,SUB1;判NA低8位=NB低8位?若不相等,則轉(zhuǎn)SUB1SJMP SUB2;若NA=NB,則轉(zhuǎn)SUB2SUB1:JC SUB3;若NANB,則轉(zhuǎn)SUB3SUB2:MOV 42H,#0FFH;NANB,則置非大于標(biāo)志SJMP DONESUB3:MOV 42H,#00H;NANB,則置大于標(biāo)志DONE:RETEND2022/10/1010頁ORG 1000H2022/10/910頁NAHNBH?YNN開始將R0置成大于標(biāo)志結(jié)束NALNBL?NAL=NBL?NAH=NBH?將R

8、0置成非大于標(biāo)志將R0送結(jié)果單元NNYNYY2022/10/1011頁NAHNBH?YNN開始將R0置成大于標(biāo)志結(jié)束NALNBORG 1000HSTART2:MOV R0,#00H;R0置成大于標(biāo)志MOV A,50HCJNE A,40H,SUB1MOV A,51HCJNE A,41H,SUB1SJMP SUB2SUB1:JC SUB3SUB2:MOV R0,#0FFH;置R0為非大于標(biāo)志SUB3:MOV 42H,R0END2022/10/1012頁ORG 1000H2022/10/912頁例4-5 散轉(zhuǎn)程序某單片機(jī)應(yīng)用系統(tǒng)有16個鍵,經(jīng)鍵盤掃描程序得到某個鍵的鍵碼值(00H0FH)存放在R7之

9、中,16個鍵盤的鍵處理程序入口地址分別為KEY1、KEY2、KEY16。 EXAMP:MOV A,R7 ;(A)鍵碼ADD A,R7ADD A,R7 ;(A)(A)*3MOV DPTR,#TABJMP A+DPTR ;散轉(zhuǎn)TAB:LJMP KEY0 ;轉(zhuǎn)向第1個鍵的處理程序LJMP KEY1 ;轉(zhuǎn)向第2個鍵的處理程序LJMP KEY16 ;轉(zhuǎn)向第16個鍵的處理程序2022/10/1013頁例4-5 散轉(zhuǎn)程序EXAMP:MOV A,R7 循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體2022/10/1014頁循環(huán)結(jié)構(gòu)與循環(huán)結(jié)構(gòu)程序設(shè)計 循環(huán)初始狀態(tài)循環(huán)控制條件循環(huán)體循例4-6 編一段程序完成下列計算 ,設(shè)n=10,Xi順序存放在片內(nèi)RAM從50H開始的連續(xù)單元中,所求的和放在R3及R4中。 開始in,Y0YXi+Yii1結(jié)束i=0?開始i0,Y0YXi+Yii+1結(jié)束i=n?2022/10/1015頁例4-6 編一段程序完成下列計算 NSUN:MOV R2,#10;數(shù)組長度送R2MOV R3,#0;(R3)清零MOV R4,#0;(R4)清零MOV R0,#50H;數(shù)據(jù)塊首址送R0LOOP: MOV A,R4 ADD A,R0MOV

溫馨提示

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

評論

0/150

提交評論