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

📄 tem_ctrl.lst

📁 自己用51单片机做得温度控制系统
💻 LST
字号:
C51 COMPILER V8.15   TEM_CTRL                                                              03/21/2009 11:30:42 PAGE 1   


C51 COMPILER V8.15, COMPILATION OF MODULE TEM_CTRL
OBJECT MODULE PLACED IN tem_ctrl.OBJ
COMPILER INVOKED BY: C:\Keil\C51\BIN\C51.EXE tem_ctrl.c BROWSE DEBUG OBJECTEXTEND

line level    source

   1          /*****************************************/
   2          /* Copyright (c) 2009, 电子信息工程学院  */
   3          /* All rights reserved.                  */
   4          /* 作    者:王明兴                                              */
   5          /*****************************************/
   6          
   7          #include "main.h"
   8          #include "DS18B20.h"
   9          #include "MAX7219.h"
  10          
  11          extern uint data Disp_Count ;
  12          extern uint data Temp_Count ;
  13          extern uint data Temp_Read;
  14          extern uchar data Read_flag;
  15          extern uchar data Key_Start_flag ;
  16          extern uchar data Key_Setup_flag ;
  17          extern uchar data Key_Up_flag ;
  18          extern uchar data Key_Down_flag ;
  19          extern uchar data Key_Enter_flag ;
  20          extern uchar tplsb,tpmsb;               // 温度值低位、高位字节
  21          extern uchar data Buffer0[4];
  22          extern uchar data Buffer1[4];
  23          extern char data Cur_Temp;
  24          extern uchar DisBuffer[8];    // 显示缓存区
  25          
  26          void Da_Trans(void)                       //温度传感器数据处理
  27          {
  28   1              uchar n = 0;
  29   1              if(tpmsb & 0x80)
  30   1              {
  31   2                      n = 1;
  32   2                      tpmsb = ~tpmsb;
  33   2                      tplsb = ~tplsb + 1;
  34   2              }
  35   1              Cur_Temp =      (tpmsb << 4) | (tplsb >> 4);
  36   1              Buffer0[3] = ((tplsb & 0x0f) * 625 + 500) / 1000;
  37   1              Buffer0[2] = Cur_Temp % 10 | 0x80;
  38   1              Buffer0[1] = (Cur_Temp % 100) / 10;
  39   1              Buffer0[0] = Cur_Temp / 100;
  40   1              if(n)
  41   1              {
  42   2                      if(Buffer0[1])
  43   2                              Buffer0[0] = 0x0a;
  44   2                      else 
  45   2                      {
  46   3                              Buffer0[0] = 0x0f;
  47   3                              Buffer0[1] = 0x0a;
  48   3                      }
  49   2              }
  50   1              else
  51   1                      if(Buffer0[0] == 0)
  52   1                      {
  53   2                              Buffer0[0] = 0x0f;
  54   2                              if(Buffer0[1] == 0)
  55   2                                      Buffer0[1] = 0x0f;
C51 COMPILER V8.15   TEM_CTRL                                                              03/21/2009 11:30:42 PAGE 2   

  56   2                      }
  57   1      }
  58          
  59          void Display(uchar *addr)                       //显示
  60          {
  61   1              uchar i;
  62   1              for(i = 0;i < 4;i ++)
  63   1                      DisBuffer[i]= *addr ++;
  64   1              WriteWord (Digit0,DisBuffer[0]);
  65   1          WriteWord (Digit1,DisBuffer[1]);
  66   1          WriteWord (Digit2,DisBuffer[2]);
  67   1          WriteWord (Digit3,DisBuffer[3]);
  68   1      }
  69          
  70          void Da_Tran(uchar temp)                          //设置模式数据处理
  71          {
  72   1              Buffer1[3] = 0x00;
  73   1              Buffer1[2] = (temp % 10) | 0x80;
  74   1              Buffer1[1] = (temp % 100) / 10;
  75   1              Buffer1[0] = temp / 100;
  76   1              if(Buffer1[0] == 0)
  77   1              {
  78   2                      Buffer1[0] = 0x0f;
  79   2                      if(Buffer1[1] == 0)
  80   2                              Buffer1[1] = 0x0f;
  81   2              }
  82   1      }
  83          
  84          void Key_Process()                                               //键盘处理
  85          {
  86   1              uchar Current_Key_Value,Last_Key_Value;
  87   1              if((P1 >> 3) != 0x1f)
  88   1              {
  89   2                      Last_Key_Value = P1 >> 3;
  90   2                      delay(100);
  91   2                      Current_Key_Value = P1 >> 3;
  92   2                      if(Current_Key_Value == Last_Key_Value)
  93   2                      {
  94   3                              switch(Current_Key_Value)
  95   3                              {
  96   4                                      case 0x1e :
  97   4                                              Key_Start_flag = !Key_Start_flag;
  98   4                                              if(Key_Start_flag == 0)
  99   4                                              {
 100   5                                                      Key_Setup_flag = 0;
 101   5                                                      LED_NORMAL = 1;
 102   5                                                      LED_WARING = 1;
 103   5                                                      TEMP_CTRL = 1;
 104   5                                              }
 105   4                                              break;
 106   4                                      case 0x1d :
 107   4                                              Key_Setup_flag = 1;
 108   4                                              break;
 109   4                                      case 0x1b :
 110   4                                              Key_Up_flag = 1;
 111   4                                              break;
 112   4                                      case 0x17 :
 113   4                                              Key_Down_flag = 1;
 114   4                                              break;
 115   4                                      case 0x0f :
 116   4                                              Key_Enter_flag = 1;
 117   4                                              break;
C51 COMPILER V8.15   TEM_CTRL                                                              03/21/2009 11:30:42 PAGE 3   

 118   4                              }
 119   3                      }
 120   2              }
 121   1      }
 122          
 123          void T0_ISR() interrupt 1 using 1                          //T0中断服务程序
 124          {
 125   1              static uint counter = 0;
 126   1              TH0 = 0xf0;
 127   1              TL0 = 0xd8;
 128   1              counter ++;
 129   1              if(counter == 200)
 130   1              {
 131   2                      counter = 0;
 132   2                      LED_STATE = !LED_STATE;
 133   2              }
 134   1      }
 135          
 136          void T1_ISR() interrupt 3 using 2                        //T1中断服务程序
 137          {
 138   1              TH1 = 0xf0;
 139   1              TL1 = 0xd8;
 140   1              Disp_Count ++;
 141   1              Temp_Count ++;
 142   1              if(Read_flag)
 143   1                      Temp_Read ++;
 144   1      }
 145                  
 146                  
 147                                          
 148          
 149          
 150                  
 151                                          
 152          
 153          
 154          
 155                  


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