打印

一个小程序

[复制链接]
1753|12
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
hrg13579|  楼主 | 2011-3-11 09:56 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include<reg52.h>
#define LED P1
void delayms(unsigned int i);/*延时函数*/
void main()
{   unsigned char k,z,y;
    for(k=0;k<3;k++)
    {  LED=0xaa;
       delayms(300);
       LED=0x55;
    delayms(300);
}
for(z=0;z<3;z++)
{  LED=0xfe;
    for(y=0;y<7;y++)
    {  
       delayms(300);
       LED=LED<<1;
       delayms(300);
    }   
    }
}
void delayms(unsigned int i)
{
  unsigned int j;
  for(;i>0;i--)
    for(j=125;j>0;j--);
}
大家帮我看下,为什么这程序运行完一整圈不会停,而是不停的循环?

相关帖子

沙发
心静自然凉| | 2011-3-11 10:01 | 只看该作者
因为主程序里没有停止的语言,可以在程序最后加一句  
while(1);

使用特权

评论回复
板凳
hrg13579|  楼主 | 2011-3-11 10:04 | 只看该作者
不是会自动停止吗?当程序全部运行完一整圈的时候,k=2了啊,怎么还能进入第一个for循环?奇怪

使用特权

评论回复
地板
心静自然凉| | 2011-3-11 10:07 | 只看该作者
看来你还没理解for语句的意思呀
当程序运行到for(k=0;k<3;k++)时:
1,先赋值k=0
2,再判断k<3是否成立
3,若成立,执行内容后k++,否则退出for循环

使用特权

评论回复
5
ayb_ice| | 2011-3-11 10:09 | 只看该作者
你没有叫停止
void main()
{   unsigned char k,z,y;
    for(k=0;k<3;k++)
    {  LED=0xaa;
       delayms(300);
       LED=0x55;
    delayms(300);
    for(;;);
}

使用特权

评论回复
6
ganxiang| | 2011-3-11 10:38 | 只看该作者
呵呵,并不是你的程序有问题,你应该去看看"startup"那个汇编代码,里面有你想知道的原因。

使用特权

评论回复
7
sg0755| | 2011-3-11 11:20 | 只看该作者
还得努力学习呀

使用特权

评论回复
8
zjswuyunbo| | 2011-3-11 17:29 | 只看该作者
所有 for(k=0;k<3;k++)
改为
for(;k<3;k++)

使用特权

评论回复
9
王利110| | 2011-3-12 22:03 | 只看该作者
keil中似乎默认的就是一个大循环;.........

使用特权

评论回复
10
linqing171| | 2011-3-12 23:07 | 只看该作者
单片机跑完main之后,继续往后跑,跑到最后PC溢出就又跑回来了.
在main函数最后加入 while(1);
不让它出去.

使用特权

评论回复
11
abin0415| | 2011-3-13 08:32 | 只看该作者
while(1)
{
unsigned char k,z,y;
    for(k=0;k<3;k++)
    {  LED=0xaa;
       delayms(300);
       LED=0x55;
    delayms(300);
}
for(z=0;z<3;z++)
{  LED=0xfe;
    for(y=0;y<7;y++)
    {  
       delayms(300);
       LED=LED<<1;
       delayms(300);
    }   
    }
}
}
主函数可以改成这样。

使用特权

评论回复
12
nan_banqiu| | 2011-3-13 10:13 | 只看该作者
学习

使用特权

评论回复
13
nan_banqiu| | 2011-3-13 10:14 | 只看该作者
呵呵,并不是你的程序有问题,你应该去看看"startup"那个汇编代码,里面有你想知道的原因。
ganxiang 发表于 2011-3-11 10:38
不知道啥意思 望指点

使用特权

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

本版积分规则

个人签名:胸有凌云志,无高不可攀!

300

主题

587

帖子

4

粉丝