51单片机——独立按键控制LED移位
#include <REGX52.H>
void Delay(unsigned int xms)
{
	unsigned char i, j;
	while(xms)
	{
 
		i = 2;
		j = 239;
		do
  		{
			while (--j);
		} while (--i);
		xms--;
	}
}
void main()
{
	unsigned char lednum;
	P2_0=0;
	while(1)
	{
		if(P3_1==0)
		{
			Delay(20);
			while(P3_1==0);
			Delay(20);
			lednum++;
			if(lednum>=8)
			{
				lednum=0;
			}
			P2=~(0x01<<lednum);
		}
		if(P3_0==0)
		{
			Delay(20);
			while(P3_0==0);
			Delay(20);
			if(lednum==0)
			{
				lednum=7;
			}
			else{
				lednum--;
			}
			P2=~(0x01<<lednum);
	}
}
}

左移

0000 0001

0000 0010

右移

1000 0000

0100 0000

为什么当lednum==0时,要令其等于7

unsigned char lednum的范围0到255,0再减一1就会溢出到255.

上一篇
下一篇