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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4984|回復(fù): 14
打印 上一主題 下一主題
收起左側(cè)

按鍵閃燈提示程序如何做?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:472242 發(fā)表于 2021-8-25 08:13 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
100黑幣
在執(zhí)行有按鍵的功能時,我們?yōu)榱朔直婺骋话存I是否執(zhí)行,會在按按鍵后讓相對應(yīng)的燈閃兩下后不閃,請問這種程序怎么做
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

來自 2#
ID:161164 發(fā)表于 2021-8-25 08:13 | 只看該作者
  1. #include <reg52.h>
  2. #define ufloat unsigned float
  3. #define uchar  unsigned char
  4. #define uint   unsigned int
  5. uchar  LedOnCount, CONT, JJ;
  6. uint Flash_Delay, m, n;//<<<<<<<<<<<<<<<<<<<注意大于255的變數(shù)要用uint
  7. sbit SW  = P1^0;
  8. sbit LED = P2^0;        //輸出口;

  9. bit  key_In;

  10. static     uchar f_SW=1;                //按鍵松開標志
  11. static     uchar f_long_SW=0;                        //長按動作標志,為1時,長按已動作,為0時長按未動作

  12. int main (void)
  13. {

  14.     P2 = 0;
  15.     P1 = 0xff;
  16.     SW = 1;
  17. //key_In = 1;//<<<<<<<你還是不了解這按鍵標置位的用法
  18.     while (1)
  19.     {
  20.         if(SW == 0)
  21.         {
  22.             f_SW=0;                //按鍵按下標志
  23.                                                 if(++n>100)//<<<<<<<<<<<<<<<一個循環(huán)的時間太短,m一下子就加爆了,延時一下
  24.                                                 {
  25.                                                         n=0;
  26.                                                         m++;
  27.                                                 }
  28.         }else{
  29.                                         f_SW=1;                //按鍵松開標志
  30.                                         n=0;//<<<<<<<<<<<清零
  31.                                 }



  32.         if((f_SW==1)&&(m>10)&&(m<200))        //按鍵松開,并且m值處于10~200之間,為短按//<<<<<<<<<<<<<長按和短按的時間要有差別
  33.         {
  34.             m=0;
  35.             CONT++;

  36.             if(CONT == 2)CONT = 0 ;
  37.             //if(CONT == 1)
  38.             {

  39.             }
  40.             //if(CONT == 0)  LED = 0;
  41.                                                 key_In = 1;
  42.         }

  43.                                 if(key_In == 1)         //按鍵標置位bit
  44.                                 {
  45.                                                 if(++Flash_Delay>1000)  //閃燈延時int
  46.                                                 {
  47.                                                                 Flash_Delay = 0;
  48.                                                                 if(LED == 1) //閃燈腳sbit
  49.                                                                 {
  50.                                                                                 LedOnCount++;//閃燈次數(shù)char
  51.                                                                                 LED = 0;
  52.                                                                 } else
  53.                                                                 {
  54.                                                                                 LED = 1;
  55.                                                                 }
  56.                                                                 if(LedOnCount == 2)
  57.                                                                 {
  58.                                                                                 key_In = 0;
  59.                                                                                 LedOnCount = 0;
  60.                                                                 }
  61.                                                 }
  62.                                 }
  63.         if(m>=500)&&(f_long_SW==0)
  64.         {
  65.             f_long_SW=1;
  66.             {
  67.                 f_long_SW=0;//<<<<<<<<<<不明白這里想干啥
  68.                 m=0;
  69.             }
  70.         }
  71.     }
  72. }
復(fù)制代碼


回復(fù)

使用道具 舉報

板凳
ID:332444 發(fā)表于 2021-8-25 11:18 | 只看該作者
計數(shù)延時取反

評分

參與人數(shù) 1黑幣 +15 收起 理由
shuisheng60 + 15 共享資料的黑幣獎勵!

查看全部評分

回復(fù)

使用道具 舉報

地板
ID:161164 發(fā)表于 2021-8-25 11:45 | 只看該作者
本帖最后由 lkc8210 于 2021-8-25 11:47 編輯
  1. if(key_In){//按鍵標置位bit
  2.         if(++Flash_Delay>1000){//閃燈延時int
  3.                 Flash_Delay = 0;
  4.                 if(LED==On){//閃燈腳sbit
  5.                         LedOnCount++;//閃燈次數(shù)char
  6.                         LED = Off;
  7.                 }else{
  8.                         LED = On;
  9.                 }
  10.                 if(LedOnCount==2){
  11.                         key_In = 0;
  12.                         LedOnCount = 0;
  13.                 }
  14.         }
  15. }
復(fù)制代碼

評分

參與人數(shù) 1黑幣 +15 收起 理由
shuisheng60 + 15 贊一個!

查看全部評分

回復(fù)

使用道具 舉報

5#
ID:332444 發(fā)表于 2021-8-25 11:58 | 只看該作者
單獨寫一個閃爍函數(shù)按鍵按下執(zhí)行
回復(fù)

使用道具 舉報

6#
ID:850120 發(fā)表于 2021-8-25 13:36 | 只看該作者
本帖最后由 電子發(fā)燒燒燒友 于 2021-8-25 13:51 編輯

假如你需要分辨的是三個按鍵(多個也是一樣的思路)偽代碼如下:
void LED_blink(int LED)
{
     LED=1;//LED亮
     delay();
     LED=0;//LED滅
     delay();
}
void key_set()
{
   if(key1==0)//按鍵1按下
   key=key1;
   if(key2==0)//按鍵2按下
   key=key2;

   if(key3==0)//按鍵3按下
   key=key3;


}
void key_down()
{
key_set();
switch(key)
{
case key1:               //按鍵1按下
        while(key1!=0); //假設(shè)低電平代表按下,直到按鍵松開才執(zhí)行
       {
         LED_blink(LED1);
         LED_blink(LED1);//閃爍兩次
       }break;
case key2:               //按鍵1按下
        while(key2!=0); //假設(shè)低電平代表按下,直到按鍵松開才執(zhí)行
       {
         LED_blink(LED2);
         LED_blink(LED2);//閃爍兩次
       }break;

case key3:               //按鍵1按下
        while(key3!=0); //假設(shè)低電平代表按下,直到按鍵松開才執(zhí)行
       {
         LED_blink(LED3);
         LED_blink(LED3);//閃爍兩次
       }break;

}
}

評分

參與人數(shù) 1黑幣 +15 收起 理由
shuisheng60 + 15

查看全部評分

回復(fù)

使用道具 舉報

7#
ID:716656 發(fā)表于 2021-8-25 15:11 | 只看該作者
檢測到按鍵松手后,變量++或用定時器計數(shù),滿足要求后,執(zhí)行void LEDSHANSHUO()
回復(fù)

使用道具 舉報

8#
ID:472242 發(fā)表于 2021-8-25 18:42 | 只看該作者

我的按鍵已經(jīng)進入模式一了,不再需要考按鍵松手與未松手,功能模塊都在執(zhí)行了,閃兩只表示進入模式1,閃三下表示進入模式2
回復(fù)

使用道具 舉報

9#
ID:472242 發(fā)表于 2021-8-25 18:44 | 只看該作者
電子發(fā)燒燒燒友 發(fā)表于 2021-8-25 13:36
假如你需要分辨的是三個按鍵(多個也是一樣的思路)偽代碼如下:
void LED_blink(int LED)
{

不是區(qū)分按鍵,是用閃燈次數(shù)確認模式在那一檔位
回復(fù)

使用道具 舉報

10#
ID:472242 發(fā)表于 2021-8-25 18:59 | 只看該作者
shuisheng60 發(fā)表于 2021-8-25 18:42
我的按鍵已經(jīng)進入模式一了,不再需要考按鍵松手與未松手,功能模塊都在執(zhí)行了,閃兩只表示進入模式1,閃 ...


這樣試了一下,沒有反應(yīng)

#include <reg52.h>
#define ufloat unsigned float
#define uchar  unsigned char
#define uint   unsigned int
uchar Flash_Delay, LedOnCount;
sbit key_In = P1^0;
sbit LED = P2^0;        //輸出口;


void init ()                                //初始化子函數(shù)
{
        TMOD = 0x01;                        //定時器0模式;
        TH0  = (65536-10)/256;        //附高8位初值(0.01ms);
        TL0  = (65536-10)%256;        //附底8位初值(0.01ms);
        EA   = 1;                        //開總中斷;
        ET0  = 1;                        //開定時器0中斷;
        TR0  = 1;                        //開啟定時器0;
}
int main (void)
{
        init();
        P2 = 0;          P1 = 0; key_In = 1;
        while (1)
        {
                if(key_In)         //按鍵標置位bit
                {
                        if(++Flash_Delay>100)  //閃燈延時int
                        {
                Flash_Delay = 0;
                if(LED == 1) //閃燈腳sbit
                                {
                                        LedOnCount++;//閃燈次數(shù)char
                                        LED = 0;
                }else
                                {
                                        LED = 1;
                }
                if(LedOnCount==2)
                                {
                                        key_In = 0;
                                        LedOnCount = 0;
                }
                               
                        }
                        //return 0;
                }
               
        }
        }       
               
               
                void timer0() interrupt 1
                {
                        TH0  = (65536-10)/256;
                        TL0  = (65536-10)%256;     
                }

回復(fù)

使用道具 舉報

11#
ID:161164 發(fā)表于 2021-8-25 21:38 來自觸屏版 | 只看該作者
shuisheng60 發(fā)表于 2021-8-25 18:42
我的按鍵已經(jīng)進入模式一了,不再需要考按鍵松手與未松手,功能模塊都在執(zhí)行了,閃兩只表示進入模式1,閃 ...

這與你一開始說的要求不一樣啊! 老弟~
你開貼時只說閃燈用來表示按鍵按下,
從來沒有過模式什么的,
下次問問題要把要求都說出來
不要說一半不說一半的

Screenshot_2021-08-25-21-36-16-471_com.android.chrome~01.jpg (191.76 KB, 下載次數(shù): 108)

Screenshot_2021-08-25-21-36-16-471_com.android.chrome~01.jpg
回復(fù)

使用道具 舉報

12#
ID:161164 發(fā)表于 2021-8-25 21:45 | 只看該作者
shuisheng60 發(fā)表于 2021-8-25 18:59
這樣試了一下,沒有反應(yīng)

#include

key_In是按鍵標置位而不是按鍵啊~老弟~
掃描到有鍵按下才把key_In置1,
閃完燈會自動把key_In清零
回復(fù)

使用道具 舉報

13#
ID:472242 發(fā)表于 2021-8-26 09:20 | 只看該作者
lkc8210 發(fā)表于 2021-8-25 21:45
key_In是按鍵標置位而不是按鍵啊~老弟~
掃描到有鍵按下才把key_In置1,
閃完燈會自動把key_In清零

現(xiàn)在按你的意㽖這樣整了一下,還是不行

#include <reg52.h>
#define ufloat unsigned float
#define uchar  unsigned char
#define uint   unsigned int
uchar Flash_Delay, LedOnCount, m, CONT, JJ;
sbit SW  = P1^0;
sbit LED = P2^0;        //輸出口;

bit  key_In;

static     uchar f_SW=1;                //按鍵松開標志
static     uchar f_long_SW=0;                        //長按動作標志,為1時,長按已動作,為0時長按未動作

int main (void)
{
       
        P2 = 0;          P1 = 0; SW = 1;key_In = 1;
        while (1)
        {         
                if(SW == 0)
                       
        {
                        f_SW=0;                //按鍵按下標志
                        m++;
        }
               
        else     f_SW=1;                //按鍵松開標志
               
               
               
        if((f_SW==1)&&(m>10)&&(m<500))        //按鍵松開,并且m值處于10~500之間,為短按
                       
        {
                        m=0;
                        CONT++;       
                       
                        if(CONT == 2)CONT = 0 ;
                        if(CONT == 1)  
                        {
                                if(key_In == 1)         //按鍵標置位bit
                                {       
                                        if(++Flash_Delay>1000)  //閃燈延時int
                                        {
                                                Flash_Delay = 0;
                                                if(LED == 1) //閃燈腳sbit
                                                {
                                                        LedOnCount++;//閃燈次數(shù)char
                                                        LED = 0;
                                                }else
                                                {
                                                        LED = 1;
                                                }
                                                if(LedOnCount == 2)
                                                {
                                                        key_In = 0;
                                                        LedOnCount = 0;
                                                }
                                        }
                                }
                               
                        }
                        if(CONT == 0)  LED = 0;
        }
               
        if((m>=500)&&(f_long_SW==0))                              
                       
        {                                                
                        f_long_SW=1;                                                   
                       
                        {
                f_long_SW=0;   
                               
                m=0;      
                        }
                }
        }
}


回復(fù)

使用道具 舉報

14#
ID:472242 發(fā)表于 2021-8-26 12:37 | 只看該作者

很感謝!就是這個效果,----------<<<<<<<<<<不明白這里想干啥,是打算做稱按鍵的
回復(fù)

使用道具 舉報

15#
ID:472242 發(fā)表于 2021-8-26 12:42 | 只看該作者
如何把懸賞黑幣發(fā)給解決問題的人? lkc8210解決了問題
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 日韩午夜精品 | 九九伦理电影 | 久久久久久免费毛片精品 | 国产精品欧美一区二区三区 | 亚洲一区二区免费电影 | 国产成人精品久久 | 欧美一区二区三区,视频 | 爱草在线 | 亚洲精品国产成人 | 日韩av一区二区在线 | 亚洲区一区二区 | 国产在线网址 | 国产日韩欧美综合 | 久久国产精品久久久久久 | 五月天天丁香婷婷在线中 | 国产91一区| 成人国产免费观看 | 久久99精品久久久久久国产越南 | av毛片在线 | 夜夜骑首页 | 久久精品女人天堂av | 亚洲图片一区二区三区 | 国产成人免费视频 | 人人干视频在线 | 久久毛片 | 国产精品日产欧美久久久久 | 日韩成人免费av | 九九综合| 日韩精品视频在线 | 久久亚洲精品国产精品紫薇 | 又爽又黄axxx片免费观看 | 午夜影院在线观看 | 国内自拍偷拍一区 | 欧美国产一区二区 | 成年人在线观看视频 | 视频一区二区在线观看 | 久久精品小视频 | 欧美一级大片 | 国产99精品| 成人在线免费网站 | www.日本三级 |