我剛學(xué)習(xí)單片機(jī) 遇到了幾個(gè)小問(wèn)題想不明白 請(qǐng)各位大蝦指教
請(qǐng)知道的大手 把回答發(fā)上來(lái)供新手學(xué)習(xí)
鍵控流水燈程序 #include "reg51.h" #include "intrins.h" #define uchar unsigned char void mDelay(unsigned int DelayTime) { unsigned int j=0; for(;DelayTime>0;DelayTime--) { for(j=0;j<125;j++) {;} }} uchar Key() { uchar KeyV; uchar tmp; P3=P3|0x3c; // 四個(gè)鍵所接位置 KeyV=P3; 一 if((KeyV|0xc3)==0xff) //無(wú)鍵按下 return(0); mDelay(10); //延時(shí),去鍵抖 KeyV=P3; if((KeyV|0xc3)==0xff) return(0); else { for(;;){ tmp=P3; 二 if((tmp|0xc3)==0xff) break;} return(KeyV);}} void main() { unsigned char OutData=0xfe; bit UpDown=0; bit Start=0; uchar KValue; for(;;) { KValue=Key(); switch (KValue) { case 0xfb: //P3.2=0,Start { Start=1; break; } case 0xf7: //P3.3=0,Stop { Start=0; break; } case 0xef: //P3.4=0 Up { UpDown=1; break; } case 0xdf: //P3.5=0 Down { UpDown=0; break; } } if(Start) { if(UpDown) OutData=_crol_(OutData,1); else OutData=_cror_(OutData,1); P1=OutData; } else P1=0xff; //否則燈全滅 mDelay(1000); } }
問(wèn)題一處 1 為何 P3=P3|0x3c; // 四個(gè)鍵所接位置 KeyV=P3; if((KeyV|0xc3)==0xff) //無(wú)鍵按下 用這個(gè)來(lái)確認(rèn)鍵是否被按下 2是否在 KeyV=P3; 后 程序會(huì)掃描端口 若不是 什么時(shí)候掃描端口 3 mDelay(10); //延時(shí),去鍵抖 是什么意思 問(wèn)題二處 for(;;)不加行不行?不行去掉會(huì)怎么樣?
[此貼子已經(jīng)被作者于2008-7-31 13:56:00編輯過(guò)]
|