分支程序設(shè)計_第1頁
分支程序設(shè)計_第2頁
分支程序設(shè)計_第3頁
分支程序設(shè)計_第4頁
分支程序設(shè)計_第5頁
已閱讀5頁,還剩3頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、分支程序設(shè)計       在很多實際問題中,都需要根據(jù)不同的情況進行不同的處理。這種思想體現(xiàn)在程序設(shè)計中,就是根據(jù)不同條件而轉(zhuǎn)到不同的程序段去執(zhí)行,這就構(gòu)成了分支程序。分支程序的結(jié)構(gòu)有兩種,如圖4.2所示。圖4.2  分支程序結(jié)構(gòu) 圖4.2(a) 結(jié)構(gòu)使用條件轉(zhuǎn)移指令來實現(xiàn)分支,當給出的條件成立時,執(zhí)行程序段,否則執(zhí)行程序段。圖4.2 (b)   結(jié)構(gòu)使用散轉(zhuǎn)指令JMP來實現(xiàn)多分支轉(zhuǎn)移,它首先將分支程序按序號的值來實現(xiàn)分支轉(zhuǎn)移。分支程序的特點是改變程序的執(zhí)行順序,跳過一些指令,去執(zhí)行另外一些指令。應(yīng)注意:

2、對每一個分支都要單獨編寫一段程序,每一分支的開始地址賦給一個標號。在編寫分支程序時,關(guān)鍵是如何判斷分支的條件。在MCS-51系列單片機中可以直接用來判斷分支條件的指令并不多,只有累加器為零(或不為零)、比較條件轉(zhuǎn)移指令CJNE等,MCS-51單片機還提供了位條件轉(zhuǎn)移指令,如JC,JB等。把這些指令結(jié)合在一起使用,就可以完成各種各樣的條件判斷。分支程序設(shè)計的技巧,就在于正確而巧妙的使用這些指令。 【例4-5】設(shè)補碼X放在內(nèi)部RAM30H單元中,函數(shù)Y與X有如下的關(guān)系式:            &#

3、160;        試編寫程序,根據(jù)X的值求出Y,并放回原單元。解   取出X后先做取值范圍的判斷,用累加器A狀態(tài)轉(zhuǎn)移指令判斷X是否為0,用位狀態(tài)轉(zhuǎn)移指令判斷X是大于0還是小于0。程序流程圖如圖4.3所示。程序如下: MOV   A,30H JZ      ZER0 JNB    ACC.7,PLUS ADD   A,#5 MOV   30H,A PLUS: &#

4、160; SJMP   $ ZERO:   MOV   30H,#20H SJMP   $ END【例4-6】內(nèi)部RAM40H和41H單元中各有一無符號數(shù),比較其大小,將大數(shù)存放于內(nèi)部RAM60H單元,小數(shù)存放于內(nèi)部RAM61H單元,如兩數(shù)相等,則分別送往這2個單元。解  用比較不等轉(zhuǎn)移指令CJNE比較力兩個無符號書,先確定它們是否相等,若不相等時再根據(jù)借位標志確定這兩個無符號書的大小。程序框圖如圖4.4所示。    程序如下:     

5、;                       MOV          A, 40H                       

6、;                   MOV          61H, 41H                          

7、60;               CJNE          A, 41H, LOOP                              

8、           AJMP          AGEQ                                LOOP:   &

9、#160;        JNC          AGEQ          ;A(41H)則無借位                         

10、0;     XCH          A, 61H          ;A(41H)有借位                     AGEQ:        

11、    MOV          60H, A          ;A與(61H)交換                               SJMP &

12、#160;                                                 END      &#

13、160;                             【例4-7】某溫度控制系統(tǒng),采集的溫度值(Ta)放在累加器A中。此外,在內(nèi)部RAM54H單元存放控制溫度下限制(T54),在55H單元存放控制溫度上限制(T55)。若Ta >T55,程序轉(zhuǎn)向JW(降溫處理程);若Ta<T54,則程序轉(zhuǎn)向SW(升溫處理程序);T55TaT54,則程序

14、轉(zhuǎn)向FH(返回主程序)。 程序如下:                        CJNE          A,55H,LOOP1          ;TaT55,轉(zhuǎn)向LOOPl     

15、;                        AJMP          FH          ;Ta=T55,返回          

16、;        LOOPl:          JNC          JW          ;若(CY)=0,表明Ta>T55,轉(zhuǎn)降溫處理程序            

17、                 CJNE          A,54H,LOOP2          ;TaT54,轉(zhuǎn)向LOOP2               

18、;              AJMP          FH          ;Ta=54,返回                  LOOP2:  

19、0;       JC          SW          ;若(CY)=1,表明Ta<T54,轉(zhuǎn)升溫處理程序                  FH:     

20、60;    RET                    ;T55TaT54,返回主程序             【例4-8】將ASCII碼制轉(zhuǎn)換為十六進制數(shù)。如果不是十六進制數(shù)得ASCII碼,用戶標志位置1。解:由ASCII碼表知,30H39H為09的ASCII碼,41H46H為AF的ASC, #data , rel流程圖如圖4.6所時,但這樣比較次數(shù)太多,當N較大時,執(zhí)行速度就較慢。我們可以用變址尋址的轉(zhuǎn)移指令JMPA+DPTR使問題得到解決。首先安排存放一個轉(zhuǎn)移分支入口的地址表,把入口地址表的首地址送到DPTR,再把R3的內(nèi)容送累加器A?,F(xiàn)以4個分支為例寫出程序。假設(shè)4個分支的不同功能分別是給不同的位置。程序如下:  MOV     A ,R3      MOV

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
  • 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論