我剛學(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ì)怎么樣?
歡迎光臨 (http://m.zg4o1577.cn/bbs/) | Powered by Discuz! X3.1 |