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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4457|回復: 8
打印 上一主題 下一主題
收起左側(cè)

單片機按鍵程序看不懂,求解惑 從if(temp != 0)開始就看不懂了

[復制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:724177 發(fā)表于 2020-5-7 15:40 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
#include "bsp_key.h"

unsigned char KeyNum=0;
bit KeyOnFlag=0;

void keyDelayUs2x(unsigned char t)
{   
while(--t);
}

unsigned char keyScan(void)
{
    unsigned char temp = 0;

    if(KEY1 == KEY_ON)
    {
        keyDelayUs2x(100);
        if(KEY1 == KEY_ON)
        {
            temp = 1;        
        }   
    }
    else if(KEY2 == KEY_ON)
    {
        keyDelayUs2x(100);
        if(KEY2 == KEY_ON)
        {
            temp = 2;        
        }   
    }
    else if(KEY3 == KEY_ON)
    {
        keyDelayUs2x(100);
        if(KEY3 == KEY_ON)
        {
            temp = 3;        
        }   
    }
    else
    {
        temp = 0;
    }
    if(temp != 0)
    {
            KeyOnFlag=1;//按鍵按下標志位置1
            KeyNum=temp;//按鍵賦值 下一步等待釋放            
    }
    else
    {
        KeyOnFlag = 0;
    }
    if((KeyNum!=0)&&(KeyOnFlag==0))
    {
        temp = KeyNum;
        KeyNum = 0;
        return temp;
    }
    else
    {
        return 0;
    }
}
從if(temp != 0)開始就看不懂了,這個是按鍵控制子程序,求解答

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

使用道具 舉報

沙發(fā)
ID:517466 發(fā)表于 2020-5-7 16:55 | 只看該作者
從前面的代碼可以看出來,temp!=0,表示有按鍵被按下了,temp=1,表示按鍵1被按下,temp=2,表示按鍵2被按下。temp=0,表示沒有按鈕被按下。
回復

使用道具 舉報

板凳
ID:639106 發(fā)表于 2020-5-7 17:00 | 只看該作者
if(temp != 0) 是如果temp不等于0
回復

使用道具 舉報

地板
ID:311846 發(fā)表于 2020-5-7 17:09 | 只看該作者
有按鍵按下則改變temp的值,沒有則為0,三個按鍵對應1-3,那么
if(temp != 0)//則表示按鍵有效,有按鍵按下不等于0,進入判斷
    {
            KeyOnFlag=1;//按鍵按下標志位置1
            KeyNum=temp;//按鍵賦值 下一步等待釋放            
    }
    else
    {
        KeyOnFlag = 0;//如果按鍵按下那么就進入上面的程序,按鍵賦值給了KeyNum,KeyNum就保存了剛才的按鍵值,然后釋放了按鍵就會進入此,將標志位改為0
    }
    if((KeyNum!=0)&&(KeyOnFlag==0))//如果按鍵按下了,KeyNum就保存了按鍵值,那么就等于0,KeyOnFlag==0就是按鍵按下后釋放了按鍵他才等于0,則是有按鍵按下并釋放了就進入此判斷
    {
        temp = KeyNum;//這里給他賦值temp,將按鍵值重新賦值給局部變量,局部變量每次進入函數(shù)會清0
        KeyNum = 0;//讀取按鍵值后,將全局變量重新賦值為0,防止重復執(zhí)行
        return temp;//返回按鍵值
    }
    else
    {//如果沒按鍵按下就返回0
        return 0;
    }
}
夠詳細了吧!
回復

使用道具 舉報

5#
ID:724177 發(fā)表于 2020-5-7 20:52 | 只看該作者
權(quán)威人物 發(fā)表于 2020-5-7 17:09
有按鍵按下則改變temp的值,沒有則為0,三個按鍵對應1-3,那么
if(temp != 0)//則表示按鍵有效,有按鍵按 ...

首先非常萬分感謝前輩仔細回答我的問題,其次我還有點疑問。按照你的思路如果有按鍵按下就會執(zhí)行KeyOnFlag=1;KeyNum=temp; else后面的語句( KeyOnFlag = 0)不就直接跳過了么,為啥說按鍵釋放了就執(zhí)行 KeyOnFlag = 0。其次 if((KeyNum!=0)&&(KeyOnFlag==0))我自己感覺本身不是矛盾了么,為什么會同時滿足?如果 KeyNum!=0,那么不就是KeyOnFlag==1,本人剛接觸c語言,單片機,不是太懂,求解惑,謝謝
回復

使用道具 舉報

6#
ID:311846 發(fā)表于 2020-5-8 10:07 | 只看該作者
電子小白啊 發(fā)表于 2020-5-7 20:52
首先非常萬分感謝前輩仔細回答我的問題,其次我還有點疑問。按照你的思路如果有按鍵按下就會執(zhí)行KeyOnFla ...

唉!看來你程序運行都不知道,你按鍵釋放了,程序還在跑動,是不是就可以進入KeyOnFlag = 0了?那么 if((KeyNum!=0)&&(KeyOnFlag==0))這條件不就滿足了嗎?
回復

使用道具 舉報

7#
ID:70069 發(fā)表于 2020-5-8 10:22 | 只看該作者
設(shè)KEY3=0      
temp=3         
keyonflag=1   
keynum=3   
條件不滿足  
return 0         
設(shè)第二次進入掃描
KEY1 KEY2 KEY3都是1
temp=0
keyonflag=0
keynum=3
此時滿足條件
temp=3
return temp=3
這段代碼就是如果KEYON=0檢測上升沿觸發(fā)。KEYON=1檢測下降沿觸發(fā)
回復

使用道具 舉報

8#
ID:724177 發(fā)表于 2020-5-9 15:12 | 只看該作者
benclee 發(fā)表于 2020-5-8 10:22
設(shè)KEY3=0      
temp=3         
keyonflag=1   

啊,原來是這樣,謝謝前輩指點。頭文件設(shè)置KEYON=0。原來時一直掃描調(diào)用的
回復

使用道具 舉報

9#
ID:724177 發(fā)表于 2020-5-9 15:15 | 只看該作者
權(quán)威人物 發(fā)表于 2020-5-8 10:07
唉!看來你程序運行都不知道,你按鍵釋放了,程序還在跑動,是不是就可以進入KeyOnFlag = 0了?那么 if(( ...

啊,我終于懂了,我的問題出在以為只會調(diào)用一次這個子程序,謝謝前輩
回復

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 精品视频久久久久久 | 欧美1区| 日韩aⅴ在线观看 | 黄a免费网络 | 婷婷在线视频 | 亚洲自拍偷拍免费视频 | 国产日韩欧美一区二区在线播放 | 在线免费亚洲视频 | 日韩一及片| www.国产| 2023亚洲天堂 | 91在线看片 | 中文字幕一区二区三区乱码图片 | av中文字幕在线 | 国产91一区二区三区 | 成年人免费在线视频 | 日韩成人一区二区 | 九九导航| av大片在线观看 | 午夜精品久久久久久久 | 久久久精品久久久 | 久久久女女女女999久久 | 国产精品片 | 亚洲欧美一区二区三区国产精品 | 中文字幕中文字幕 | 国产在线精品一区二区三区 | 中文字幕综合 | www.yw193.com| 久久久久久一区 | 欧美8一10sex性hd | 在线看av的网址 | 欧美精品在线免费 | 日韩中文一区二区三区 | 国产欧美一区二区三区在线播放 | 国产精品一区二区欧美黑人喷潮水 | 韩国av影院 | 久草网在线视频 | 日韩久久精品 | 欧美中文一区 | 91久久精品国产91久久性色tv | 免费观看的黄色网址 |