关于89s51的小程序

ttlcoms   2008-8-5 10:43 楼主
我想请教一个89S51的小程序 程序段是这样的
#include
#include

sbit sw1=P0^0;
sbit sw2=P0^1;
sbit LED=P1.0;


         unsigned char  i,j;
         void Delay()
         {
           for(i=0;i<300;i++)
           for(j=0;j<300;j++);
         }


          void shining()
         {
              while(sw1==0)
              {
               LED=0;
               Delay();
               LED=1;
               Delay();
               }
          }


     void main()
     {
        P1=0xFF;
        P2=0xFF;
       while()
         {
         if(sw1=0)  shining()
         if(sw2=0)  LED=1   

         }
      }
我刚自学C51C语言不到一个星期 这个是我看过一些程序后自己编的一点小程序
我不知道中间存在多少错误,小弟太菜,望各位大哥能帮忙纠正错误。

回复评论 (12)

最后两条忘了加";"号了。。。。
新手写程序 实在习惯不好
不好意识啊

最后void main
   {...
     ...
     ...
     if(sw1==0) shining();
     if(sw2==0) LED=1
        }
     }
点赞  2008-8-5 10:52
....if(sw2==0) LED=1;
点赞  2008-8-5 10:53
兄弟,你写的这个程序只是适合于学校吧,如果你确定需要写8051系列的城市,你首先需要确定你的单片机的型号
点赞  2008-8-5 11:14

5楼 xzl 

sorry,我没有看清楚,是89S51,ATMEL,
点赞  2008-8-5 11:20
  1. #include
  2. #include

  3. sbit sw1=P0^0;
  4. sbit sw2=P0^1;
  5. sbit LED=P1^0;


  6.         unsigned char  i,j;
  7.         void Delay()
  8.         {
  9.           for(i=0;i <300;i++)
  10.           for(j=0;j <300;j++);
  11.         }


  12.           void shining()
  13.         {
  14.               while(sw1==0)
  15.               {
  16.               LED=0;
  17.               Delay();
  18.               LED=1;
  19.               Delay();
  20.               }
  21.           }


  22.     void main()
  23.     {
  24.         P1=0xFF;
  25.         P2=0xFF;
  26.         while(1)
  27.         {
  28.           if(sw1==0)  shining();
  29.           if(sw2==0)  LED=1 ;
  30.         }
  31.       }
点赞  2008-8-5 12:08
先去上机调试吧。。。
点赞  2008-8-5 12:09
        unsigned char  i,j;
        void Delay()
        {
          for(i=0;i <300;i++)
          for(j=0;j <300;j++);
        }

        // i, j 能到300?
         // 老兄在开玩笑吧
点赞  2008-8-5 12:59
  同上楼!!!
  unsigned char是八位的  只能到256吧?


点赞  2008-8-6 19:12
汗用
300的要int好了
点赞  2008-8-6 22:25
void Delay()
        {
          for(i=0;i <300;i++)
          for(j=0;j <300;j++);
        }

///////////////////////////////////延时函数要带参数比较合适,方便改变延时时间。
还有有些完成任务的函数带返回值比较好,易于形成链式调用,有比较好的程序风格。

初学找一份高手的程序来看,在无形中就会提高了。
点赞  2008-8-6 23:02
可以先用KEIL等相关软件调试!问题找到.
点赞  2008-8-6 23:46
呵呵 ~~问题找到了 是char的问题
我换过int后 程序不出现错误
上KEIL调试
不出错误
但用学习机模拟
发现没有现象,后来才找出来 原来是那个keil里还有一个文件的属性要改过
就是创建好工程后,里面的头一个文件属性中的DEBUG里右上的那个USE属性要改过
还有一个关于频率的一个地方要改过的

呵呵 写一下自己发现的错误好给以后学习的人能更容易找到错误
点赞  2008-8-7 10:33
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复