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

📄 18b20.lst

📁 智能家居系统。。。包括PS2键盘
💻 LST
字号:
C51 COMPILER V7.06   18B20                                                                 05/18/2008 14:29:17 PAGE 1   


C51 COMPILER V7.06, COMPILATION OF MODULE 18B20
OBJECT MODULE PLACED IN 18b20.OBJ
COMPILER INVOKED BY: E:\My Electronic\Tools\Design tools\keil7.06\C51\BIN\C51.EXE 18b20.c BROWSE DEBUG OBJECTEXTEND

stmt level    source

   1          #include <REG52.H>
   2          #include <intrins.h>
   3          
   4          #define uint unsigned int
   5          #define  uchar unsigned char
   6          
   7          sbit DQ=P2^4;
   8          
   9          //extern uchar  Ir_Ok;
  10          //extern uchar read_flagg;
  11          extern uchar TT_Ok;
  12          uchar TT_Ok;
  13          extern uchar inbuf1[];
  14          
  15          void delay(unsigned char useconds)
  16          {
  17   1      for(;useconds>0;useconds--);
  18   1      }
  19          
  20          unsigned char _18b20_init(void)
  21          {
  22   1        unsigned char presence;
  23   1        EA=0;
  24   1        DQ = 0;        //拉低总线
  25   1        delay(29);    // 保持 480us
  26   1        DQ = 1;       // 释放总线
  27   1        delay(3);     // 等待回复
  28   1        presence = DQ; // 读取信号
  29   1        delay(25);    // 等待结束信号
  30   1        return(presence); // 返回   0:正常 1:不存在
  31   1      }     
  32          
  33          //从 1-wire 总线上读取一个字节
  34          unsigned char _18b20_read(void)
  35          {
  36   1        unsigned char i;
  37   1        unsigned char value = 0;
  38   1        for (i=8;i>0;i--)
  39   1        {
  40   2          value>>=1;
  41   2          DQ = 0; 
  42   2              _nop_();
  43   2              _nop_();
  44   2              _nop_();
  45   2          DQ = 1;
  46   2          delay(1);  
  47   2          if(DQ)value|=0x80;
  48   2          delay(6); 
  49   2        }
  50   1        return(value);
  51   1      }
  52          
  53          //向 1-WIRE 总线上写一个字节
  54          void _18b20_write(char val)
  55          {
C51 COMPILER V7.06   18B20                                                                 05/18/2008 14:29:17 PAGE 2   

  56   1        unsigned char i;
  57   1        EA=0;
  58   1        for (i=8; i>0; i--) // 一次写一位
  59   1        {
  60   2          DQ = 0; // 
  61   2              _nop_();
  62   2              _nop_();
  63   2              _nop_();
  64   2          DQ = val&0x01;
  65   2          delay(5); // 
  66   2          DQ = 1;
  67   2          val=val/2;
  68   2        }
  69   1        //EA=1;
  70   1        delay(5);
  71   1      }
  72          
  73          //读取和显示温度
  74          void Read_Temperature(unsigned char *p)
  75          {
  76   1        unsigned char i;
  77   1        unsigned char  x;
  78   1        unsigned char th,tl;
  79   1        TT_Ok=0;                      //温度读取开始
  80   1        for(i=0;i<10;i++)
  81   1        ;
  82   1        _18b20_init();
  83   1        for(i=0;i<10;i++)
  84   1        ;
  85   1        _18b20_write(0xCC); // Skip ROM
  86   1        _18b20_write(0x44); // 转换温度
  87   1        for(i=0;i<254;i++)
  88   1        ;
  89   1        _18b20_init();
  90   1        for(i=0;i<10;i++)
  91   1        ;
  92   1        _18b20_write(0xCC); //Skip ROM
  93   1        _18b20_write(0xbe); // 读取寄存器
  94   1        tl=_18b20_read();//读出温度低8位
  95   1        th=_18b20_read();//读出温度高8位
  96   1        tl &= 0xf0;
  97   1        tl >>= 4;
  98   1        *(p+3)=tl/2+'0';
  99   1        *(p+2)='.';
 100   1        x=((th&0x07)<<4)+tl;
 101   1        *p=x/10+'0';//显示温度十位数
 102   1        *(p+1)=x%10+'0';//显示温度个位数
 103   1        TT_Ok=1;                      //温度读取完毕
 104   1        EA=1;
 105   1      }
 106          


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

C51 COMPILER V7.06   18B20                                                                 05/18/2008 14:29:17 PAGE 3   


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

⌨️ 快捷键说明

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