C51獨(dú)立按鍵的識(shí)別示例程序
每按一次獨(dú)立鍵盤的S2鍵,與P1口相連的一個(gè)發(fā)光二極管往下移動(dòng)一位。
#include
sbit BY1=P3^4; //定義按鍵的輸入端S2鍵
unsigned char count; //按鍵計(jì)數(shù),每按一下,count加1
unsigned char temp;
unsigned char a,b;
void delay10ms(void) //延時(shí)程序
{
unsigned char i,j;
for(i=20;i>0;i--)
for(j=248;j>0;j--);
}
key() //按鍵判斷程序
{
if(BY1==0) //判斷是否按下鍵盤,當(dāng)單片機(jī)上電時(shí)所有IO口為//高電平,S2鍵一端接地另一端接P3.4,所以當(dāng)鍵被按下時(shí)P3.4口//直接接地,此時(shí)檢測(cè)P3.4肯定為低電平。
{
delay10ms(); //延時(shí),軟件去干擾
if(BY1==0) //確認(rèn)按鍵按下
{
count++; //按鍵計(jì)數(shù)加1
if(count==8) //計(jì)8次重新計(jì)數(shù)
{
count=0; //將count清零
}
}
while(BY1==0);//等待按鍵釋放,如果鍵未釋放則一直在此等待。
}
}
move() //廣告燈向下移動(dòng)移動(dòng)函數(shù)
{
a=temp< b=temp>>(8-count);// _crol_()函數(shù) P1=a|b; } main() { count=0; //初始化參數(shù)設(shè)置 temp=0xfe; P1=0xff; P1=temp; while(1) //永遠(yuǎn)循環(huán),掃描判斷按鍵是否按下 { key(); //調(diào)用按鍵識(shí)別函數(shù) move(); //調(diào)用廣告燈移動(dòng)函數(shù) } }