找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

需要通过按键K2、K3分别实现长按连续加、连续减的功能,短按已实现,如何修改单片机程序

查看数: 2423 | 评论数: 5 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2022-12-19 15:13

正文摘要:

谢谢大家,单片机源程序如下: #include<reg52.h> #define uchar unsigned char #define uint unsigned int sbit k1=P1^0; sbit k2=P1^1; sbit k3=P1^2; sbit k4=P1^3; sbit buz=P3^0; uchar code duan[] ...

回复

ID:839835 发表于 2022-12-20 11:19
不要在定时器中断做这么多操作,只做计数即可。长按其实很简单
void scan()
{
static  uin32t_t cnt;
if(k2== 0) //按键按下
{
   cnt++;
   if(cnt >=100000)//数据越大,时间越长
   {
     cnt  = 0;
      //长按功能
   }
}


}
ID:161164 发表于 2022-12-20 09:55
  1. while(!k2)
  2. {
  3.         shi=dcount/10;
  4.         ge=dcount%10;
  5.         P0=duan[shi];
  6.         P2=duan[ge];
  7.         delay1ms();
  8.         if(DelayCnt++>=500)
  9.         {
  10.                 DelayCnt=0;
  11.                 dcount++;
  12.         }
  13. }
复制代码


ID:1056573 发表于 2022-12-20 03:47
加void Keyup()和void KeyDown(),设置个flag标志按键按下和松开。
ID:1056573 发表于 2022-12-20 02:10
设置个flag标志,增加void keyDown()和void keyUP():按下键flag=1,松开按键flag=0。在void keyscan()里加while(flag)函数,若果flag==1就循环连续加或减,若flag==0就退出循环。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 共享资料的黑币奖励!

查看全部评分

ID:45879 发表于 2022-12-19 17:57
在松开按键里面做文章  while(!k2)   while(!k3)

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表