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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

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

求解讀這段單片機(jī)按鍵程序的Nopresstime的作用

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:418451 發(fā)表于 2019-4-17 17:54 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
#define IO_KEY1                                                P00                                                        //復(fù)用LED_SegA        //按鍵復(fù)用
#define IO_KEY2                                                P01                                                        //復(fù)用LED_SegB
#define IO_KEY3                                                P02                                                        //復(fù)用LED_SegC        
#define IO_KEY4                                                P03                                                 //復(fù)用LED_SegD
#define IO_KEY5                                                P04                                                        //復(fù)用LED_SegE
//*********************** 按鍵值 *************************************
#define KEYVALUE_Key1                        0x01                                                //IO_KEY1按鍵有效的對(duì)應(yīng)值        
#define KEYVALUE_Key2                        0x02                                                //IO_KEY2按鍵有效的對(duì)應(yīng)值        
#define KEYVALUE_Key3                        0x04                                                //IO_KEY3按鍵有效的對(duì)應(yīng)值        
#define KEYVALUE_Key4                        0x08                                                //IO_KEY4按鍵有效的對(duì)應(yīng)值        
#define KEYVALUE_Key5                        0x10                                                //IO_KEY5按鍵有效的對(duì)應(yīng)值


unsigned  char bdata KEYFlag =0;          //按鍵狀態(tài)寄存器
sbit        KEYFlag1                =        KEYFlag^0;                                                //IO_KEY1的按鍵狀態(tài)
sbit        KEYFlag2                =        KEYFlag^1;                                                //IO_KEY2的按鍵狀態(tài)
sbit        KEYFlag3                =        KEYFlag^2;                                                //IO_KEY3的按鍵狀態(tài)
sbit        KEYFlag4                =        KEYFlag^3;                                                //IO_KEY4的按鍵狀態(tài)
sbit        KEYFlag5                =        KEYFlag^4;                                                //IO_KEY5的按鍵狀態(tài)
unsigned char keydata_temp;                                                                //按鍵掃描值
unsigned char keydata_old;                                                                //上次的按鍵值
unsigned int  keypresscount;                                                        //按鍵按下計(jì)時(shí)寄存器
unsigned int  NOPressTime;                                                                //按鍵沒(méi)有按的計(jì)時(shí)寄存器???????

void keyscan(void)
{
        unsigned char i;
        
        wei1=0;wei2=0; wei3=0; wei4=0;wei5=0;wei6=0;
        
        P0M = 0xE0;          //0b11100000                //0為輸入,1為輸出 輸入輸出控制寄存器,將各個(gè)段碼改為輸入                                                
        P0UR = 0x1F;        //0b00011111                //內(nèi)置上拉寄存器 1上拉  0無(wú)上拉

        for(i=0;i<10;i++)//20us
        {
                _nop_ ();
                _nop_ ();        
        }

        keydata_temp = 0;
        if(IO_KEY1 == 0)
        {
                keydata_temp |= KEYVALUE_Key1;
        }
        if(IO_KEY2== 0)
        {
                keydata_temp |= KEYVALUE_Key2;
        }
        if(IO_KEY3 == 0)
        {
                keydata_temp |= KEYVALUE_Key3;
        }
        if(IO_KEY4 == 0)
        {
                keydata_temp |= KEYVALUE_Key4;
        }
        if(IO_KEY5 == 0)
        {
                keydata_temp |= KEYVALUE_Key5;
  }
        P0M = 0xFF;          //0b11111111                //0為輸入,1為輸出 輸入輸出控制寄存器,將各個(gè)段碼改為輸入                                                
        P0UR = 0x00;        //0b00000000
        
}

void KeyService(void)
{        uchar t;
        if(keydata_temp == 0)
        {//按鍵未按下
                keypresscount = 0;
                keydata_old   = 0;
                NOPressTime++;
                if(NOPressTime>=2500) NOPressTime=2501;                                
        }
        else
        {
               
                if(keydata_temp == keydata_old)
                {
                        NOPressTime = 0;
                        
                        keypresscount++;
                        if(keypresscount>60000) keypresscount =60000;
                        if(keypresscount == 25)
                        {                        
                                if(keydata_temp == KEYVALUE_Key1)
                                {
                                        KEYFlag1 =1;
                                }
                                
                                if(keydata_temp == KEYVALUE_Key2)
                                {
                                        KEYFlag2 =1;                                
                                }                                
                                                        
                                if(keydata_temp == KEYVALUE_Key3)
                                {
                                        KEYFlag3 =1;                                       
                                }
                                
                                if(keydata_temp == KEYVALUE_Key4)
                                {
                                        KEYFlag4 =1;                                
                                }               
                                if(keydata_temp == KEYVALUE_Key5)
                                {
                                        KEYFlag5 =1;                                
                                }
                        }               
                }
                else
                {
                        if(keypresscount < 5)
                        {
                                keypresscount = 0;
                                keydata_old = keydata_temp;                                
                        }
                }
        }

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 国产一级淫片a直接免费看 免费a网站 | 九九热最新地址 | 日韩久久在线 | 九九久久这里只有精品 | 狠狠操天天操 | 国际精品鲁一鲁一区二区小说 | 精品国产乱码久久久久久丨区2区 | 网站国产 | 国产日韩欧美二区 | 午夜a区| 日本小视频网站 | 久久久久久久久精 | 九九色九九| wwww.xxxx免费| 欧美日韩91 | 亚洲精品在线免费观看视频 | 亚洲精品乱码久久久久久蜜桃 | 在线视频中文字幕 | 成人午夜电影网 | 在线一区视频 | 在线欧美小视频 | 一级毛片免费完整视频 | 亚洲免费网 | 国产自产21区 | 国产一区二区精品在线 | 秋霞精品| 91看片视频 | 精品久久九九 | 国产高清免费在线 | 久久精品欧美一区二区三区不卡 | 国产精品久久久久久吹潮 | 欧美午夜精品 | 久草综合在线视频 | 国产精品a久久久久 | 超碰地址 | 亚洲欧美激情国产综合久久久 | 免费在线视频精品 | www.久| 91网站在线播放 | 日日干日日射 | 欧美激情亚洲 |