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

標(biāo)題: 新手自學(xué)求幫助!定時(shí)中斷掃描矩陣鍵盤(pán)。 [打印本頁(yè)]

作者: 我是徐飛    時(shí)間: 2015-10-15 13:06
標(biāo)題: 新手自學(xué)求幫助!定時(shí)中斷掃描矩陣鍵盤(pán)。
用單片機(jī)定時(shí)中斷完成矩陣鍵盤(pán)的掃描,但是總是不對(duì)。下面是我的程序。求,高手指證!!!!
(鍵盤(pán)我只用了前四個(gè))
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar code table[]={
0xfe,0xfd,0xfb,0xf7,0xef,
0xdf,0xbf,0x7f};

sbit dula=P2^6;
sbit wela=P2^7;



void delay(uint z)                 //延時(shí)函數(shù)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=114;y>0;y--);
}


void display(uchar num)
{          
                dula=1;
                P0=table[num];
                dula=0;
                P0=0xff;
               
                wela=1;
                P0=0xfe;
                wela=0;
                delay(5);       
}



void main()
{
        uchar num;
        TMOD=0x01;
     TH0=(65536-1000)/256;
     TL0=(65536-1000)%256;
     EA=1;
     ET0=1;
         TR0=1;
         while(1)
         {
                display(num);       
         }
         
                
         
         
       
}

void IT_0()interrupt 1
{
        TH0=(65536-1000)/256;
        TL0=(65536-1000)%256;
        if((P1&0xf0)!=0xf0)
        {
                uchar temp,key;
                P3=0xfe;
                temp=P3;
                temp=temp&0xf0;
                if(temp!=0xf0)
                {
                        delay(5);
                        if(temp!=0xf0)
                        {
                                temp=P3;
                                switch(temp)
                                {
                                        case 0xee:
                                                key=0;
                                                break;
                                        case 0xde:
                                                key=1;
                                                break;
                                        case 0xbe:
                                                key=2;
                                                break;
                                        case 0x7e:
                                                key=3;
                                                break;
                                }       
                                while(temp!=0xf0)
                                {
                                        temp=P3;
                                        temp=temp&0xf0;
                                }
                       
                        display(key);       
                        }
                }
        }



}




作者: 我是徐飛    時(shí)間: 2015-10-15 13:07
自己頂一下。
作者: 我是徐飛    時(shí)間: 2015-10-15 13:14
我是徐飛 發(fā)表于 2015-10-15 13:07
自己頂一下。

求解答
作者: ahshmj    時(shí)間: 2015-10-15 14:40
定時(shí)器中斷間隔太短了,加大到20000~50000都可以。
作者: 我是徐飛    時(shí)間: 2015-10-15 18:19
ahshmj 發(fā)表于 2015-10-15 14:40
定時(shí)器中斷間隔太短了,加大到20000~50000都可以。

試了,不行啊,語(yǔ)法上有沒(méi)有什么錯(cuò)誤?
作者: 青蘋(píng)果    時(shí)間: 2015-10-16 09:03
呵呵,按鍵程序沒(méi)看懂哈
說(shuō)一下顯示吧,每次給P0賦值都應(yīng)該延遲一定的時(shí)間喲,我看你給P0送了兩次值,在顯示的地方,但是前一次給完了馬上又在給一次了,,,這里我也不知道你要做什么
再,像你這個(gè)程序,不用在中斷里面調(diào)用display程序,你可以在程序里面改變num的值就可以了,當(dāng)然, NUM應(yīng)該要改成全局變量
作者: 我是徐飛    時(shí)間: 2015-10-25 18:43
青蘋(píng)果 發(fā)表于 2015-10-16 09:03
呵呵,按鍵程序沒(méi)看懂哈
說(shuō)一下顯示吧,每次給P0賦值都應(yīng)該延遲一定的時(shí)間喲,我看你給P0送了兩次值,在顯 ...

嗯,搞好了
作者: 小古月    時(shí)間: 2015-10-30 19:39
好吧 我也是新人




歡迎光臨 (http://www.raoushi.com/bbs/) Powered by Discuz! X3.1