在51单片机上用定时器实现按键长按、短按功能

发布者:Wanderlust123最新更新时间:2020-03-05 来源: eefocus关键字:51单片机  定时器  按键长按  短按功能 手机看文章 扫描二维码
随时随地手机看文章

我们在项目中常常需要在只有一个按键的情况下,来实现长按执行某个功能,短按执行另一个功能。


鉴于此,用51搭的核心板实测,亲测可行。好了,废话少说,简单粗暴,直接贴上程序结构。


 主函数()


  {      

  }


在进入while大循环中,先要配置定时器。


在while中核心是:使用两个if块判断,第一个if块判断按键是否按下,在第一个if块里面只进行按键按下标志位设置和定时器计数。


在第二个if块里根据第一个if块定时器计数来执行长短按功能,记得在退出第二个if块时,按键按下标志位(press_flag)和定时器


计数变量(count)都要清零。


……


定时器配置和中断服务程序就不贴出来了。


基本逻辑就是这样了。

关键字:51单片机  定时器  按键长按  短按功能 引用地址:在51单片机上用定时器实现按键长按、短按功能

上一篇:基于51单片机的日历时钟
下一篇:51单片机(AT89C52)一键多功能(短按、长按)

推荐阅读最新更新时间:2024-11-10 18:04

STC51单片机流水灯+外部中断蜂鸣器
闲暇之余做了一个简单的流水灯,设计思路先将LED灯从0-7逐个显示,然后再从7-0逐个显示。如果产生外部中断(即按钮按下),则8个LED灯全亮,之后又恢复流水灯状态。 #include reg52.h #include intrins.h #define uchar unsigned char #define uint unsigned int sbit K=P3^2;//启动按钮,外部中断 uchar led; void delay(uint x) { while(x--); } void XX()//中断设置 { EA=1; EX0=1; } void DD
[单片机]
51单片机控制液晶12864源代码
/********************************************/ /* AM12864系列测试程序 1.0 */ /* Designed by Andorin LCM R&D Group */ /* 2003.04.23 */ /********************************************/ #include reg51.h #include ctype.h #include string.h #include stdlib.h #include stdio.h #include math.h /**********************************
[单片机]
基于FPGA和51单片机的信号发生器设计
信号发生器又称为波形发生器是一种常用的信号源并且广泛应用于电子电路、通信、控制和教学实验等领域的重要仪器之一。为了降低传统函数信号发生器成本,改善信号发生器低频稳定性。笔者结合FPGA和51单片机产生0.596 Hz频率精度函数信号。笔者设计通过51单片机控制函数信号类型以及相关参数,用户可通过按键设置需要的波形、波形幅度、波形频率以及方波的占空比、相位。本文设计方案不仅具有良好的经济前景,也可以为当代高等教育深化改革做一个参考方向。 1 系统设计方案 1.1 系统硬件设计 本文中设计中硬件包括EP2C8Q20818N芯片和C8051F0201单片机、DAC0800芯片,T6963的LCD。本文中主要利用FPGA(EP
[单片机]
基于FPGA和<font color='red'>51单片机</font>的信号发生器设计
51单片机入门 - 模拟PWM调制控制实验
PWM(脉冲宽度调制) 对模拟信号电平进行数字编码的方法 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - 设计要求: 由于AT89系列单片机没有PWM控制器,所以通过定时器产生PWM 通过按钮控制P2.0输出高低电平的时间,占空比可调范围:0~100%,每次按下按钮以10%步进,通过示波器看到对应波形。 - - - - - - - - - - - - - - - - - -
[单片机]
<font color='red'>51单片机</font>入门 - 模拟PWM调制控制实验
Pic18F25K80 16位模式下的定时器0配置
项目用到了PIC18F25K80单片机的定时器0作为系统的节拍。在设计中发现定时器第一次进入中断的跟第二次进入中断时间都比较长,原来只配置了20ms ,实际大概2S左右。第三次以后进入中断的时间是正常的。当时比较费解这个问题。。。。 刚开始以为是刚上电,系统时钟不稳定所造成的。所以在上电后加了较长的延时后,现来配置定时器,问题依旧。 通过阅读手册,和查阅相关的资料才最终发现问题。 修改前的配置函数: void timer0_init(void) { TMR0L = 0x8E; //预装载值低字节(65535-625)%256 TMR0H = 0xFD; //预装载值高字节(65535-625)/256 T0CON =
[单片机]
51单片机驱动1602液晶的C程序
# include AT89x51.h /***************************************** 电路连接 P1------DB0~DB7 P2.0------RS P2.1------RW P2.2------E *****************************************/ # define LCD_DB P1 sbit LCD_RS=P2^0; sbit LCD_RW=P2^1; sbit LCD_E=P2^2; /******定义函数****************/ # define ucharunsign
[单片机]
51单片机学习知识点
1.单片机内部资源三大指标: a.FLASH(程序存储控件 ROM ) 相当于: 电脑硬盘(断点后还保存在) b.RAM(内存) 相当于: 电脑内存(存储一些) c.SFR(特殊功能寄存器) 2.单片机的选择: a.STC89C52 (国内生产的) 1k=1024字节 b.P89V51RD+ 支持与KEIL联机进行在线仿真。 3.单片机最小系统 三要素:电源电路,复位电路,晶振电路。 特点:单片机可以运行程序,是单片机控制系统的核心。 可以独立运行的模块,叫做最小系统. 4. 5V就是高电频,0V就是低电平,数字电路,就是一个高一个低 高电平(正极)接VCC ,低电平(负极)接GND,这样就给单片机供电了。 电流对直流来说相当于
[单片机]
<font color='red'>51单片机</font>学习知识点
8051单片机串行口及串行通信
一、串行通信的基础知识 CPU与其他外部设备要进行信息交换,一台计算机与其他计算机之间有时也要交换信息,这些信息交换就称为通信。通信有并行通信和串行通信两种。 1、并行通信 并行通信是将数据字节的各位用多条数据线同时进行传送。 并行通信控制简单、传输速度快;由于传输线较多,长距离传送时成本高且接收方的各位同时接受存在困难。 2、串行通信 串行通信是将数据字节分成一位一位的形式在一条传输线上逐个地传送。 串行通信传输线少,长距离传送时成本低,且可以利用电话网等现成的设备,但数据的传送控制要比并行通信复杂。 串行通信又可以分为异步通信与同步通信。 1)异步通信 异步通信是指通信的发送设备与接
[单片机]
80<font color='red'>51单片机</font>串行口及串行通信
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved