找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7741|回復(fù): 0
打印 上一主題 下一主題
收起左側(cè)

[求助]幾個(gè)單片機(jī)小問(wèn)題

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:3852 發(fā)表于 2008-7-31 13:46 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式

我剛學(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ò)]
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表