51单片机 控制灯的程序


#include 
#include 
void delay(unsigned int i)
{
    while(i--);
}


void main(unsigned char p)
{
    while(1)
    {
        unsigned char a;
        P=0xfc;
        P2=p;
        a=0;
        for(a=0;a<8;a++)
        {
            
            delay(20000);
            P2=_crol_(P2,1);
            
        }
    }
}

代码如上

img


现在是八个灯都一直亮 究竟哪里出了问题
实在想不明白
也挺简单的啊

以下是一些可能导致所有灯都一直亮的原因:

  • 控制程序中可能没有对灯进行逐个控制,或者所有的灯的控制信号可能被同时发送,导致所有的灯都一直亮着。
  • 电路中可能存在问题,例如电路连接错误或元件损坏,导致所有的灯都一直亮着。
  • 程序中可能存在死循环或其他逻辑错误,导致所有的灯都一直亮着。

可以考虑按照以下步骤进行调试:

  • 确认程序是否按照您的预期进行操作。可以添加一些打印语句或者调试工具来检查程序的执行流程,以及确保每个灯都按照您的期望进行控制。
  • 确认的电路连接是否正确。可以使用万用表等测试工具来检查电路连接是否正确,并确认每个灯的接线是否正确。
  • 如果程序和电路连接都没有问题,可以考虑逐步排除其他可能导致问题的因素,例如逻辑错误或其他软硬件故障。可以尝试更换其他元件或调整程序代码,以便更好地调试问题。