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

📄 ds.lst

📁 在单片机上面实现对DS18B20的运用
💻 LST
字号:
C51 COMPILER V8.02   DS                                                                    03/19/2008 11:17:45 PAGE 1   


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

line level    source

   1          #include <reg52.h>
   2          #include<intrins.h>
   3          #define uchar unsigned char
   4          #define uint unsigned int
   5          #define disdata  P0
   6          #define discan  P2
   7          sbit bin=P0^7;
   8          sbit dq=P2^2;
   9          uint h;
  10          uchar code ditab[16]={0x00,0x01,0x01,0x02,0x03,0x03,0x04,0x04,0x05,0x06,0x06,0x07,
  11          0x08,0x08,0x09,0x09,} ;
  12          uchar code dis_7[12]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0xff,0xbf};
  13          uchar code scan_con[4]={0xef,0xdf,0xbf,0x7f};
  14          uchar data temp_data[2]={0x00,0x00};
  15          uchar data display[5]={0x00,0x00,0x00,0x00,0x00};
  16          delay(uint t)
  17          {
  18   1         for(;t>0;t--);       
  19   1      }
  20          scan()
  21          { uchar i;
  22   1        for(i=0;i<4;i++)
  23   1        {
  24   2           disdata=dis_7[display[i]] ;
  25   2           if(i==1
  26   2           {bin=0;}
*** ERROR C141 IN LINE 26 OF DS.C: syntax error near '{'
  27   2           discan=scan_con[i];delay(99);discan=0xff;
  28   2        }
  29   1      }
  30          reset(void)
  31          {
  32   1          uchar presence=1;
  33   1          while(presence)
  34   1          {   
  35   2              while(presence)
  36   2              {
  37   3                  dq=1;_nop_(); _nop_();
  38   3                  dq=0;delay(50);
  39   3                  dq=1;delay(6);
  40   3                  presence=dq;
  41   3              }
  42   2              delay(45);
  43   2              presence=~dq;
  44   2          }
  45   1          dq=1;
  46   1      }
  47          void write_byte(uchar val)
  48          {
  49   1          uchar i;
  50   1          for(i=8;i>0;i--)
  51   1          {
  52   2              dq=1;_nop_();_nop_();
  53   2              dq=0;_nop_();_nop_();_nop_();_nop_();_nop_();
  54   2              dq=val&0x01;delay(6);
C51 COMPILER V8.02   DS                                                                    03/19/2008 11:17:45 PAGE 2   

  55   2              val=val/2;
  56   2          }
  57   1          dq=1;delay(1);    
  58   1      }
  59          uchar read_byte(void)
  60          {
  61   1          uchar i;
  62   1          uchar value=0;
  63   1          for(i=8;i>0;i--)
  64   1          {
  65   2              dq=1;_nop_();_nop_();
  66   2              value>>=1;
  67   2              dq=0;_nop_();_nop_();_nop_();_nop_();
  68   2              dq=1;_nop_();_nop_();_nop_();_nop_();
  69   2              if(dq)
  70   2              value|=0x80;
  71   2              delay(6);
  72   2          }
  73   1          dq=1;
  74   1         return(value);
  75   1      }
  76          read_temp()
  77          {
  78   1          reset();
  79   1          write_byte(0xcc);
  80   1          write_byte(0xbe);
  81   1          temp_data[0]=read_byte();
  82   1          temp_data[1]=read_byte();
  83   1          reset();
  84   1          write_byte(0xcc);
  85   1          write_byte(0x44);
  86   1      
  87   1      }
  88          work_temp()
  89          {
  90   1          uchar n=0;
  91   1          if(temp_data[1]>127)
  92   1          {
  93   2              temp_data[1]=(256-temp_data[1]);
  94   2              temp_data[0]=(256-temp_data[0]);
  95   2              n=1;
  96   2           }
  97   1              display[4]=temp_data[0]&0x0f;
  98   1              display[0]=ditab[display[4]];
  99   1              display[4]=((temp_data[0]&0xf0>>4)|((temp_data[1]&0x0f)<<4));
 100   1              display[3]=display[4]/100;
 101   1              display[1]=display[4]%100;
 102   1              display[2]=display[1]/10;
 103   1              display[1]=display[1]%10;
 104   1              if(!display[3])
 105   1              {
 106   2                  display[3]=0x0a;
 107   2                  if(!display[2])
 108   2                  {
 109   3                      display[2]=0x0a;
 110   3                  }
 111   2              }
 112   1      
 113   1         if(n)
 114   1         display[3]=0x0b;
 115   1      }
 116          void main()
C51 COMPILER V8.02   DS                                                                    03/19/2008 11:17:45 PAGE 3   

 117          {
 118   1          disdata=0xff;
 119   1          discan=0xff;
 120   1          for(h=0;h<4;h++)
 121   1          {
 122   2              display[h]=8;
 123   2          }
 124   1          reset();
 125   1          write_byte(0xcc);
 126   1          write_byte(0x44);
 127   1          for(h=0;h<500;h++)
 128   1          {scan();}
 129   1          while(1)
 130   1          {
 131   2              read_temp();
 132   2              work_temp();
 133   2              for(h=0;h<400;h++)
 134   2              {scan();}
 135   2          }
 136   1              
 137   1      }

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

⌨️ 快捷键说明

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