2249|3

1

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

菜鸟求助!一段程序就是调不出来 [复制链接]

一个测温程序,中间往芯片写数据有这么一段。把写1、写0放到子函数就不行了。不知道为啥。程序挺简单的分别如下:
void tmpwritebyte(uchar dat)   //write a byte to ds18b20
{
  uint i;
  uchar j;
  for(j=1;j<=8;j++)
  {
    dat=dat>>1;
    if(CY==1)   //write 1
    {
      DS=0;
      i++;i++;
      DS=1;
        i=8;while(i>0)i--;
    }
    else
    {
      DS=0;       //write 0
      i=8;while(i>0)i--;
      DS=1;
      i++;i++;
    }
  }
}
上面这一段是可以的,但是如果写成
void write1()
{
          uchar i;
      DS=0;
      i++;i++;
      DS=1;
      i=8;while(i>0)i--;
}
void write0()
{  uchar i;
DS=0;       //write 0
      i=8;while(i>0)i--;
      DS=1;
      i++;i++;
}
void tmpwritebyte(uchar dat)   //write a byte to ds18b20
{
  uchar j;
  for(j=1;j<=8;j++)
  {
    dat=dat>>1;
    if(CY==1)     //write 1
    {
         write1();
       }
      else
               {
                  write0();
                 }
}
就不能够了,菜鸟学艺不精,。,,,求助。。。。
此帖出自51单片机论坛

最新回复

楼主用的啥芯片,有时序图吗?直接把程序放上来,人家都被你搞晕了。起码把思路大概说一下,是吧?  详情 回复 发表于 2015-2-7 17:27
点赞 关注
 

回复
举报

1412

帖子

15

TA的资源

版主

沙发
 
调用时间超过了时序要求??用内联函数试试
此帖出自51单片机论坛
 
个人签名https://bbs.eeworld.com.cn/thread-471646-1-1.html
欢迎加入我的团队
 
 

回复

9803

帖子

24

TA的资源

版主

板凳
 
写1函数的I++没有意义,因为i没有初始化,下边有对i赋值。写0函数i++也没有意义,因为i是局部变量,退出函数后i的内存就被释放了
此帖出自51单片机论坛
 
 
 

回复

160

帖子

0

TA的资源

一粒金砂(中级)

4
 
楼主用的啥芯片,有时序图吗?直接把程序放上来,人家都被你搞晕了。起码把思路大概说一下,是吧?
此帖出自51单片机论坛
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/6 下一条

 
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
快速回复 返回顶部 返回列表