按键 中断

这个取决对系统的理解,好的单片机设计者不是死板教条的,而是在充分的理解基本的功能后灵活的整合应用。
假定系统只有一个按键,该键在系统正常情况下作为系统设置使用,有短按和长按两种方式(需要消抖)。而当系统进入休眠后,该键用于唤醒,长按2秒后唤醒(唤醒只看是否按下2秒,其他操作无效)。

由于按键在不同的工作状态,用途不同,所以可以使用两种不同的按键扫描处理方式。

实现方法:现在的外部中断I/O口同时也可以作为通用I/O使用,那么在正常工作状态下,禁止INT中断,采用timer+状态机方式扫描处理按键。
当系统进入休眠前,禁止T/C中断,允许INT中断,然后进入休眠状态。

按键INT服务:
按键按下->进入INT服务->禁止INT中断->使用一个软件计数延时2秒(此处使用软件延时,不会影响系统的效率,因为此时系统并没有真正进入正常工作状态)->2秒后读按键I/O,确认按键是否继续按下,并设定一个标志位,中断返回。

INT中断返回后,应该执行进入休眠的语句的下句语句(唤醒后续处理部分):

查看标志位,按键是否长按2秒;a/ 如果是,禁止INT中断,系统转入正常工作状态,开启T/C中断,采用timer+状态机方式扫描处理按键;b/ 如果不是,允许INT中断,系统继续进入休眠状态。
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值