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

📄 ds1620.lst

📁 单片机C语言教程
💻 LST
字号:
C51 COMPILER V8.02   DS1620                                                                08/10/2007 12:07:20 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE DS1620
OBJECT MODULE PLACED IN DS1620.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE DS1620.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /****************************************************************
   2          /* 这是直接用C51高级语言编写的DS1620转换程序-没有调用汇编语言。*/
   3          /* 文件名DS1620.C                                              */
   4          /* 功能:本程序主要是读出DS1620芯片的温度转换值,转换值先放      */
   5          /*       在变量temp1中。转换值范围-55℃~125℃。 若flag0=0为     */
   6          /*       正温度,若flag0=1为负温度值,最终结果在浮点变量cc中。    */
   7          /*       本程序适合DS1620 和51系列单片机的连接,晶振为12MHZ左右。*/
   8          /****************************************************************/
   9          
  10          #include "REG52.h"
  11          #include "intrins.h"
  12          
  13          #define uchar unsigned char
  14          #define uint unsigned int
  15          
  16          sbit    DQ        = P1^0;
  17          sbit    CLK_CONV  = P1^1;
  18          sbit    RST       = P1^2;
  19          
  20          uint idata temp1;
  21          uchar idata val,flag,temp2;
  22          float idata cc;
  23          
  24          void write_byte(uchar val)  //写字节子程序
  25          {
  26   1              uchar i;
  27   1              uchar b;
  28   1              b=1;
  29   1              for(i=0;i<8;i++)
  30   1              {
  31   2                      CLK_CONV=0;
  32   2                      DQ=(val&b);
  33   2                      CLK_CONV=1;
  34   2                      b<<=1;
  35   2              }
  36   1      }
  37          uchar read_byte(void)     //读字节子程序
  38          {
  39   1              uchar i;
  40   1              uchar value,b;
  41   1              value=0;
  42   1              b=1;
  43   1              for(i=0;i<8;i++)
  44   1              {
  45   2                      DQ=1;
  46   2                      CLK_CONV=0;
  47   2                      if (DQ)
  48   2                              value|=b;
  49   2                      CLK_CONV=1;
  50   2                      b<<=1;
  51   2              }
  52   1              return(value);
  53   1      }
  54          uchar DS1620startConv(void) //DS1620 开始转换
  55          {
C51 COMPILER V8.02   DS1620                                                                08/10/2007 12:07:20 PAGE 2   

  56   1              RST=1;
  57   1              write_byte(0xEE);
  58   1              RST=0;
  59   1              return 0x00;
  60   1      }
  61          
  62          uchar DS1620ReadConf(void)  //DS1620读配置 返回值为配置寄存器内容
  63          {
  64   1              uchar tmp;
  65   1              RST=1;
  66   1              write_byte(0xAC);
  67   1              tmp=read_byte();
  68   1              RST=0;
  69   1              return tmp;
  70   1      }
  71          //DS1620 写配置,入回参数为配置寄存器新配置内容
  72          uchar DS1620SetConf(uchar val)
  73          {
  74   1              uchar tmp;
  75   1              RST=1;
  76   1              write_byte(0x0C);
  77   1              write_byte(val);
  78   1              RST=0;
  79   1              return tmp;
  80   1      }
  81          //DS1620 读温度转换数据,在返回值的低9位
  82          uint DS1620read(void)
  83          {
  84   1              uchar hbyte,lbyte;
  85   1              uint temp;
  86   1              RST=1;
  87   1              write_byte(0xAA);
  88   1              lbyte=read_byte();
  89   1              hbyte=read_byte();
  90   1              RST=0;
  91   1              temp=hbyte;
  92   1              temp<<=8;
  93   1              temp|=lbyte;
  94   1              return temp;
  95   1      }
  96          
  97          void main()                    //主程序
  98          {
  99   1            SP=0xcf;
 100   1            EA=0;
 101   1            flag=0;
 102   1            val=0x0a;
 103   1            DS1620SetConf(val);
 104   1            val=DS1620ReadConf();
 105   1            DS1620startConv();
 106   1            temp1=DS1620read();       //把温度值放入变量temp1中。
 107   1            temp1=temp1&0x01ff;       //保留数值有用部分
 108   1            if  (temp1>0xff) {
 109   2                flag=1;
 110   2                temp2=temp1-256;
 111   2                temp2=~temp2+1;
 112   2                temp1=temp2;
 113   2                }
 114   1            cc=(float)temp1/2.0;      //计算出温度值
 115   1            while(1);
 116   1      }

C51 COMPILER V8.02   DS1620                                                                08/10/2007 12:07:20 PAGE 3   


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    214    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =   ----       1
   IDATA SIZE       =      9    ----
   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 + -