⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 www.ourhc.cn.lst

📁 STC12C5A60S2精简开发板使用手机及其经典例程
💻 LST
字号:
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:32:57 PAGE 1   


C51 COMPILER V8.05a, COMPILATION OF MODULE WWW_OURHC_CN
OBJECT MODULE PLACED IN www.ourhc.cn.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE www.ourhc.cn.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /********************************************************************
   2                                      汇诚科技
   3          
   4          实现功能:STC12C5A60S2单片机之DS18B20温度传感器12T
   5          使用芯片:STC12C5A60S2
   6          晶振:11.0592MHZ
   7          波特率:115200
   8          编译环境:Keil
   9          作者:zhangxinchun
  10          网站:www.ourhc.cn
  11          淘宝店:
  12          汇诚科技 http://ourhc.taobao.com
  13          郑兴电子直销部 http://shop68451856.taobao.com
  14          【声明】此程序仅用于学习与参考,引用请注明版权和作者信息!  
  15            
  16          
  17          *********************************************************************/
  18          #include "REG52.H"
  19          #include "INTRINS.H"
  20          
  21          typedef unsigned char BYTE;
  22          
  23          sbit DQ = P3^3;                     //DS18B20的数据口位P3.3
  24          BYTE TPH;                           //存放温度值的高字节
  25          BYTE TPL;                           //存放温度值的低字节
  26          
  27          void DelayXus(BYTE n);
  28          void DS18B20_Reset();
  29          void DS18B20_WriteByte(BYTE dat);
  30          BYTE DS18B20_ReadByte();
  31          
  32          void main()
  33          {
  34   1          DS18B20_Reset();                //设备复位
  35   1          DS18B20_WriteByte(0xCC);        //跳过ROM命令
  36   1          DS18B20_WriteByte(0x44);        //开始转换命令
  37   1          while (!DQ);                    //等待转换完成
  38   1      
  39   1          DS18B20_Reset();                //设备复位
  40   1          DS18B20_WriteByte(0xCC);        //跳过ROM命令
  41   1          DS18B20_WriteByte(0xBE);        //读暂存存储器命令
  42   1          TPL = DS18B20_ReadByte();       //读温度低字节
  43   1          TPH = DS18B20_ReadByte();       //读温度高字节
  44   1      
  45   1          while (1);
  46   1      }
  47          
  48          /**************************************
  49          延时X*10微秒(STC90C52RC@12M)
  50          不同的工作环境,需要调整此函数
  51          当改用1T的MCU时,请调整此延时函数
  52          **************************************/
  53          void DelayX0us(BYTE n)
  54          {
  55   1          while (n--)
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:32:57 PAGE 2   

  56   1          {
  57   2              _nop_();
  58   2              _nop_();
  59   2          }
  60   1      }
  61          
  62          /**************************************
  63          复位DS18B20,并检测设备是否存在
  64          **************************************/
  65          void DS18B20_Reset()
  66          {
  67   1          CY = 1;
  68   1          while (CY)
  69   1          {
  70   2              DQ = 0;                     //送出低电平复位信号
  71   2              DelayX0us(48);              //延时至少480us
  72   2              DQ = 1;                     //释放数据线
  73   2              DelayX0us(6);               //等待60us
  74   2              CY = DQ;                    //检测存在脉冲
  75   2              DelayX0us(42);              //等待设备释放数据线
  76   2          }
  77   1      }
  78          
  79          /**************************************
  80          从DS18B20读1字节数据
  81          **************************************/
  82          BYTE DS18B20_ReadByte()
  83          {
  84   1          BYTE i;
  85   1          BYTE dat = 0;
  86   1      
  87   1          for (i=0; i<8; i++)             //8位计数器
  88   1          {
  89   2              dat >>= 1;
  90   2              DQ = 0;                     //开始时间片
  91   2              _nop_();                    //延时等待
  92   2              _nop_();
  93   2              DQ = 1;                     //准备接收
  94   2              _nop_();                    //接收延时
  95   2              _nop_();
  96   2              if (DQ) dat |= 0x80;        //读取数据
  97   2              DelayX0us(6);               //等待时间片结束
  98   2          }
  99   1      
 100   1          return dat;
 101   1      }
 102          
 103          /**************************************
 104          向DS18B20写1字节数据
 105          **************************************/
 106          void DS18B20_WriteByte(BYTE dat)
 107          {
 108   1          char i;
 109   1      
 110   1          for (i=0; i<8; i++)             //8位计数器
 111   1          {
 112   2              DQ = 0;                     //开始时间片
 113   2              _nop_();                    //延时等待
 114   2              _nop_();
 115   2              dat >>= 1;                  //送出数据
 116   2              DQ = CY;
 117   2              DelayX0us(6);               //等待时间片结束
C51 COMPILER V8.05a   WWW_OURHC_CN                                                         06/03/2012 21:32:57 PAGE 3   

 118   2              DQ = 1;                     //恢复数据线
 119   2          }
 120   1      }
 121          
 122          /********************************************************************
 123                                        结束
 124          *********************************************************************/


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    140    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      2    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----    ----
END OF MODULE INFORMATION.


C51 COMPILATION COMPLETE.  0 WARNING(S),  0 ERROR(S)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -