基于单片机定时器软件消抖C51程序研究
2018-01-02向兵杨述凯
科学与财富 2018年33期
关键词:单片机
向兵 杨述凯
摘 要:随着电子技术的发展,单片机的应用在教学及科技开发中越来越普遍,而针对单片机的开发环境而言,大多采用C51语法进行设计。按键的使用在大多数硬件设计里相当频繁,而按键的干扰处理可以使用硬件消抖,也可使用软件消抖。这两种方法可根据总体设计需求而选择,以高效的方式处理所有任务。本文采用51单片机的其中一个定时器作为全局时钟来定位处理任务,以不影响、不打断其他正常工作的前提为标准,可大大提高处理器工作效率。
关键词:单片机;按键;消抖;定时器
一、软件消抖现状
通常,我们会在程序中自定义一段延时程序命名为类似于delayms(unsigned int i)格式,然后在程序处理过程中判断按键状态达到要求后调用此函数来进行消抖。此方法在程序运行时,一旦按键状态符合,需要进行延时等待二次判断,任务较小的情况下能够达到预期要求,若处理器任務较多,使用delayms函数进行延时会极大降低程序处理效率,且总体效果不佳。本文介绍的消抖方式是利用单片机定时器记录全局时间,在每一次进入中断后时钟变量加1,在主要任务处理时循环判断按键状态变化时间,来达到类似于分时操作的效果。
二、程序初始化步骤
首先认为系统上电后按键状态为高电平1,定义一个位变量:bit key_last_state=1,用来存储程序运行过程中按键最后保持的状态。我们将按键接在单片机P2.0引脚上,用变量key_current_state来表示P2.0引脚的电平,故定义:sbit key_current_state,此变量是由按键按下或松开之后的真实状态变化。……
登录APP查看全文
