请选择 进入手机版 | 继续访问电脑版

普中开源电子分享网

 找回密码
 立即注册
搜索
查看: 167|回复: 2

为什么for循环无限循环

[复制链接]

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
发表于 2023-1-11 22:36:18 | 显示全部楼层 |阅读模式
1金钱
#include "reg52.h"
#include "intrins.h"

typedef unsigned char u8;
typedef unsigned int u16;
#define led_port        P2

void delay_10us(u16 tenus)
{
   while(tenus--);
}

void main()
{
u8 i=0;
led_port=0xfe;
delay_10us(50000);
      for(i=0;i<7;i++)
    {
          led_port=_crol_(led_port,1);
           delay_10us(50000);
     }
          for(i=0;i<7;i++)
    {
          led_port=_cror_(led_port,1);
           delay_10us(50000);
     }
}  
我认为这个程序跑马灯只进行一次,从1到8再从8到1就停止,但实际是一直循环。

我知道答案 本帖寻求最佳答案回答被采纳后将获得系统奖励10 金钱 , 目前已有2人回答

回复

使用道具 举报

20

主题

1334

帖子

7718

积分

论坛元老

Rank: 8Rank: 8

积分
7718
发表于 2023-1-12 19:31:51 | 显示全部楼层
你知道你的程序执行完之后,单片机要干什么吗?就是把你的程序再执行、再执行、再执行、再执行、再执行、再执行、再执行、......
所以有那个while(1)啊,把我下面的程序(其实就是加了一个while)写进去,就是你想要的效果了。
void main()
{
u8 i=0;
led_port=0xfe;
delay_10us(50000);
      for(i=0;i<7;i++)
    {
          led_port=_crol_(led_port,1);
           delay_10us(50000);
     }
          for(i=0;i<7;i++)
    {
          led_port=_cror_(led_port,1);
           delay_10us(50000);
     }
     while(1)    {
     }
}  



回复

使用道具 举报

1

主题

2

帖子

9

积分

新手上路

Rank: 1

积分
9
 楼主| 发表于 2023-1-12 21:08:14 | 显示全部楼层
HC6800-ES-V2.0 发表于 2023-1-12 19:31
你知道你的程序执行完之后,单片机要干什么吗?就是把你的程序再执行、再执行、再执行、再执行、再执行、再 ...

我验证了一下,确实是。太感谢啦!我感觉是我的思想仅仅停留在C语言了,认为循环完就自动结束了。后面加一个while就是为了让单片机一直执行这个空循环是吗?感谢
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /1 下一条

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

GMT+8, 2023-2-2 15:59 , Processed in 0.162616 second(s), 31 queries .

Powered by 论坛搭建 X3.4

Copyright © 2001-2021, Tencent Cloud.

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