8051的程式問題?

org 0

sw11: jb p3.0,sw12

call delay

jb p3.0,sw11

setb p2.0

sw12: jnb p3.0,$

call delay

jnb p3.0,sw12

sw21: jb p3.1,sw12

call delay

jb p3.1,sw11

setb p2.1

sw22: jnb p3.1,$

call delay

jnb p3.1,sw22

jmp sw11

請詳細解說這個程式是做什麼用的?

解釋一下jb 和set 和jnb是什麼意思?

尤其是setb p2.1這一行。

2 Answers

Rating
  • BUMEGG
    Lv 7
    1 decade ago
    Favorite Answer

    org 0 ;程式從這裡開始

    sw11: jb p3.0,sw12

    ;標簽名稱:JB bit address,Code address

    ;功能:假使位元設定則跳越(Jump if bit is set)

    ;敘述:如困所標示之位元為1,則跳越至所標示之位址,否則處理下一個指令;也就是說看看P3.0是1?如果是1跳到sw12去

    call delay;呼叫標簽名稱為delay這個副程式

    jb p3.0,sw11;看看P3.0是1?如果是1跳到sw11

    setb p2.0 ; 把P2.0設成1

    sw12: jnb p3.0,$;

    ;標簽名稱sw12:JNB bit address,Code address

    ;功能:假使位元未被設定則跳越(Jump if bit is not set)

    ;敘述:如果所標示之位元為0,則分支至所標示之位址,否則處理下一個指令;如果P3.0是0的話就在這裡等,等到P3.0等1.

    call delay;呼叫標簽名稱為delay這個副程式

    jnb p3.0,sw12

    sw21: jb p3.1,sw12

    call delay

    jb p3.1,sw11

    setb p2.1

    sw22: jnb p3.1,$

    call delay

    jnb p3.1,sw22

    jmp sw11; 無條件的跳到SW11

    ;setbSETB C

    功能:設定位元

    敘述:SETB指令將所指定位元設定為1.SETB能夠對進位標或任何可直接定址之位元作運算.

    你的程式少ㄍdelayㄍ這個副程式

    Source(s): 不要問題太難,歡迎到我的部落格討論http://tw.myblog.yahoo.com/jw!Ky8jTEaGFRt5WZA3c7o-
  • 1 decade ago

    這好像大概是按鈕反彈跳程式.

    請參考任何中文8051書本之指令說明,謝謝

Still have questions? Get your answers by asking now.