8051除60那裡錯了

;60 COUNTER FAST AND SLOW INT ONE

;2011 11 19 SAT. 除60的技術

ORG 00H

JMP START

ORG 013H

JMP INT1INT

START: MOV SP,#030H

MOV IE,#10000100B

SETB IT1

MOV PSW,#00H

MOV R1,#00H

LOOPS: MOV A,R1

ADD A,#01H

DA A

CJNE A,#60,MIN ;A=60 A要歸零 A=59以下不歸零

MOV A,#00H

MIN: MOV R1,A ;MOV R1,A 放DA後面才對

SWAP A

MOV P1,A

MOV A,00H

MOV R5,#03

CALL DELAY

JNB P3.3,LOOPF

JMP LOOPS

INT1INT:

LOOPF: MOV A,R1

ADD A,#01H

DA A

MOV R1,A ;放DA後面才對

SWAP A

MOV P1,A

MOV A,00H

MOV R5,#01

CALL DELAY

JNB P3.3,LOOPF

JMP LOOPS

RETIDELAY: MOV R6,#111

D1: MOV R7,#222

D2: DJNZ R7,D2

DJNZ R6,D1

DJNZ R5,DELAY

RET

END

1 個解答

評分
  • 9 年前
    最佳解答

    你的程式用了 DA A, 所以動作成了 除 60H, 不是 除 60,

    CJNE A,#60,MIN ;A=60 A要歸零 A=59以下不歸零

    MOV A,#00H

    改成

    CJNE A,#60H, MIN ;A=60H A要歸零 A=59H 以下不歸零

    MOV A,#00H

還有問題?馬上發問,尋求解答。