#include<reg51.h>
#include<intrins.h>
//定义全局变量
sbit K1=P1^0;
sbit K2=P1^1;
#define GPIO_LED P0
//定义声明函数
void Delay10ms(unsigned int c);
unsigned char Key_Scan();
//主函数
void main(void)
{
unsigned char ledvalue,keyNum;
ledvalue=0x01;
while(1)
{
keyNum=Key_Scan();
if(keyNum==1)
{
ledvalue=_crol_(ledvalue,1);
}
else if(keyNum==2);
{
ledvalue=_cror_(ledvalue,1);
}
GPIO_LED=ledvalue;
}
}
//按键扫描函数
unsigned char Key_Scan()
{
unsigned char keyValue=0,i;
if(K1==0)
{
Delay10ms(1);
if(K1==0)
{
keyValue=1;
i=0;
while((i<50)&&(K1==0))
{
Delay10ms(1);
i++;
}
}
}
if(K2==0)
{
Delay10ms(1);
if(K2==0)
{
keyValue=2;
i=0;
while((i<50)&&(K2==0))
{
Delay10ms(1);
i++;
}
}
}
return keyValue;
}
//延时函数
void Delay10ms(unsigned int c) //误差 0us
{
unsigned char a, b;
//--c已经在传递过来的时候已经赋值了,所以在for语句第一句就不用赋值了--//
for (;c>0;c--)
{
for (b=38;b>0;b--)
{
for (a=130;a>0;a--);
}
}
}
|