4341|12

68

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

关于89s51的小程序 [复制链接]

我想请教一个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语言不到一个星期 这个是我看过一些程序后自己编的一点小程序
我不知道中间存在多少错误,小弟太菜,望各位大哥能帮忙纠正错误。

最新回复

呵呵 ~~问题找到了 是char的问题 我换过int后 程序不出现错误 上KEIL调试 不出错误 但用学习机模拟 发现没有现象,后来才找出来 原来是那个keil里还有一个文件的属性要改过 就是创建好工程后,里面的头一个文件属性中的DEBUG里右上的那个USE属性要改过 还有一个关于频率的一个地方要改过的 呵呵 写一下自己发现的错误好给以后学习的人能更容易找到错误   详情 回复 发表于 2008-8-7 10:33
点赞 关注

回复
举报

76

帖子

0

TA的资源

一粒金砂(初级)

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

最后void main
   {...
     ...
     ...
     if(sw1==0) shining();
     if(sw2==0) LED=1
        }
     }
 
 

回复

87

帖子

0

TA的资源

一粒金砂(初级)

板凳
 
....if(sw2==0) LED=1;
 
 
 

回复

69

帖子

0

TA的资源

一粒金砂(初级)

4
 
兄弟,你写的这个程序只是适合于学校吧,如果你确定需要写8051系列的城市,你首先需要确定你的单片机的型号
 
 
 

回复

79

帖子

0

TA的资源

一粒金砂(初级)

5
 
sorry,我没有看清楚,是89S51,ATMEL,
 
 
 

回复

76

帖子

0

TA的资源

一粒金砂(初级)

6
 
  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.       }
复制代码
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(初级)

7
 
先去上机调试吧。。。
 
 
 

回复

63

帖子

0

TA的资源

一粒金砂(初级)

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

        // i, j 能到300?
         // 老兄在开玩笑吧
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

9
 
  同上楼!!!
  unsigned char是八位的  只能到256吧?


 
 
 

回复

77

帖子

0

TA的资源

一粒金砂(初级)

10
 
汗用
300的要int好了
 
 
 

回复

73

帖子

0

TA的资源

一粒金砂(初级)

11
 
void Delay()
        {
          for(i=0;i <300;i++)
          for(j=0;j <300;j++);
        }

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

初学找一份高手的程序来看,在无形中就会提高了。
 
 
 

回复

68

帖子

0

TA的资源

一粒金砂(初级)

12
 
可以先用KEIL等相关软件调试!问题找到.
 
 
 

回复

60

帖子

0

TA的资源

一粒金砂(初级)

13
 
呵呵 ~~问题找到了 是char的问题
我换过int后 程序不出现错误
上KEIL调试
不出错误
但用学习机模拟
发现没有现象,后来才找出来 原来是那个keil里还有一个文件的属性要改过
就是创建好工程后,里面的头一个文件属性中的DEBUG里右上的那个USE属性要改过
还有一个关于频率的一个地方要改过的

呵呵 写一下自己发现的错误好给以后学习的人能更容易找到错误
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条
艾睿电子& Silicon Labs 有奖直播 | 全新蓝牙信道探测:从技术创新到实际应用
直播时间:3月12日(周三)上午10:00
直播奖励:多功能榨汁机、蓝牙音箱、手机支架

查看 »

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表