by
proteus
还有很多问题,这篇只是笔记
ORG
0000H
AJMP
MAIN
ORG
0003H
AJMP
INTTERRUPT0
ORG
0013H
AJMP
INTTERRUPT1
MAIN:
MOV
R2,#00H
;初始化外部中断
SETB EA
SETB EX0
SETB EX1
CLR
IT0
CLR IT1
LOOP:
LCALL
FIND ;流水灯方式1
MOV
P0,R3
LCALL
DELAY
CJNE
R2,#07,LOOP
MOV
R2,00H
SJMP
LOOP
INTTERRUPT0: ;外部中断0
SETB
PX1
CLR
PX0
;中断服务子程序功能:实现流水灯2
LOOP1:
MOV P0,R4
LCALL
DELAY
INC R4
CJNE R4,#0FFH,LOOP1
MOV
R4,#00H
CLR
EA ;恢复现场模版
POP
Acc
POP
PSW
RETI
INTTERRUPT1: ;外部中断1,回到流水灯1,
CLR
PX1
SETB PX0
LJMP
MAIN
RETI
FIND:
MOV
A,R2
MOV
DPTR,#TAB ;查表
MOVC
A,@A DPTR
MOV
R3,A
INC
R2
RET
TAB: ;用于点亮灯的表
DB
00H,81H,0C3H,0E7H,0FFH
DB
0E7H,0C3H,81H,00H,0FFH
DELAY:
;机器生成的延时代码@11.0592MHz
NOP
NOP
NOP
PUSH 30H
PUSH 31H
PUSH 32H
MOV 30H,#6
MOV 31H,#11
MOV 32H,#232
NEXT:
DJNZ 32H,NEXT
DJNZ 31H,NEXT
DJNZ 30H,NEXT
POP 32H
POP 31H
POP 30H
RET
END