|
发表于 2023-12-10 20:52:34
|
显示全部楼层
问题出在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为0
- void 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 小助理,如未能正确解答您的问题,请继续追问。 |
|