free性丰满hd毛多多,久久综合给合久久狠狠狠97色69 ,欧美成人乱码一区二区三区,国产美女久久久亚洲综合,7777久久亚洲中文字幕

0
問(wèn)答首頁(yè) 最新問(wèn)題 熱門問(wèn)題 等待回答標(biāo)簽廣場(chǎng)
我要提問(wèn)

單片機(jī)

單片機(jī)矩陣鍵盤新手問(wèn)題

#include

#define GPIO_DIG P0

#define GPIO_KEY P1

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

unsigned char code DIG_CODE[17]={

0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,

0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};

//0、1、2、3、4、5、6、7、8、9、A、b、C、d、E、F的顯示碼

unsigned char KeyValue;

//用來(lái)存放讀取到的鍵值

void Delay10ms();   //延時(shí)10ms

void KeyDown();                 //檢測(cè)按鍵函數(shù)

void main(void)

{

        LSA=0; //給一個(gè)數(shù)碼管提供位選

        LSB=0;

        LSC=0;

        while(1)

        {

                KeyDown();

                GPIO_DIG=DIG_CODE[KeyValue];

        }                                

}

void KeyDown(void)

{

        char a=0;

        GPIO_KEY=0x0f;

        if(GPIO_KEY!=0x0f)//讀取按鍵是否按下

        {

                Delay10ms();//延時(shí)10ms進(jìn)行消抖

                if(GPIO_KEY!=0x0f)//再次檢測(cè)鍵盤是否按下

                {

                        

                        //測(cè)試列

                        GPIO_KEY=0X0F;

                        switch(GPIO_KEY)

                        {

                                case(0X07):        KeyValue=0;break;

                                case(0X0b):        KeyValue=1;break;

                                case(0X0d): KeyValue=2;break;

                                case(0X0e):        KeyValue=3;break;

                        }

                        //測(cè)試行

                        GPIO_KEY=0XF0;

                        switch(GPIO_KEY)

                        {

                                case(0X70):        KeyValue=KeyValue;break;

                                case(0Xb0):        KeyValue=KeyValue+4;break;

                                case(0Xd0): KeyValue=KeyValue+8;break;

                                case(0Xe0):        KeyValue=KeyValue+12;break;

                        }

                        while((a<50)&&(GPIO_KEY!=0xf0))         //檢測(cè)按鍵松手檢測(cè)

                        {

                                Delay10ms();

                                a++;

                        }

                }

        }

}

void Delay10ms(void)   //誤差 0us

{

    unsigned char a,b,c;

    for(c=1;c>0;c--)

        for(b=38;b>0;b--)

            for(a=130;a>0;a--);

}

為什么測(cè)試列的時(shí)候還要重新賦值GPIO_KEY=0X0F,不是已經(jīng)在char a=0;后賦值GPIO_KEY=0x0f;那為什么還要測(cè)試列的時(shí)候賦值GPIO_KEY=0X0F

提問(wèn)者:lksmcd 地點(diǎn):- 瀏覽次數(shù):7331 提問(wèn)時(shí)間:10-22 16:33
我有更好的答案
提 交
1條回答
建企商務(wù)服務(wù) 09-22 07:57
如果你沒(méi)有這一步的話,,當(dāng)你第一次按下按鍵的情況下,程序會(huì)在if中一直運(yùn)行,你再按鍵都沒(méi)反應(yīng),但當(dāng)你有這一步是,就不會(huì)出現(xiàn)這種情況
撰寫答案
提 交
1 / 3
1 / 3
相關(guān)單片機(jī)
具有音調(diào)控制的單片機(jī)立體聲前置放大器
用于單片機(jī)與電子裝置中的開(kāi)關(guān)電源
單片機(jī)軟硬件復(fù)位的條件都有啥
電動(dòng)機(jī)的單片機(jī)控制
單片機(jī)應(yīng)用系統(tǒng)開(kāi)發(fā)實(shí)例導(dǎo)航