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

📄 ds18b20.lst

📁 Ds18b20.c 带Proteus,方便大家学习!!!
💻 LST
字号:
C51 COMPILER V8.02   DS18B20                                                               02/16/2009 21:53:25 PAGE 1   


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

line level    source

   1          #include<reg51.h>
   2          #include<uint.h>
   3          #include<intrins.h>
   4          #include<led0_9.h>
   5          
   6          sbit dq=P2^0;
   7          uchar ok=0,k,temp[3]={0x00,0x00,0x00};
   8          
   9          void time1();
  10          void write(uchar dat);
  11          uchar read();
  12          void delay_us(uint tt1);
  13          void display(uchar aa,uchar bb);
  14          
  15          void main()
  16          {
  17   1       TMOD=0X10;
  18   1       TH1=0XFC;
  19   1       TL1=0X18;
  20   1       EA=1;
  21   1       ET1=1;
  22   1       TR1=1;
  23   1         
  24   1         dq=1;                          //初始化
  25   1        _nop_();
  26   1        dq=0;
  27   1        delay_us(52);
  28   1        dq=1;
  29   1        delay_us(5);
  30   1        delay_us(25);
  31   1      
  32   1           dq=1;                 //跳过读序列号
  33   1        _nop_();                 
  34   1        dq=0;
  35   1        delay_us(52);
  36   1        dq=1;
  37   1        delay_us(5);
  38   1        delay_us(25);
  39   1         write(0xcc);   //启动
  40   1         write(0x44);
  41   1      
  42   1       while(1);
  43   1      }
  44          
  45          
  46          void time1() interrupt 3
  47          {
  48   1       dq=1;                   //读
  49   1        _nop_();
  50   1        dq=0;
  51   1        delay_us(52);
  52   1        dq=1;
  53   1        delay_us(5);
  54   1        delay_us(25); 
  55   1        write(0xcc);
C51 COMPILER V8.02   DS18B20                                                               02/16/2009 21:53:25 PAGE 2   

  56   1        write(0xbe);
  57   1        
  58   1        temp[0]=read();
  59   1        temp[1]=read();
  60   1        display(temp[0],temp[1]);
  61   1      
  62   1        dq=1;                   //再初始化
  63   1        _nop_();
  64   1        dq=0;
  65   1        delay_us(52);
  66   1        dq=1;
  67   1        delay_us(5);
  68   1        delay_us(25);
  69   1      
  70   1         write(0xcc); //再启动
  71   1         write(0x44);
  72   1      }
  73          
  74          void write(uchar dat)
  75          {
  76   1       uchar i=0;
  77   1       for(i=0;i<8;i++)
  78   1       {
  79   2        dq=0;
  80   2        dq=dat&0x01;
  81   2        delay_us(5);
  82   2        dq=1;
  83   2        dat=dat>>1; 
  84   2       }
  85   1      }
  86          
  87          uchar read()
  88          {
  89   1       uchar i=0,date=0;
  90   1       for(i=0;i<8;i++)
  91   1       {
  92   2        dq=0;
  93   2        date=date>>1;
  94   2        dq=1;
  95   2        if(dq==1)date=date|0x80;
  96   2         delay_us(5);
  97   2       }
  98   1       return date;
  99   1      }
 100          
 101          void delay_us(uint tt1)
 102          {
 103   1       while(tt1--);
 104   1      }
 105          
 106          void display(uchar aa,uchar bb)
 107          {
 108   1       uchar a=0,b=0,c=0,d=0;
 109   1       ulong num;
 110   1       num=bb;
 111   1       num=num<<8;
 112   1       num=num|aa;
 113   1       num=num>>4;
 114   1       if(bb<0x80)
 115   1       {
 116   2       num=num*10;
 117   2       a=num%10;
C51 COMPILER V8.02   DS18B20                                                               02/16/2009 21:53:25 PAGE 3   

 118   2       num=(num-a)/10;
 119   2       b=num%10;
 120   2       num=(num-b)/10;
 121   2       c=num%10;
 122   2       num=(num-c)/10;
 123   2       d=num%10;
 124   2        P3=0x00;
 125   2       P1=ledcc[a];
 126   2       P3=0x01;
 127   2       P1=(ledcc[b]|0x80);
 128   2       P3=0x02;
 129   2       P1=ledcc[c];
 130   2       P3=0x03;
 131   2       P1=ledcc[d];
 132   2       }else
 133   1       {
 134   2      
 135   2       num=~(num-1);
 136   2       num=num&0x000fff;
 137   2       num=num*10;
 138   2       a=num%10;
 139   2       num=(num-a)/10;
 140   2       b=num%10;
 141   2       num=(num-b)/10;
 142   2       c=num%10;
 143   2       if(c)
 144   2       {
 145   3       P3=0x00;
 146   3       P1=ledcc[a];
 147   3       P3=0x01;
 148   3       P1=(ledcc[b]|0x80);
 149   3       P3=0x02;
 150   3       P1=ledcc[c];
 151   3       P3=0x03;
 152   3       P1=0x40;
 153   3       }else
 154   2       {
 155   3         P3=0x00;
 156   3       P1=ledcc[a];
 157   3       P3=0x01;
 158   3       P1=(ledcc[b]|0x80);
 159   3       P3=0x02;
 160   3       P1=0x40;
 161   3       P3=0x03;
 162   3       P1=0x00;
 163   3       }
 164   2       }
 165   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    876    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     45      11
   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 + -