51单片机C语言编程如何实现长按按键实现数值的累加

51单片机C语言编程如何实现长按按键实现数值的累加,第1张

这个可以用定时器来做,比如检查某键,按键时间超过2秒后一个变量开始累加知道键释放为止。实现方法如下:

#include<reg51.h>

#define uint unsigned int

#define uchar unsigned char

uint v=0,time=0

sbit key=P1^0

void t0isr() interrupt 1

{

TH0=(65536-50000)/256

TL0=(65536-50000)%256

time++

if((key==0)&&(time>40)v++ //如果按键时间超过2秒且键未释放,变量+1

if(key==1)time=0 //如果键释放,时间复位

}

main()

{

TMOD=0x01

TH0=(65536-50000)/256

TL0=(65536-50000)%256

TR0=1

ET0=1

EA=1

while(1)

}

1.

首先需要硬件支持,也就是单片机某个引脚可以控制断电和维持上电

2.

按键的的作用也可以给单片机供电,并且还要有个专门的引脚检测按键状逗铅仿态。

3.

软件:首先是长按判断。这个最好用按键扫描。就是检测按键按下时候,定时器计时,如果松开就立即清零。在设置一个功能函数检测定山纤时值,大于两秒后,就表示长按。

4.

按键按下单片机供电开始计时,如果达到长按标准,就输出引脚控制持续供电,这时候按键松了也不会断电。

5.

运行期间,按键再次按下并符合长按,那木引脚输出停止供电,这时候如果按键激咐松开,那就彻底没电关机。

长按3秒进携氏入程序可以这样

while(1)

{

     散凯if( key==0)//按键按下

     {

         cnt++

         if( cnt>300)

         {

     辩掘散       cnt=0//到3秒,退出本循环进入下一段程序

             break

}

         dely(10)//延时10毫秒

}

}  

while(1)

{

    ...//此为主程序段

}


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/yw/8238055.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-14
下一篇 2023-04-14

发表评论

登录后才能评论

评论列表(0条)

保存