问题出在LEDNum变量的初始值没有赋值。在程序的开始部分,LEDNum应该被初始化为0,这样才能保证LED灯的移位正常进行。
修改后的代码如下:#include <reg52.h>void Delay(unsigned int xms) //@12.000MHz{ unsigned char i, j; while(xms) { i = 2; j = 239; do { while (--j); } while (--i); xms--; }}unsigned char LEDNum = 0; // 初始化LEDNum为0void main(){ P1_0=0; Delay(40); P1_0=1; Delay(40); P1_1=0; while(1) { if(P3_4==0) { Delay(20); //按键消抖 while(P3_4==0); Delay(20); //延时 LEDNum++; if(LEDNum>=8) { LEDNum=0; } P1=~(0x01 << LEDNum); // 移位控制LED灯亮起的位置 } }}
在这个例子中,我们通过按下P3_4口的按钮来移位控制LED灯的亮起位置。按下按钮后,LEDNum变量会自增1,并通过位运算将对应的LED灯亮起。当LEDNum超过7时,会被重置为0,这样就能循环移位显示LED灯。
以上回复来自 FishC AI 小助理,如未能正确解答您的问题,请继续追问。 |