亚洲春色中文字幕久久久-三上亚,一吻二脱三床四吻胸,国产真实伦对白视频全集,在线毛片观看,精品成品入口黄网,国产毛aⅴ片久久久,亚洲AV色香蕉一区二区三区老师,萧皇后A级艳片,色情日本视频更新,99久久亚洲精品日本无码

標題: 新手自學求幫助!定時中斷掃描矩陣鍵盤。 [打印本頁]

作者: 我是徐飛    時間: 2015-10-15 13:06
標題: 新手自學求幫助!定時中斷掃描矩陣鍵盤。
用單片機定時中斷完成矩陣鍵盤的掃描,但是總是不對。下面是我的程序。求,高手指證!!!!
(鍵盤我只用了前四個)
#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)                 //延時函數
{
        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);       
                        }
                }
        }



}




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

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

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

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




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