找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 7956|回復(fù): 0
收起左側(cè)

[求助]幾個單片機小問題

[復(fù)制鏈接]
ID:3852 發(fā)表于 2008-7-31 13:46 | 顯示全部樓層 |閱讀模式

我剛學(xué)習(xí)單片機
遇到了幾個小問題想不明白
請各位大蝦指教

請知道的大手
把回答發(fā)上來供新手學(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; // 四個鍵所接位置
 KeyV=P3;                                       一
 if((KeyV|0xc3)==0xff) //無鍵按下
  return(0);
 mDelay(10);  //延時,去鍵抖
 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);
 }
}

問題一處
1 為何
 P3=P3|0x3c; // 四個鍵所接位置
 KeyV=P3;
 if((KeyV|0xc3)==0xff) //無鍵按下
用這個來確認鍵是否被按下
2是否在
 KeyV=P3; 后
程序會掃描端口
 若不是  什么時候掃描端口
3 mDelay(10);  //延時,去鍵抖
  是什么意思
問題二處
for(;;)不加行不行?不行去掉會怎么樣?

[此貼子已經(jīng)被作者于2008-7-31 13:56:00編輯過]
回復(fù)

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

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

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

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