1.利用外部中断引脚检测一个机械按键,通过按键动作控制LED的状态切换,具体要求:
(1)上电时,8个LED灯亮500MS,灭500MS,上述状态循环;
(2)当按键按下时,在外部中断中实现奇数位置的LED灯亮且偶数位置的LED灭500MS,然后奇数位置的LED灯灭且偶数位置的LED亮500MS,然后退出中断,回到被打断的LED状态,继续执行(1)中的循环状态。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 0100H
MAIN:
SETB EA
SETB EX0
SETB IT0
CLR IT0
MOV P0,#0
LCALL DELAY
MOV P0,#0FFH
LCALL DELAY
LJMP MAIN
DELAY:
MOV 30H,#5
LOOP3: MOV 31H,#200
LOOP2: MOV 32H,#249
LOOP1: DJNZ 32H,LOOP1
DJNZ 31H,LOOP2
DJNZ 30H,LOOP3
RET
INT0:
PUSH 30H
PUSH 31H
PUSH 32H
MOV P0,#55H
LCALL DELAY
MOV P0,#0AAH
LCALL DELAY
POP 32H
POP 31H
POP 30H
RETI
2.利用两个外部中断引脚和中断方式同时检测一个机械按键,实现优先级实验。具体地,将其中一个设置为高优先级,另一个设置为低优先级,
(1)当发生高优先级中断时,奇数位置的LED灯亮且偶数位置的LED灭500MS,然后退出中断;(2)当发生低优先级中断中,奇数位置的LED灯灭且偶数位置的LED亮500MS,然后退出中断。
ORG 0000H
LJMP MAIN
ORG 0003H
LJMP INT0
ORG 0013H
LJMP INT1
ORG 0100H
MAIN:
SETB IT0
CLR IT0
MOV IE,#85H
MOV IP,#04H
MOV P0,#0
LJMP MAIN
DELAY:
MOV 30H,#5
LOOP3: MOV 31H,#200
LOOP2: MOV 32H,#249
LOOP1: DJNZ 32H,LOOP1
DJNZ 31H,LOOP2
DJNZ 30H,LOOP3
RET
INT0:
PUSH 30H
PUSH 31H
PUSH 32H
MOV P0,#55H
LCALL DELAY
POP 32H
POP 31H
POP 30H
RETI
INT1:
PUSH 30H
PUSH 31H
PUSH 32H
MOV P0,#0AAH
LCALL DELAY
POP 32H
POP 31H
POP 30H
RETI