谁能看看这个代码错在哪

看看这个代码错在哪

#include 
 
#define LED_NUM 8
#define CYCLE 600
 
sbit LED_Pins[LED_NUM] = {P1^0, P1^1, P1^2, P1^3, P1^4, P1^5, P1^6, P1^7};
 
void Delay(unsigned int t);
 
void main(void)
{
    unsigned int PWM_LOW = 0;
    unsigned int i = 0;
    
    while (1)
    {
        for (i = 0; i < LED_NUM; i++)
        {
            LED_Pins[i] = 1;
            Delay(60000);
            for (PWM_LOW = 1; PWM_LOW < CYCLE; PWM_LOW++)
            {
                LED_Pins[i] = 0;
                Delay(PWM_LOW);
                LED_Pins[i] = 1;
                Delay(CYCLE - PWM_LOW);
            }
            LED_Pins[i] = 0;
        }
    }
}
 
void Delay(unsigned int t)
{
    while (--t);
}
 
 

void Delay(unsigned int t);进行参数检查,导致可能出现无法预料的结果
改一下:


void Delay(unsigned int t)
{
    if (t == 0) return;
    while (--t);
}
不知道你这个问题是否已经解决, 如果还没有解决的话:
  • 这有个类似的问题, 你可以参考下: https://ask.csdn.net/questions/7690222
  • 这篇博客也不错, 你可以看下【编程技巧】巧用短路运算简化代码
  • 除此之外, 这篇博客: 递归法将十进制数字转换为其他进制数字中的 代码实现 部分也许能够解决你的问题, 你可以仔细阅读以下内容或者直接跳转源博客中阅读:

    下面我们进行代码的具体实现:

    int main()
    {
    	int num = 0;  //用于存放一个数字
    	int scale = 0;  //用于存放你选择的进制
    	printf("请输入一个十进制数字:>");
    	scanf("%d", &num);
    	printf("请输入你将转换的进制:>");
    	scanf("%d", &scale);
    	fun(num, scale);
    	printf("\n");
    	return 0;
    }
    
    void fun(int num, int scale)
    {
    	if (num/scale)  //如果num>=scale 说明在该进制下的数字
    		fun(num / scale, scale);
    	printf("%d", num%scale);
    }
    

    效果展示
    在这里插入图片描述
    在这里插入图片描述

  • 您还可以看一下 李月喜老师的企业微信自建代开发应用开发篇课程中的 创建代开发模板处理回调并提交审核上线小节, 巩固相关知识点
  • 以下回答来自chatgpt:

    我需要看到具体的代码才能找到错误并提供解决方案。请您尽快提供代码,同时提供更多的信息,如程序运行的环境和出现错误的具体情况,以便更好地解决问题。


如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^