久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2382|回復: 5
收起左側

需要通過按鍵K2、K3分別實現長按連續加、連續減的功能,短按已實現,如何修改單片機程序

[復制鏈接]
ID:1056830 發表于 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[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00};
uchar count,shi,ge,dcount,dicount;
unsigned int n = 0;
void delay(int ms)
{
   uchar i,j;
   for(i=ms;i>0;i--)
   for(j=200;j>0;j--);
}
void init()
{
        P0=0x6f;
        P2=0x6f;
        P1=0xff;
        buz=0;
        TMOD=0x01;
        IE=0x82;
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        TR0=1;
        dcount=99;      
}
void keyscan()
{
     if(k1==0)
     {    delay(5);
          if(k1==0)
         {   
                  TR0=0;
         }
      }               
     if(TR0==0)
     {
       if(k2==0)
      {  delay(5);
if(k2==0)
              {
                  dcount++;
                  if(dcount==100)
                  dcount=0;
                  while(!k2)
              {      
                   shi=dcount/10;
                   ge=dcount%10;
                    P0=duan[shi];
                     P2=duan[ge];
               }
               }

        }
                      if(k3==0)
        {             delay(5);
                    if(k3==0)
               {
                       dcount--;
                      if(dcount==-1)
                  dcount=99;
                    while(!k3)
                {
                    shi=dcount/10;
                         ge=dcount%10;
                            P0=duan[shi];
                           P2=duan[ge];
                 }
               }

                        }
                }

              if(k4==0)
              {       delay(5);
                      if(k4==0)
                  {
                        TR0=1;

                   }
              }  



}
void timer0() interrupt 1
{
        TH0=(65536-50000)/256;
        TL0=(65536-50000)%256;
        if(++count==20)
        {
        count=0;
        dcount--;
        if(dcount==-1)
        {
        TR0=0;
        while(k1!=0)
          {
                P0=0x00;
                P2=0x00;
                buz=1;
                delay(1000);
                P0=0x3f;
                P2=0x3f;
                buz=0;
                delay(1000);
                }
        dcount=99;
        }
        shi=dcount/10;
        ge=dcount%10;
        P0=duan[shi];
        P2=duan[ge];
        }

}
void main()
{
   init();
   while(1)
     {
      keyscan();
      }

}

屏幕截圖 2022-12-19 150929.jpg
回復

使用道具 舉報

ID:45879 發表于 2022-12-19 17:57 | 顯示全部樓層
在松開按鍵里面做文章  while(!k2)   while(!k3)
回復

使用道具 舉報

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:1056573 發表于 2022-12-20 03:47 | 顯示全部樓層
加void Keyup()和void KeyDown(),設置個flag標志按鍵按下和松開。
回復

使用道具 舉報

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:839835 發表于 2022-12-20 11:19 | 顯示全部樓層
不要在定時器中斷做這么多操作,只做計數即可。長按其實很簡單
void scan()
{
static  uin32t_t cnt;
if(k2== 0) //按鍵按下
{
   cnt++;
   if(cnt >=100000)//數據越大,時間越長
   {
     cnt  = 0;
      //長按功能
   }
}


}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 人人玩人人添人人澡欧美 | 亚洲视频在线观看 | av免费网站在线 | 毛片一区二区 | 亚洲精品一区二区网址 | 91精品久久久久 | 国产精品久久久久久久久久软件 | 狠狠艹 | 一级毛片视频免费观看 | 一区久久 | 91动漫在线观看 | 精品在线免费观看视频 | 在线日韩 | 日韩成人精品一区 | 久久99精品久久久久久秒播九色 | 黄色网址在线免费播放 | 久久精品99| 久久久91精品国产一区二区精品 | 国产综合精品一区二区三区 | 亚洲精品美女在线观看 | 久久国产欧美日韩精品 | 国产一区二区在线播放视频 | 久热久 | 国产中文原创 | 国产成人综合网 | 精品不卡 | 欧美精品一区三区 | 91久久精品国产免费一区 | 亚洲欧美在线一区 | 成人在线电影在线观看 | 超级碰在线 | 日日噜噜噜夜夜爽爽狠狠视频, | 四虎成人免费视频 | 日韩午夜影院 | 久久久91精品国产一区二区三区 | 欧美视频二区 | 日韩有码在线播放 | av在线播放网址 | 毛片片 | 91精品久久久久久久久久 | 国产精品国产三级国产aⅴ中文 |