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

📄 main.lst

📁 keilc关于LM75A温度计的使用例程
💻 LST
字号:
C51 COMPILER V7.09   MAIN                                                                  11/20/2007 08:45:28 PAGE 1   


C51 COMPILER V7.09, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN main.OBJ
COMPILER INVOKED BY: d:\Keil\C51\BIN\C51.EXE main.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*
   2                  main.c
   3                  LM75A数字温度计
   4          */
   5          
   6          
   7          #include "Disp.h"
   8          #include "I2C.h"
   9          #include <reg51.h>
  10          #include <string.h>
  11          
  12          
  13          /*
  14          函数:Delay()
  15          功能:延时1ms~65.536s
  16          参数:
  17                  t>0时,延时(t*0.001)s
  18                  t=0时,延时65.536s
  19          */
  20          void Delay(unsigned int t)
  21          {
  22   1              do
  23   1              {
  24   2                      TH0 = 0xFC;
  25   2                      TL0 = 0x66;
  26   2                      TR0 = 1;
  27   2                      while ( !TF0 );
  28   2                      TR0 = 0;
  29   2                      TF0 = 0;
  30   2              } while ( --t != 0 );
  31   1      }
  32          
  33          
  34          /*
  35          函数:SysInit()
  36          功能:系统初始化
  37          */
  38          void SysInit()
  39          {
  40   1              TMOD &= 0xF0;
  41   1              TMOD |= 0x01;   //设置T0为16位定时器
  42   1              DispInit();             //数码管扫描显示初始化
  43   1              I2C_Init();             //初始化I2C总线
  44   1      }
  45          
  46          
  47          /*
  48          函数:LM75A_GetTemp
  49          功能:读出LM75A的温度值
  50          返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)
  51          */
  52          int LM75A_GetTemp()
  53          {
  54   1              unsigned char buf[2];
  55   1              int t;
C51 COMPILER V7.09   MAIN                                                                  11/20/2007 08:45:28 PAGE 2   

  56   1              I2C_Gets(0x90,0x00,2,buf);
  57   1              t = buf[0];
  58   1              t <<= 8;
  59   1              t += buf[1];
  60   1              t >>= 5;        //去掉无关位
  61   1              return t;
  62   1      }
  63          
  64          
  65          /*
  66          函数:ByteToStr()
  67          功能:字节型变量c转换为十进制字符串
  68          */
  69          void ByteToStr(unsigned char idata *s, unsigned char c)
  70          {
  71   1              code unsigned char Tab[] = {100,10};
  72   1              unsigned char i;
  73   1              unsigned char t;
  74   1              for ( i=0; i<2; i++ )
  75   1              {
  76   2                      t = c / Tab[i];
  77   2                      *s++ = '0' + t;
  78   2                      c -= t * Tab[i];
  79   2              }
  80   1              *s++ = '0' + c;
  81   1              *s = '\0';
  82   1      }
  83          
  84          
  85          /*
  86          函数:DispTemp()
  87          功能:在数码管上显示出温度值
  88          参数:
  89                  t:补码,除以8以后才是真正温度值
  90          */
  91          void DispTemp(int t)
  92          {
  93   1              code unsigned char Tab[8][4] =
  94   1              {
  95   1                      "000",
  96   1                      "125",
  97   1                      "250",
  98   1                      "375",
  99   1                      "500",
 100   1                      "625",
 101   1                      "750",
 102   1                      "875"
 103   1              };
 104   1              unsigned char buf[4];
 105   1              bit s;  //符号位
 106   1              unsigned char i;        //整数部分
 107   1              unsigned char d;        //小数部分
 108   1              unsigned char x;        //临时变量
 109   1      //分离出符号
 110   1              s = 0;
 111   1              if ( t < 0 )
 112   1              {
 113   2                      s = 1;
 114   2                      t = -t;
 115   2              }
 116   1      //分离出整数和小数部分
 117   1              i = t / 8;
C51 COMPILER V7.09   MAIN                                                                  11/20/2007 08:45:28 PAGE 3   

 118   1              d = t % 8;
 119   1      //整数部分转换成字符串
 120   1              ByteToStr(buf,i);
 121   1              x = 4 - strlen(buf);
 122   1      //清除所有显示
 123   1              DispClear();
 124   1      //显示符号
 125   1              if ( s ) DispChar(x,'-');
 126   1              x++;
 127   1      //显示整数部分
 128   1              DispStr(x,buf);
 129   1      //显示小数点
 130   1              DispDotOn(4);
 131   1      //显示小数部分
 132   1              DispStr(5,Tab[d]);
 133   1      }
 134          
 135          
 136          void main()
 137          {
 138   1              int t;
 139   1              SysInit();
 140   1              for (;;)
 141   1              {
 142   2                      t = LM75A_GetTemp();
 143   2                      DispTemp(t);
 144   2                      Delay(1000);
 145   2              }
 146   1      }
 147          


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