;INT0中斷練習程式 ;平時 LED 閃爍 ;INT0中斷 LED 左旋一圈 ORG 0H JMP START ORG 03H JMP INT0_INT START: MOV IE,#10000001B ;設定允許INT0中斷 MOV SP,#6FH ;將堆疊指標位址移到6F MOV A,#0Fh FLASH: MOV P2,A MOV R5,#15 CALL DELAY CPL A JMP FLASH INT0_INT: PUSH ACC ;將累加器內的值存到堆疊 PUSH PSW ;將PSW內的值存到堆疊(因以下2指令會影響到PSW內的值) SETB RS0 ;使用暫存器庫1 CLR RS1 MOV R4,#8 MOV A,#11111110B SHIFT_L: MOV P2,A MOV R5,#20 CALL DELAY RL A DJNZ R4,SHIFT_L POP PSW POP ACC RETI ;中斷程式結束,返回主程式 DELAY: MOV R6,#200 DEL: MOV R7,#200 DJNZ R7,$ DJNZ R6,DEL DJNZ R5,DELAY RET END