单片机实验——外部中断实验

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


  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值