外部中断切换

外部中断切换

ORG 0000H 
AJMP MAIN
ORG 0003H
AJMP INTTERRUPT0 ;中断服务子程序入口
ORG 0013H
AJMP INTTERRUPT1 ;中断服务子程序入口
MAIN:
MOV R2,#00H
MOV R5,#0FFH
SETB    20H.1       ;初始化键值
SETB EA   ;打开总中断
    SETB EX0   ;打开外部中断0
SETB EX1   ;打开外部中断1
SETB IT0   ;设置外部中断0触发方式
SETB    IT1   ;设置外部中断1触发方式
MOV     SP,#60H   
LOOP:
    JNB 20H.1,LOOP1
LCALL FIND   ;流水灯方式1
MOV P1,R3   ;点亮灯
LCALL   DELAY   ;延时时钟
CJNE R2,#07,LOOP   ;查表8次
MOV     R2,#00H
SJMP LOOP
LOOP1:
JB 20H.1,LOOP
MOV     P1,#00H
SJMP LOOP1

INTTERRUPT0:
CPL     20H.1
RETI   
INTTERRUPT1:
CPL     20H.1
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

你可能感兴趣的:(51)