原理图:
代码:
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
|