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

📄 main.lst

📁 系统采用51单片机
💻 LST
📖 第 1 页 / 共 3 页
字号:
  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   MAIN                                                                  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          extern  Temperature_Set;//设定温度
   4          int CurrentTemp;
   5          void LEDDisp(int t)
   6          {        
   7   1         if (Temperature_Set==t/8)
   8   1         { 
   9   2         LEDSet=0;
  10   2         LEDCool=1;
  11   2         LEDHot=1;
  12   2       // printf("LEDSet!");
  13   2         }
  14   1         else if (t/8>Temperature_Set)
  15   1         {
  16   2         LEDSet=1;
  17   2         LEDCool=0;
  18   2         LEDHot=1;
  19   2        // printf("LEDCool!");
  20   2         }
  21   1         else
  22   1         {
  23   2         LEDSet=1;
  24   2         LEDCool=1;
  25   2         LEDHot=0     ;
  26   2        //printf("LEDHot!");
  27   2         }    
  28   1      }
  29          
  30          /*
  31          T1的中断处理函数,实现led的定时刷新
  32          */
  33          void T1INTSVC() interrupt 3
  34          {       
  35   1               //0123456789的数码管字型数据
  36   1               code unsigned char SegTab[] = {0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F,0x00};
  37   1                                             //0    1    2     3    4    5    6    7   8    9     no            
  38   1              
  39   1           code unsigned char ComTab[] = {0x01,0x02,0x04,0x08,0x10,0x20,0x40,0x80};
  40   1           static unsigned char n = 0;
  41   1            unsigned char *Dispbuf=0;
  42   1                TR1 = 0;
  43   1                TH1 = 0xFC;
  44   1                TL1 = 0x66;
  45   1                TR1 = 1 ;
  46   1              
  47   1           Dispbuf = DispTemp(CurrentTemp);
  48   1      
  49   1         
  50   1                // seg--- P0
  51   1          //com ---P1
C51 COMPILER V8.16   MAIN                                                                  10/04/2008 14:53:01 PAGE 7   

  52   1           P1=0xff; 
  53   1               if (n==3)
  54   1               {
  55   2          //P0=(SegTab[mydata]);//dot on 
  56   2          P0=SegTab[*(Dispbuf+n)]|0x80;
  57   2               }
  58   1               else
  59   1               {
  60   2                      P0=SegTab[*(Dispbuf+n)];
  61   2               } 
  62   1               P1=~ComTab[n];
  63   1               n++;
  64   1               n &= 0x07;
  65   1              // }
  66   1      
  67   1      //      uchar Dispbuf[8]={0};
  68   1      //      disp(225);//disp temp
  69   1          
  70   1         // DispStr(Dispbuf); 
  71   1      
  72   1              LEDDisp(CurrentTemp);   
  73   1      }
  74          
  75          /*
  76          函数:SysInit()
  77          功能:系统初始化
  78          */
  79          void T1Init()
  80          {
  81   1              TMOD &= 0x0F;
  82   1              TMOD |= 0x10;   //设置T0为16位定时器
  83   1              TH1 = 0xFC;
  84   1              TL1 = 0x66;
  85   1              TR1 = 1;
  86   1              ET1 = 1;
  87   1      }
  88          
  89          void main()
  90          {
  91   1         unsigned char commend[]={0xac,0x02,0xee,0xa1,0x28,0x00,0xa2,0x23,0x00}; 
  92   1      //      EA = 0;         //禁止总中断
  93   1          //系统初始化
  94   1              T0Init();
  95   1              T1Init(); 
  96   1          //UartInit();
  97   1              //DispInit();           //数码管扫描显示初始化
  98   1              I2C_Init();             //初始化I2C总线
  99   1              INTInit();
 100   1              EA=1;
 101   1              //LED init
 102   1              LEDCool=1;
 103   1              LEDHot=1;
 104   1              LEDSet=1;
 105   1         // KEY1=1;
 106   1          //KEY2=1;
 107   1          Temperature_Set=28;
 108   1                I2C_Puts(0x90, 0xac, 1, &commend[1]);
 109   1           I2C_Puts_s(0x90, 0xee);
 110   1      //I2C_Puts(0x90, 0xee, 0, &commend[0]); 
 111   1              I2C_Puts(0x90, 0xa1, 2, &commend[4]);   
 112   1              I2C_Puts(0x90, 0xa2, 2, &commend[7]);   
 113   1              Delay(50);
C51 COMPILER V8.16   MAIN                                                                  10/04/2008 14:53:01 PAGE 8   

 114   1              CurrentTemp=LM75A_GetTemp();
 115   1              Buzzer=1;
 116   1              //printf("SysInit ok!");
 117   1      //      int t=0;
 118   1          while(1)
 119   1          {
 120   2      
 121   2        // disp(225);//disp temp
 122   2          
 123   2         // DispStr(Dispbuf); 
 124   2      
 125   2      //      LEDDisp(225) ;
 126   2                 PCON|=0x01; 
 127   2              CurrentTemp=LM75A_GetTemp();
 128   2              //printf("temp  test:%ud\n",LM75A_GetTemp());
 129   2         // printf("temp  set:%ud\n",Temperature_Set);
 130   2          //test lcd
 131   2          // seg--- P0
 132   2          //com ---P1
 133   2          //  P0=8;
 134   2          //  P1=8;
 135   2      
 136   2              //test led
 137   2              /*
 138   2              LEDCool = P2^0; //定义LED由P0.0控制
 139   2              LEDHot = P2^1;  //定义LED由P0.0控制
 140   2          LEDSet = P2^2; //定义LED由P0.0控制
 141   2              */
 142   2      
 143   2              //LEDCool=1;
 144   2              //LEDHot=0;
 145   2              //LEDSet=1;
 146   2      
 147   2          //test buzzer
 148   2          //Buzzer=~Buzzer;
 149   2              
 150   2      
 151   2          //LEDDisp(LM75A_GetTemp());
 152   2        // uchar Dispbuf[8]={0};
 153   2         // disp(Dispbuf,225);//disp temp
 154   2          
 155   2         // DispStr(Dispbuf); 
 156   2      //DispStr(buf1); 
 157   2      //      LEDDisp(225);
 158   2          //disp(LM75A_GetTemp());//disp temp 
 159   2         
 160   2              //Delay(10);
 161   2          
 162   2          //disp();//disp temp set
 163   2          }
 164   1      
 165   1      }
 166          
 167          
C51 COMPILER V8.16   MAIN                                                                  10/04/2008 14:53:01 PAGE 9   

ASSEMBLY LISTING OF GENERATED OBJECT CODE


             ; FUNCTION _LEDDisp (BEGIN)
                                           ; SOURCE LINE # 5
;---- Variable 't' assigned to Register 'R2/R3' ----
                                           ; SOURCE LINE # 6
                                           ; SOURCE LINE # 7
0000 7C00              MOV     R4,#00H
0002 7D08              MOV     R5,#08H
0004 120000      E     LCALL   ?C?SIDIV
0007 EF                MOV     A,R7
0008 B5000B      E     CJNE    A,Temperature_Set+01H,?C0001
000B EE                MOV     A,R6
000C B50007      E     CJNE    A,Temperature_Set,?C0001
                                           ; SOURCE LINE # 8
                                           ; SOURCE LINE # 9
000F C2A2              CLR     LEDSet
                                           ; SOURCE LINE # 10
0011 D2A0              SETB    LEDCool
                                           ; SOURCE LINE # 11
0013 D2A1              SETB    LEDHot
                                           ; SOURCE LINE # 13
0015 22                RET     
0016         ?C0001:
                                           ; SOURCE LINE # 14
0016 D3                SETB    C
0017 EF                MOV     A,R7
0018 9500        E     SUBB    A,Temperature_Set+01H
001A E500        E     MOV     A,Temperature_Set
001C 6480              XRL     A,#080H
001E F8                MOV     R0,A
001F EE                MOV     A,R6
0020 6480              XRL     A,#080H
0022 98                SUBB    A,R0
0023 4007              JC      ?C0003
                                           ; SOURCE LINE # 15
                                           ; SOURCE LINE # 16
0025 D2A2              SETB    LEDSet
                                           ; SOURCE LINE # 17
0027 C2A0              CLR     LEDCool
                                           ; SOURCE LINE # 18
0029 D2A1              SETB    LEDHot
                                           ; SOURCE LINE # 20
002B 22                RET     
002C         ?C0003:
                                           ; SOURCE LINE # 22
                                           ; SOURCE LINE # 23

⌨️ 快捷键说明

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