微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 嵌入式设计讨论 > MCU和单片机设计讨论 > Ds18b20运行出来P2.0口一直是0

Ds18b20运行出来P2.0口一直是0

时间:10-02 整理:3721RD 点击:

  1. /*******************************************************************************
  2. * 函 数 名         : main
  3. * 函数功能                   : 主函数
  4. * 输    入         : 无
  5. * 输    出         : 无
  6. *******************************************************************************/

  7. void main()
  8. {
  9.         

  10.         while(1)
  11.         {
  12.                
  13.                   LcdDisplay(Ds18b20ReadTemp());        
  14.         }

  15. /*******************************************************************************
  16. * 函 数 名         : Ds18b20ReadTemp
  17. * 函数功能                   : 读取温度
  18. * 输    入         : com
  19. * 输    出         : 无
  20. *******************************************************************************/

  21. int Ds18b20ReadTemp()
  22. {
  23.         int temp = 0;
  24.         uchar tmh, tml;
  25.         Ds18b20ChangTemp();                                 //先写入转换命令
  26.         Ds18b20ReadTempCom();                        //然后等待转换完后发送读取温度命令
  27.         tml = Ds18b20ReadByte();                //读取温度值共16位,先读低字节
  28.         tmh = Ds18b20ReadByte();                //再读高字节
  29.         temp = tmh;
  30.         temp <<= 8;
  31.         temp |= tml;
  32.         return temp;
  33. }



  34. 为了扩展应用,我在主函数中定义了个P2.0口,在while死循环中判断

  35. void main()
  36. {
  37.         
  38.        sbit LED=P2.0      
  39.         LED=1;

  40.        int wd = Ds18b20ReadTemp();

  41.         while(1)
  42.         {
  43.                 if(wd > 29)
  44.                 {
  45.                 LED=0;
  46.                 }
  47.                   LcdDisplay(Ds18b20ReadTemp());        
  48.         }

复制代码

运行出来P2.0口一直是0(低电平)
定义的int wd值(Ds18b20ReadTemp()函数返回值)应可以直接和29进行比较吧?
请帮忙诊断下。

大神呢。。

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top