找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

我写ds18b20程序为啥不行啊

查看数: 1947 | 评论数: 3 | 收藏 0
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-3-20 21:50

正文摘要:

我把程序分成了一块块,求各位大佬帮帮我

回复

ID:894438 发表于 2021-3-21 14:02
daemondong 发表于 2021-3-21 12:51
首先要检查DS18B20是否能初始化,否则你以后的读写都没意义。我的初始化程序如下

好的大佬
ID:827243 发表于 2021-3-21 12:51
首先要检查DS18B20是否能初始化,否则你以后的读写都没意义。我的初始化程序如下
  1. BOOL InitDS18B20 ()
  2. {
  3.   BYTE presence=1;
  4.   BYTE tryTimes;
  5.   
  6.   tryTimes = 0;
  7.   while(presence && tryTimes < 3)
  8.   {
  9.     PIN_OUT(AIRTEMP);
  10.         PIN_ON(AIRTEMP);
  11.         tryTimes++;
  12.         tryTimes--;//从高拉倒低
  13.     PIN_OFF(AIRTEMP);
  14.     delay(300); //500 us
  15.     PIN_ON(AIRTEMP);
  16.     delay(20); //34 us
  17.         PIN_IN(AIRTEMP,0);
  18.     presence=PIN_GET(AIRTEMP); //presence=0 复位成功,继续下一步
  19.         tryTimes++;
  20.   }
  21.   delay(300); //延时500 us
  22.   PIN_OUT(AIRTEMP);
  23.   PIN_ON(AIRTEMP);; //拉高电平
  24.   
  25. //  if (presence == 0) { ledFlickTimes = 10; return TRUE; }
  26. //  else  {ledFlickTimes = 5; return FALSE; }
  27.   if (presence == 0)
  28.   {
  29.     ifNotDS18B20 = 0;
  30.     MemoryPutByte((WORD)&nvmApplDescriptor.EE_IFNOTDS18B20_far,ifNotDS18B20);
  31.     return TRUE;
  32.   }
  33.   else  
  34.   {
  35.     ifNotDS18B20 = 1;
  36.     MemoryPutByte((WORD)&nvmApplDescriptor.EE_IFNOTDS18B20_far,ifNotDS18B20);
  37.   }
  38.   return FALSE;
  39. }
复制代码



评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

ID:894438 发表于 2021-3-20 21:53
我上面写的程序我改了很多次,所以有一些无用的程序,请大佬不要在意那些没用的程序

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表