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

📄 lm75a.lst

📁 系统采用51单片机
💻 LST
📖 第 1 页 / 共 2 页
字号:
  23      =2  
  24      =2  #endif
  14      =1  #include "I2C.h"
   1      =2  #ifndef _I2C_H
   2      =2  #define _I2C_H
   3      =2  
   4      =2  //模拟I2C总线的引脚定义
   5      =2  
   6      =2  sbit I2C_SCL = P3^4;
   7      =2  sbit I2C_SDA = P3^5;
   8      =2  
   9      =2  
  10      =2  //定义I2C总线时钟的延时值,要根据实际情况修改,取值1~255
  11      =2  //SCL信号周期约为(I2C_DELAY_VALUE*4+15)个机器周期
  12      =2  #define I2C_DELAY_VALUE         5
  13      =2  
  14      =2  
  15      =2  //定义I2C总线停止后在下一次开始之前的等待时间,取值1~65535
  16      =2  //等待时间约为(I2C_STOP_WAIT_VALUE*8)个机器周期
  17      =2  //对于多数器件取值为1即可;但对于某些器件来说,较长的延时是必须的
  18      =2  #define I2C_STOP_WAIT_VALUE     1
  19      =2  
  20      =2  
  21      =2  //I2C总线初始化,使总线处于空闲状态
  22      =2  void I2C_Init();
  23      =2  
  24      =2  
  25      =2  //主机通过I2C总线向从机发送多个字节的数据
  26      =2  bit I2C_Puts(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat);
  27      =2  
  28      =2   bit I2C_Puts_s(unsigned char SlaveAddr, unsigned char SubAddr)           ;
  29      =2  
  30      =2  //主机通过I2C总线向从机发送1个字节的数据
  31      =2  bit I2C_Put(unsigned char SlaveAddr, unsigned char SubAddr, char dat);
  32      =2  
  33      =2  
  34      =2  //主机通过I2C总线从从机接收多个字节的数据
  35      =2  bit I2C_Gets(unsigned char SlaveAddr, unsigned char SubAddr, unsigned char Size, char *dat);
  36      =2  
  37      =2  
  38      =2  //主机通过I2C总线从从机接收1个字节的数据
  39      =2  bit I2C_Get(unsigned char SlaveAddr, unsigned char SubAddr, char *dat);
  40      =2  
  41      =2  
  42      =2  #endif
  43      =2  
  15      =1  #include "key.h"
   1      =2  #ifndef _KEY_H
   2      =2  #define _KEY_H
   3      =2  
   4      =2  //定义按键
   5      =2  sbit KEY1 = P3^2;               //按键1
   6      =2  sbit KEY2 = P3^3;               //按键2
   7      =2  
   8      =2  sbit Buzzer=P2^4;//????
   9      =2  
  10      =2  #define TemperatureMax 50
  11      =2  
  12      =2  #define TemperatureMin 5
  13      =2  
  14      =2  void INTInit();
C51 COMPILER V8.16   LM75A                                                                 10/04/2008 14:53:01 PAGE 6   

  15      =2  
  16      =2  #endif
  17      =2  
  16      =1  
  17      =1  sbit LEDCool = P2^0;    //定义LED由P0.0控制
  18      =1  sbit LEDHot = P2^1;         //定义LED由P0.0控制
  19      =1  sbit LEDSet = P2^2;     //定义LED由P0.0控制
  20      =1  
  21      =1  
  22      =1  //unsigned char Temperature_Set;//设定温度
  23      =1  
  24      =1  #endif
   2          
   3          /*
   4          函数:Delay()
   5          功能:延时1ms~65.536s
   6          参数:
   7                  t>0时,延时(t*0.001)s
   8                  t=0时,延时65.536s
   9          */
  10          void Delay(unsigned int t)
  11          {
  12   1              do
  13   1              {
  14   2                      TH0 = 0xFC;
  15   2                      TL0 = 0x66;
  16   2                      TR0 = 1;
  17   2                      while ( !TF0 );
  18   2                      TR0 = 0;
  19   2                      TF0 = 0;
  20   2              } while ( --t != 0 );
  21   1      }
  22          
  23          
  24          /*
  25          函数:SysInit()
  26          功能:系统初始化
  27          */
  28          void T0Init()
  29          {
  30   1              TMOD &= 0xF0;
  31   1              TMOD |= 0x01;   //设置T0为16位定时器
  32   1      }
  33          
  34          
  35          /*
  36          函数:LM75A_GetTemp
  37          功能:读出LM75A的温度值
  38          返回:LM75A温度寄存器的数值(乘以0.125可得到摄氏度值)
  39          */
  40          int LM75A_GetTemp()
  41          {
  42   1              unsigned char buf[2];
  43   1              int t;
  44   1              I2C_Gets(0x90,0xAA,2,buf);
  45   1              t = buf[0];
  46   1              t <<= 8;
  47   1              t += buf[1];
  48   1              t >>= 5;        //去掉无关位
  49   1              return t;
  50   1      }
  51          
C51 COMPILER V8.16   LM75A                                                                 10/04/2008 14:53:01 PAGE 7   

  52          
  53          
C51 COMPILER V8.16   LM75A                                                                 10/04/2008 14:53:01 PAGE 8   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _Delay (BEGIN)
                                           ; SOURCE LINE # 10
;---- Variable 't' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 11
0000         ?C0003:
                                           ; SOURCE LINE # 13
                                           ; SOURCE LINE # 14
0000 758CFC            MOV     TH0,#0FCH
                                           ; SOURCE LINE # 15
0003 758A66            MOV     TL0,#066H
                                           ; SOURCE LINE # 16
0006 D28C              SETB    TR0
0008         ?C0004:
                                           ; SOURCE LINE # 17
0008 308DFD            JNB     TF0,?C0004
000B         ?C0005:
                                           ; SOURCE LINE # 18
000B C28C              CLR     TR0
                                           ; SOURCE LINE # 19
000D C28D              CLR     TF0
                                           ; SOURCE LINE # 20
000F EF                MOV     A,R7
0010 1F                DEC     R7
0011 7001              JNZ     ?C0009
0013 1E                DEC     R6
0014         ?C0009:
0014 14                DEC     A
0015 4E                ORL     A,R6
0016 70E8              JNZ     ?C0003
                                           ; SOURCE LINE # 21
0018 22                RET     
             ; FUNCTION _Delay (END)

             ; FUNCTION T0Init (BEGIN)
                                           ; SOURCE LINE # 28
                                           ; SOURCE LINE # 29
                                           ; SOURCE LINE # 30
0000 5389F0            ANL     TMOD,#0F0H
                                           ; SOURCE LINE # 31
0003 438901            ORL     TMOD,#01H
                                           ; SOURCE LINE # 32
0006 22                RET     
             ; FUNCTION T0Init (END)

             ; FUNCTION LM75A_GetTemp (BEGIN)
                                           ; SOURCE LINE # 40
                                           ; SOURCE LINE # 41
                                           ; SOURCE LINE # 44
0000 750000      E     MOV     ?_I2C_Gets?BYTE+03H,#00H
0003 750000      R     MOV     ?_I2C_Gets?BYTE+04H,#HIGH buf
0006 750000      R     MOV     ?_I2C_Gets?BYTE+05H,#LOW buf
0009 7B02              MOV     R3,#02H
000B 7DAA              MOV     R5,#0AAH
000D 7F90              MOV     R7,#090H
000F 120000      E     LCALL   _I2C_Gets
                                           ; SOURCE LINE # 45
0012 AF00        R     MOV     R7,buf
;---- Variable 't' assigned to Register 'R6/R7' ----
                                           ; SOURCE LINE # 46
C51 COMPILER V8.16   LM75A                                                                 10/04/2008 14:53:01 PAGE 9   

0014 EF                MOV     A,R7
0015 7F00              MOV     R7,#00H
0017 FE                MOV     R6,A
                                           ; SOURCE LINE # 47
0018 EF                MOV     A,R7
0019 2500        R     ADD     A,buf+01H
001B FF                MOV     R7,A
001C E4                CLR     A
001D 3E                ADDC    A,R6
001E FE                MOV     R6,A
                                           ; SOURCE LINE # 48
001F EF                MOV     A,R7
0020 7805              MOV     R0,#05H
0022         ?C0010:
0022 CE                XCH     A,R6
0023 A2E7              MOV     C,ACC.7
0025 13                RRC     A
0026 CE                XCH     A,R6
0027 13                RRC     A
0028 D8F8              DJNZ    R0,?C0010
002A FF                MOV     R7,A
                                           ; SOURCE LINE # 49
                                           ; SOURCE LINE # 50
002B         ?C0008:
002B 22                RET     
             ; FUNCTION LM75A_GetTemp (END)

C51 COMPILER V8.16   LM75A                                                                 10/04/2008 14:53:01 PAGE 10  

NAME                                    CLASS   MSPACE  TYPE    OFFSET  SIZE
====                                    =====   ======  ====    ======  ====


P2 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00A0H  1
P3 . . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   00B0H  1
size_t . . . . . . . . . . . . . . . .  TYPEDEF  -----  U_INT    -----  2
T0Init . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
_I2C_Gets. . . . . . . . . . . . . . .  EXTERN   CODE   PROC     -----  -----
TMOD . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   0089H  1
TF0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008DH  1
TH0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008CH  1
TL0. . . . . . . . . . . . . . . . . .  SFR      DATA   U_CHAR   008AH  1
TR0. . . . . . . . . . . . . . . . . .  ABSBIT   -----  BIT      008CH  1
LM75A_GetTemp. . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  buf. . . . . . . . . . . . . . . . .  AUTO     DATA   ARRAY    0000H  2
  t. . . . . . . . . . . . . . . . . .  * REG *  DATA   INT      0006H  2
_Delay . . . . . . . . . . . . . . . .  PUBLIC   CODE   PROC     0000H  -----
  t. . . . . . . . . . . . . . . . . .  * REG *  DATA   U_INT    0006H  2


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