本篇文章主要实现的功能是:独立按键控制LED灯移位。即每按一次按键则LED灯向右移位一次
示例代码:
#include <REGX52.H>
void Delay(unsigned int xms) //@12.000MHz
{
unsigned char data i, j;
while(xms)
{
i = 2;
j = 239;
do
{
while (--j);
} while (--i);
xms=xms-1;
}
}
unsigned char LEDNum,x;
void main()
{
while(1)
{
if(P3_1==0)
{
Delay(20);
while(P3_1==0);
Delay(20);
LEDNum++;
if(LEDNum>=8)
{
LEDNum=0;
}
P2=~(0x01<<LEDNum);
}
}
}
在上述代码中主要用到的左移。0x01是16进制的表示方法准换成二进制就是0000 0001。所以就将一个按键按下又松开的过程视为作为一个循环。将变量LEDNum进行递加操作使得每一从0000 0001开始移位的距离增加。最后进行取反操作,从而实现了整个功能。