普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 1461|回复: 1

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

[复制链接]

1

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
发表于 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);
                }
       
}
回复

使用道具 举报

1

主题

3

帖子

14

积分

新手上路

Rank: 1

积分
14
 楼主| 发表于 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 下一条

Archiver|手机版|小黑屋|普中开源电子分享网 粤ICP备16123577号-2

GMT+8, 2024-4-27 15:08 , Processed in 0.081880 second(s), 30 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表