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

📄 1.lst

📁 ds18b20在stc89c58rd+下使用C语言调试通过
💻 LST
字号:
C51 COMPILER V8.02   1                                                                     07/24/2007 19:21:02 PAGE 1   


C51 COMPILER V8.02, COMPILATION OF MODULE 1
OBJECT MODULE PLACED IN 1.OBJ
COMPILER INVOKED BY: d:\program files\Keil\C51\BIN\C51.EXE 1.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          #include<reg51.h>
   2          
   3          sbit DQ1=P1^0;                   // 数据传输线对应引脚
   4          sbit DQ2=P1^1;
   5          sbit io=P2^6;
   6          int n;
   7          unsigned char tempL=0;
   8          unsigned char tempH=0;
   9          
  10          void LedTest()
  11          {
  12   1              static char led=1;
  13   1              led=!led;
  14   1              io=led; 
  15   1      }
  16          
  17          
  18          void delay(unsigned int time)     //延时子程序
  19          {
  20   1         unsigned int r;
  21   1      r=0;
  22   1      while(r<time)
  23   1      { r++;}
  24   1      return;
  25   1      }
  26          Init_DS18B20(void)      //初始化子程序
  27          {
  28   1      unsigned char x=0;
  29   1      DQ1=1;               //置高
  30   1      DQ2=1;
  31   1      delay(8);            //延时
  32   1       
  33   1      DQ1=0;                //发复位脉冲
  34   1      DQ2=0;
  35   1      delay(85);
  36   1      
  37   1      DQ1=1;               //拉高数据线
  38   1      DQ2=1;
  39   1      delay(14);
  40   1      delay(20);
  41   1      }
  42          
  43          
  44          
  45          
  46          ReadOneChar(char *p)     //读一字节数据
  47          
  48          {
  49   1       
  50   1        unsigned char dat1=0;
  51   1        unsigned char dat2=0; 
  52   1        unsigned char a; 
  53   1        unsigned char i=0;
  54   1        for(i=8;i>0;i--)
  55   1          {
C51 COMPILER V8.02   1                                                                     07/24/2007 19:21:02 PAGE 2   

  56   2            DQ1=1;
  57   2                DQ2=1;
  58   2            delay(1);
  59   2                
  60   2              DQ1=0;           
  61   2             dat1>>=1;
  62   2             DQ1=1;
  63   2             if(DQ1)
  64   2               {
  65   3                 dat1|=0x80;
  66   3               
  67   3                      }
  68   2                 p[0]=dat1; 
  69   2      
  70   2                DQ2=0;
  71   2                dat2>>=1;
  72   2                DQ2=1;
  73   2               if(DQ2)
  74   2                   {
  75   3                          dat2|=0x80;
  76   3              
  77   3                            }
  78   2                       p[1]=dat2 ;
  79   2      
  80   2      delay(4);
  81   2              }
  82   1      
  83   1      return(a);
  84   1      }
  85          
  86          
  87          
  88          
  89          WriteOneChar(unsigned char dat,n)       //向DS18S20写一字节数据
  90          {
  91   1      
  92   1      unsigned char dat1;
  93   1      unsigned char dat2;
  94   1      unsigned char i=0;
  95   1      dat1=dat;
  96   1      dat2=dat;
  97   1      
  98   1      for(i=8;i>0;i--)
  99   1         {
 100   2                 if(n<1)
 101   2              {
 102   3                      DQ1=0;
 103   3              DQ1=dat1&0x01;
 104   3                  delay(5);
 105   3                   DQ1=1; 
 106   3                dat1>>=1;
 107   3                    }
 108   2                    else
 109   2                     {
 110   3                       DQ2=0; 
 111   3                       DQ2=dat2&0x01;
 112   3                               delay(5);
 113   3                       DQ2=1;
 114   3                       dat2>>=1;
 115   3                     }
 116   2           }
 117   1         delay(4);
C51 COMPILER V8.02   1                                                                     07/24/2007 19:21:02 PAGE 3   

 118   1      }
 119          
 120          void main()   //主程序
 121          {
 122   1              unsigned char n,tempH,tempL;
 123   1              unsigned char p;
 124   1              do
 125   1          {
 126   2                      for(n=0;n<1;n++)
 127   2              {
 128   3                       Init_DS18B20();        //初始化
 129   3                           WriteOneChar(0xcc,n);      //跳过读序列号
 130   3                           WriteOneChar(0x44,n);      //启动温度转换
 131   3                           delay(255);
 132   3                               delay(255);
 133   3                               delay(255);
 134   3                               delay(255);delay(255);
 135   3                               delay(255);
 136   3                               delay(255);
 137   3                               delay(255);
 138   3                               delay(255);
 139   3                               delay(255);
 140   3                               delay(255);
 141   3                               delay(255);
 142   3                               delay(255);
 143   3                               delay(255);
 144   3                               delay(255);
 145   3                               delay(255);
 146   3                               delay(255);
 147   3                               delay(255);
 148   3                               delay(255);
 149   3                               delay(255);
 150   3                               delay(255);
 151   3      
 152   3                               delay(255);
 153   3                           Init_DS18B20();
 154   3                           WriteOneChar(0xcc,n);      
 155   3                           WriteOneChar(0xbe,n);       //读温度寄存器
 156   3                               ReadOneChar(&p);
 157   3                           tempL=p;       //读出温度低位
 158   3                           ReadOneChar(&p);
 159   3                               tempH=p;       //读出温度高位
 160   3                               if(tempH==0xFF)LedTest();
 161   3                }
 162   2         }
 163   1         while(1) ;
 164   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    349    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      5      10
   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 + -