穎涵 發問時間: 電腦與網際網路程式設計 · 1 0 年前

8051程式解說

START:MOVR0,#0H

LOOP:MOVA,R0

MOVDPTR,#TBL

MOVCA,@A+DPTR

MOVDPTR,#SCHTBL

MOVCA,@A+DPTR

MOVP1,A

MOVR5,#50

ACALLDELAY

MOVP1,#FFH

MOVR5,#10

ACALLDELAY

INCR0

CJNER0,#FH,LOOP

MOVP1,#71H

MOVR5,#5O

ACALLDELAY

WAIT:JBP3.0,WAIT

MOVR5,#1

ACALLDELAY

JBP3.0,WAIT

JMPSTART

有誰可以跟我解說每一行的註解嗎?感激不儘

1 個解答

評分
  • 1 0 年前
    最佳解答

    START:MOVR0,#0H ;將R0設為0

    LOOP:MOVA,R0;將R0的值丟進A

    MOVDPTR,#TBL;載入TBL位址至DPTR

    MOVCA,@A+DPTR;取出TBL第一個值至A(因為之前R0=0 並且複製到A)

    MOVDPTR,#SCHTBL;載入SCHTBL位址至DPTR

    MOVCA,@A+DPTR;取出SCHTBL裡的值至A(不知道TBL長什麼樣子,無法判斷)

    MOVP1,A;將A的值輸出至P1

    MOVR5,#50;設定R5=50

    ACALLDELAY;呼叫DELAY副函式

    MOVP1,#FFH;輸出FF值至P1

    MOVR5,#10;設定R5=10

    ACALLDELAY;呼叫DELAY副函式

    INCR0;對R0遞增

    CJNER0,#FH,LOOP;判斷R0是否為15,否則跳回LOOP(意思要做15次)

    MOVP1,#71H;輸出71值至P1

    MOVR5,#5O;設定R5=50

    ACALLDELAY;呼叫DELAY副函式

    WAIT:JBP3.0,WAIT;直到P3.0=0時才往下一行指令走

    MOVR5,#1;設定R5=1

    ACALLDELAY;呼叫DELAY副函式

    JBP3.0,WAIT;直到P3.0=0時才往下一行指令走

    JMPSTART;跳回START

    參考資料: ME
還有問題?馬上發問,尋求解答。