原理圖:
代碼:
ORG 0000H
LJMP MAIN ;跳轉到主程序
ORG 0003H
AJMP INT ;跳轉到中斷
ORG 0030H
MAIN: MOV IE,#81H ;開放外部中斷源0
MOV TCON,#01H ;TCON的D7~D0全為零,T0與T1都停止計數
MOV A, #01H ;把01這個數立即送到累加器A中
MOV P1,#00H ;讓P1口輸出低電平0
LOOP: MOV P2, A ;累加器A中的數據傳送到P2寄存器,
LCALL DELAY ;跳轉到延遲
RR A ;燈向右亮
SJMP LOOP ;循環
SJMP $
DELAY: MOV R2, #0FFH ;延遲程序
DELAY1: MOV R3, #0FFH
DJNZ R3, $ ;循環等待R3不為0,直到R3=0往下執行
DJNZ R2, DELAY1 ;延遲
RET ;返回
ORG 0050H
INT: PUSH ACC ;保護現場
MOV R4,#08H
MOV P3,#00H ;讓P3口輸出低電平0
MOV R6,#02H
LOOP2:MOV R6,#02H ;循環指令
MOV R6, P1
ACALL DELAY ;跳轉到延遲
DJNZ R6,LOOP2
POP ACC ;恢復現場
RETI ;中斷程序返回
END
|