atongm 发表于 2022-9-4 00:38:06

求解释,注释掉死循环流水灯还能循环

这样流水灯还能循环?按逻辑来说应该是8个灯遍历一轮就结束了,但是程序下载到板子后竟然是一直循环的!有谁能解释一下为什么吗

已经尝试过的措施:
1、将普中给的例程中的while(1)注释掉chenchen更新生成.hex也是同样的现象,确定重新生成.hex了,因为我将原有的.hex文件删除在重新编译,重新下载的。
2、删掉工程完全重新敲代码,步骤:使用宏控制P2=~0x01,先点亮一个led;然后使用
P2=~(0x01<<i) 外面套一层for循环实现依次点亮每个led,这时没问题循环一轮结束,然后再在for外层加while(1)死循环,实现流水灯。此时也没问题。然后注释掉死循环,就出现了之前的现象。(每次重新生成.hex我都会删除上一次的.hex)
#include "reg52.h"

#define LED_PORT        P2

void delay_10us(int ten_us)
{
        while(ten_us--);
}

void main()
{
        int i=0;
//        while(1)
       
                for(i=0;i<8;i++)
                {
                        LED_PORT=~(0x01<<i);
                        delay_10us(50000);
                }
       
}

atongm 发表于 2022-9-4 09:11:18

本帖最后由 atongm 于 2022-9-4 09:29 编辑

为什么跳不出for循环了,难道是c51没有返回值默认一直跑main函数?但是我程序改成有返回值,还是跳不出for
int main(void)
{
        int i=0;
        for(i=0;i<=2;i++)
        {       
                LED_PORT=~(0x01<<i);
                delay_10us(50000);
               
        }
                BEEP=1
        return 0;
}

页: [1]
查看完整版本: 求解释,注释掉死循环流水灯还能循环