找回密码
 立即注册
查看: 265|回复: 8

问一个弱弱的问题,简单程序怎么会跑飞

[复制链接]

6

主题

4

回帖

232

积分

中级会员

积分
232
发表于 2026-9-6 16:12:32 | 显示全部楼层 |阅读模式
  1. #include "public.h"
  2. #include "LED.h"
  3. u8 a;
  4. void main()
  5. {
  6.     Init_IO();
  7.     Init_LED();
  8.     while (1)
  9.     {
  10.         if (a == 0)
  11.             P0 = 0xFE; // 1111 1110
  12.         P0 = P0 << 1;
  13.         a++;
  14.         DelayMs(200);
  15.         if (a == 7)
  16.             a = 0;
  17.     }
  18. }
复制代码

程序第一次循环到第二次要等很长时间,感觉程序跑飞了,第二次后面的循环都正常,看是一个很简单的程序,就是没看明白,很莫名其妙。使用的Ai8051U实验箱 。
请高手指点下了。
回复

使用道具 举报 送花

已绑定手机

307

主题

582

回帖

2957

积分

金牌会员

积分
2957
发表于 2026-9-6 17:17:59 | 显示全部楼层
a=0,P0你不等于0xFE
回复

使用道具 举报 送花

9

主题

771

回帖

5309

积分

论坛元老

积分
5309
发表于 2026-9-6 18:52:28 | 显示全部楼层
a没有赋初值,随机的,若超过7,就要累加到255后再溢出回归正常0-7循环.
把后面的if(a==7)条件改为if(a>=7)就好了.
回复

使用道具 举报 送花

已绑定手机

11

主题

484

回帖

1362

积分

金牌会员

积分
1362
发表于 2026-9-6 22:19:42 | 显示全部楼层
void main()
{
        Init_IO();
//        Init_LED();
        P0 = 0xfe;
        DelayMs(200);
        while (1)
        {
                P0=P0<<1|0x01;
                if(P0==0xff)
                        P0=0xfe;
                DelayMs(200);
        }
}
回复

使用道具 举报 送花

83

主题

8317

回帖

1万

积分

超级版主

积分
17932
发表于 2026-9-7 10:52:40 | 显示全部楼层
在主循环里取反一个IO,示波器看其输出波形,即可知道。
回复

使用道具 举报 送花

已绑定手机

6

主题

47

回帖

825

积分

高级会员

积分
825
发表于 2026-9-8 07:36:22 | 显示全部楼层
a没有赋初值 如果开机a=8  需要循环256-8=248次才能进入你的循环程序。if a >=7 就可以 或者  初始化A=0
回复

使用道具 举报 送花

3

主题

26

回帖

133

积分

注册会员

积分
133
发表于 2026-9-8 14:47:06 | 显示全部楼层
#include "public.h"
#include "LED.h"
u8 a = 0;
void main()
{
    Init_IO();
    Init_LED();
    while (1)
    {
        if (a == 0)
            P0 = 0xFE; // 1111 1110
        else
            P0 = P0 << 1;
        a++;
        DelayMs(200);
        if (a == 7)
            a = 0;
    }
}
回复

使用道具 举报 送花

6

主题

4

回帖

232

积分

中级会员

积分
232
 楼主| 发表于 2026-9-9 21:07:26 | 显示全部楼层
梁*** 发表于 2026-9-7 10:52
在主循环里取反一个IO,示波器看其输出波形,即可知道。

拿到公司,上电又一切正常,不会卡,没有明白工作机制。
回复

使用道具 举报 送花

已绑定手机

2

主题

154

回帖

470

积分

中级会员

积分
470
发表于 2026-9-11 16:59:15 | 显示全部楼层
上面几个的分析很到位,就是“a没有赋初值,随机的,”
你到公司正常,是因为恰巧a的值让第一个循环短。
回复

使用道具 举报 送花

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

本版积分规则

QQ|手机版|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2026-11-7 12:33 , Processed in 0.072361 second(s), 94 queries .

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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