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