微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > 各位大哥大姐,帮我看看这个程序有什么问题啊

各位大哥大姐,帮我看看这个程序有什么问题啊

时间:10-02 整理:3721RD 点击:

/*                                                         
8个发光管来回流动,
每个管亮100ms,流动时让蜂鸣器发出"滴滴"声。
*/
#include<reg52.h>  //
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
void delay(uint z)
{
  uint x,y;
while(1)
for(x=z;x>0;x--)
  for(y=110;y>0;y--);
}
void main()
{
uchar a,i;
while(1)
{
  a=0xfe;
  for(i=0;i<8;i++)
  {
   P1=a;
   beep=0;
   delay(50);
   beep=1;
   delay(50);
  
   a=_crol_(a,1);
  }
  a=0x7f;
  for(i=0;i<8;i++)
  {
   P1=a;
   beep=0;
   delay(50);
   beep=1;
   delay(50);
   a=_cror_(a,1);
  }
}
}



我也新手,没仔细看,你那个delay函数中的while(1)没用的

#include<reg52.h>  
#include<intrins.h>
#define uint unsigned int
#define uchar unsigned char
sbit beep=P2^3;
void delay(uint z)
{
        uint x,y;
        for(x=z;x>0;x--)
                for(y=110;y>0;y--);
}
void main()
{
        uchar a,i;
        while(1)
        {
                  a=0xfe;
                  for(i=0;i<8;i++)
                  {
                           P1=a;
                           beep=0;
                           delay(50);
                           beep=1;
                           delay(50);
                          a=_crol_(a,1);
                }
                  a=0x7f;
                  for(i=0;i<8;i++)
                  {
                           P1=a;
                           beep=0;
                           delay(50);
                           beep=1;
                          delay(50);
                           a=_cror_(a,1);
            }
        }
}

我试了,这样有用的

刚试用了下很好哦 ,谢谢了

呵呵。

的确是这个问题,非常感谢您的回复!谢谢!    不过我想再问一下的是,这个while(1)在这个语句中为什么会倒置这样这样一个死循环呢?  按我的理解是,它只能影响到两个 for语句,应该不会影响到整个程序的运行啊?

你理解错 了.....加了个大括号,就是复合语句.....整个大括号里的内容,都会只当做while的执行语句

您指的是delay()下面的这个大括号吗?

哎呀!这个程序很简单嘛!就几个灯和蜂鸣器而已,灯是循环显示,先是左循环,后是右循环,为了你能尽快看懂该程序,我建议你先让灯显示前半部分(也就是把后半部分注释掉,不让其编译),应用这种方法,能把你很快成为高手,,希望你能领悟到这一点!希望我的话能对你有所帮助!

谢谢!

while(A),这个循环只要括号里面是1就会继续执行,while(1)的话肯定跳不出这个循环了,除非有关键词跳出来
   

以后你写的时候 尽量写成while(1){} 这种的 这是语法风格的问题,等你写的多了就知道那样写的好处了

解释的很好

谢谢各位的热心帮忙,纠出我编程中毛病。谢谢各位!

那是!还是高手多呀!

这很好麽!新手就能看出来!这水平,前途不可限量!

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top