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

📄 18b20程序段.lst

📁 采用DS12C887做时钟
💻 LST
字号:
C51 COMPILER V6.10  18B20_蘝蚨_                                                            11/23/2007 12:22:00 PAGE 1   


C51 COMPILER V6.10, COMPILATION OF MODULE 18B20_蘝蚨_
OBJECT MODULE PLACED IN .\18b20程序段.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE .\18b20程序段.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          // #include <AT89X52.H> 
   2          
   3          #include <REG52.H>
   4          #include <INTRINS.h>
   5          unsigned char displaybuf[4]={0,0,0,0}; 
   6          unsigned char readdata[2]; 
   7          sbit DQ=P2^6;   //选P3.7口与DS18B20的数字信号输出端DQ相连  
   8          bit resetpulse(void)     //DS18B20初始化实现对DS18B20的复位
   9          { bit pre;
  10   1        unsigned char i; 
  11   1        DQ=0;        //发出复位脉冲,将数据线下拉480μS-960μS 
  12   1        for(i=220;i>0;i--);  //(改!!!!!!!!!!!!!!!!!!!!)
  13   1        DQ=1;         //DS18B20等待15μS-60μS 
  14   1        for(i=60;i>0;i--); 
  15   1        pre=DQ; 
  16   1        for(i=150;i>0;i--);
  17   1        return(pre);    // DS18B20返回60μS-240μS存在低脉冲,判断是否准备好接受或发送数据 
  18   1      }
  19           
  20          void writecommandtods18b20(unsigned char command)    //写时序 
  21          { 
  22   1        unsigned char i; 
  23   1        unsigned char j; 
  24   1         
  25   1        for(i=0;i<8;i++) 
  26   1          { 
  27   2            if((command & 0x01)==0)   //写0时序 
  28   2              { 
  29   3                DQ=0;        //拉低单总线至少60μS,保证DS18B20在15μS-45μS时可以正确地采样I/O总线上的低电平
  30   3                for(j=35;j>0;j--); 
  31   3                DQ=1; 
  32   3              } 
  33   2              else       //写1时序
  34   2                { 
  35   3      DQ=0;         //拉低单总线后,在15us之内就得释放
  36   3                  for(j=2;j>0;j--); 
  37   3                  DQ=1; 
  38   3                  for(j=33;j>0;j--); 
  39   3                } 
  40   2            command=_cror_(command,1);       
  41   2          } 
  42   1      } 
  43           
  44          unsigned char readdatafromds18b20(void)     //读时序   
  45          { 
  46   1        unsigned char i; 
  47   1        unsigned char j; 
  48   1        unsigned char temp; 
  49   1       
  50   1        temp=0; 
  51   1        for(i=0;i<8;i++) 
  52   1          { 
  53   2            temp=_cror_(temp,1);    
  54   2            DQ=0;                 //单总线拉低后,读时序开始 
  55   2            _nop_(); 
C51 COMPILER V6.10  18B20_蘝蚨_                                                            11/23/2007 12:22:00 PAGE 2   

  56   2            _nop_(); 
  57   2            DQ=1;                  //停止将数据线拉低,以读取数据     
  58   2            for(j=10;j>0;j--); 
  59   2            if(DQ==1) 
  60   2              { 
  61   3                temp=temp | 0x80; 
  62   3              } 
  63   2              else 
  64   2                { 
  65   3                  temp=temp | 0x00; 
  66   3                } 
  67   2            for(j=20;j>0;j--);  ////////////////////(改!!!!!!!!!!!!)
  68   2          } 
  69   1        return(temp); 
  70   1      } 
  71           


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    114    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      6    ----
   IDATA SIZE       =   ----    ----
   BIT SIZE         =   ----       1
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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