欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索

單片機按鍵點亮LED燈條的程序問題,為什么放直接在while(1)中就不行呢?

查看數: 2655 | 評論數: 5 | 收藏 0
關燈 | 提示:支持鍵盤翻頁<-左 右->
    組圖打開中,請稍候......
發布時間: 2020-3-23 21:00

正文摘要:

按鍵點亮LED燈條,鍵號越大點亮的越多。在主函數中 , P2=LED2;P3=LED3;  放在if(key!=-1)中才可以保持按鍵值,否則按鍵彈上去后就恢復到原始狀態,為什么放直接在while(1)中就不行呢

回復

ID:332444 發表于 2020-3-24 11:07
從道理來講,LED保存的值只有在按鍵按下時會被修改,因此,不存在按鍵判斷外被修改的可能,因此,是可以放在按鍵判斷外.
之所以看到按鍵按下與釋放不同的結果,是因為循環太快的緣故,當放下按鍵時的值可能是隨機的.

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 回帖助人的獎勵!

查看全部評分

ID:704397 發表于 2020-3-24 10:35
xianfajushi 發表于 2020-3-24 08:37
單獨把 P2=LED2;                         P3=LED3;放在  if(key!=-1)外應該可以,出蝦米問題?

如果直接放在外面,LED只有在按下鍵不松開的時候才亮,鍵彈上來后就又恢復到原始滅的狀態
ID:704397 發表于 2020-3-24 10:34
本帖最后由 DEVOTION 于 2020-3-24 10:38 編輯
黎明初至 發表于 2020-3-24 08:47
你的邏輯編寫有問題,key_scan()中仔細看看
                        for(j=0;j

hcode的初值是0xfe,設在for循環外面的,如果 按下的行不是P1.0,就會執行else,hcode的值左移
ID:697917 發表于 2020-3-24 08:47
你的邏輯編寫有問題,key_scan()中仔細看看
                        for(j=0;j<4;j++)
                        {
                               P1=hcode;
                                if((P1&0xf0)!=0xf0)
                                {
                                        zcode=~P1;     //取反判斷行坐標
                                        for(i=0;i<16;i++)
                                        {
                                                if(zcode==table)
                                                        return i;
                                        }
                                }        
                                else
                                        hcode=_crol_(hcode,1);   
                        }

循環下 P1=hcode;每次都重新賦值,那4次掃描有什么不同。
ID:332444 發表于 2020-3-24 08:37
單獨把 P2=LED2;                         P3=LED3;放在  if(key!=-1)外應該可以,出蝦米問題?

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表