打印

死循环的原因是什么

[复制链接]
485|11
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
llia|  楼主 | 2023-2-3 21:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>

void Delay(unsigned int t);

void main(void)
{        
        unsigned char i;
        P1=0xFE;
        
        for(i=0;i<8;i++)
        {
                P1<<=1;
                Delay(50000);
        }
}

void Delay(unsigned int t)
{
        while(--t);
}
实际运行结果是 无限循环,P1.0 P1.1常亮,P1.2口依次被点亮

使用特权

评论回复
沙发
zhenykun| | 2023-2-3 21:59 | 只看该作者
电路设计的是低电平 灯才亮的

使用特权

评论回复
板凳
chenjunt| | 2023-2-3 22:01 | 只看该作者
按我的理解,应该是P1.0到P1.7依次亮,最后的现象就是所有灯都亮了。而且,感觉你这个程序好像有点不规范,因为单片机做完你说写的程序就没事做了。

使用特权

评论回复
地板
chenjunt| | 2023-2-3 22:03 | 只看该作者
你这个本身就不是只亮一个,左移的时候最低位会是0,第一个和第二个没延时所以常亮

使用特权

评论回复
5
zwll| | 2023-2-3 22:10 | 只看该作者
使用12Mhz晶振,算了下延时为199660us,也就是0.199660s。

使用特权

评论回复
6
renyaq| | 2023-2-3 22:12 | 只看该作者
这个错误好像我也犯过。。值得警惕

使用特权

评论回复
7
supernan| | 2023-2-3 22:13 | 只看该作者
不知道这种情况用C怎么解决??

使用特权

评论回复
8
wyjie| | 2023-2-3 22:15 | 只看该作者
如果都用汇编写复杂度就太高了吧

使用特权

评论回复
9
huwr| | 2023-2-3 22:17 | 只看该作者

清没清零。。我估计是没清零吧

使用特权

评论回复
10
hanwe| | 2023-2-3 22:20 | 只看该作者
连个while(1)都没有

使用特权

评论回复
11
Stahan| | 2023-2-8 21:16 | 只看该作者
可能没清零

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

961

主题

8893

帖子

4

粉丝