标题: 请教,单片机程序加的延时后编译不过是什么原因? [打印本页]

作者: wrlsohu    时间: 2024-2-9 14:38
标题: 请教,单片机程序加的延时后编译不过是什么原因?
#include<reg51.h>
typedef unsigned char uint8;
typedef unsigned int uint16;

void delay(uint16 x)
{
         uint8i,j;
         for(i= x; i > 0; i --)
                   for(j= 114; j > 0; j --);                 
}

void main()
{
         uint8b = 0, way = 0;
         while(1)
         {
                    if(way == 0)         
                           P0=1;
              //    delay(200); //编译不过?
                    else
                           P0=0;
                            delay(200);

         }

}


作者: xiaobendan001    时间: 2024-2-9 19:53
if(){}else{},如果代码超过一句,需要增加大括弧的。比如你这样的后面的那个delay(200);实际上也不受else的约束
作者: Hephaestus    时间: 2024-2-9 20:01
你指出的那句并不是编译不过的原因,后面的else才是编译不过的原因。把你写的这句注释掉能编译通过,并不是这句写错了。

要看出错的信息,不能凭空想象,瞎改只能改到编译通过,不能改成对的。
作者: wrlsohu    时间: 2024-2-10 06:25
xiaobendan001 发表于 2024-2-9 19:53
if(){}else{},如果代码超过一句,需要增加大括弧的。比如你这样的后面的那个delay(200);实际上也不受else ...

谢谢您,受教了
作者: wrlsohu    时间: 2024-2-10 06:27
Hephaestus 发表于 2024-2-9 20:01
你指出的那句并不是编译不过的原因,后面的else才是编译不过的原因。把你写的这句注释掉能编译通过,并不是 ...

谢谢您的指教
作者: 刘佑红    时间: 2024-2-10 06:57
应该改为:
  1. while(1)
  2.          {
  3.              if(way == 0)         
  4.                  {
  5.                      P0=1;
  6.                     delay(200);
  7.                   }
  8.                     else
  9.                       {
  10.                          P0=0;
  11.                          delay(200);
  12.                         }
  13.          }
复制代码


作者: lkc8210    时间: 2024-2-10 21:39


作者: zhuls    时间: 2024-2-10 22:17
lkc8210 发表于 2024-2-10 21:39

列文虎克,赞!
作者: xiaobendan001    时间: 2024-2-11 08:07
lkc8210 发表于 2024-2-10 21:39

观察很细心




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1