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

📄 main.lst

📁 基于STC单片机的发酵塔温控装置的控制代码.
💻 LST
字号:
C51 COMPILER V7.20   MAIN                                                                  07/26/2006 17:37:30 PAGE 1   


C51 COMPILER V7.20, COMPILATION OF MODULE MAIN
OBJECT MODULE PLACED IN Main.OBJ
COMPILER INVOKED BY: C:\Program Files\Keil V7.20\C51\BIN\C51.EXE Main.C BROWSE DEBUG OBJECTEXTEND

line level    source

   1          //*************************************************************************************************
   2          //  Module Name :  Main.C 
   3          //  CreateDate  :  2006-07-13 
   4          //  ModifData   :  2006-07-25 
   5          //  Description :  
   6          //  Author      :  Explorer01 
   7          //  Version     :  V1.0  
   8          //*************************************************************************************************
   9          // 
  10          //-------------------------------------------------------------------------------------------------
  11          // Includes 
  12          //-------------------------------------------------------------------------------------------------
  13          
  14          #include <STC51.H>
  15          #include "DS18B20.H"
  16          
  17          //*************************************************************************************************
  18          //*************************************************************************************************
  19          // Global VARIABLES 
  20          //*************************************************************************************************
  21          //*************************************************************************************************
  22          // 
  23          #define RS485Enable                             P1_5            // 
  24          #define LED                                             P1_7            // 
  25          
  26          //-------------------------------------------------------------------------------------------------
  27          #define TemperDevice_A                  0xB2            // 
  28          #define TemperDevice_B                  0xB3            // 
  29          #define TemperDevice_C                  0xB4            // 
  30          
  31          #define CommandOver                             0xCE            // 
  32          
  33          #define MyAddress               TemperDevice_C          // 
  34          
  35          //-------------------------------------------------------------------------------------------------
  36          // Communication 
  37          unsigned char ComDatum[6] = {0x00, 0x00, 0x00, 0x00, 0x00, '\0'};
  38          unsigned char ReceiveStep;
  39          bit FlagTemper;
  40          
  41          //-------------------------------------------------------------------------------------------------
  42          // 
  43          unsigned int TEMPERATURE[3];
  44          unsigned char Count, Filter;
  45          bit TemperOver;
  46          
  47          //*************************************************************************************************
  48          //*************************************************************************************************
  49          // Function PROTOTYPES
  50          //*************************************************************************************************
  51          //*************************************************************************************************
  52          // 
  53          //=================================================================================================
  54          //                                                                    Delay Procedure 
  55          //=================================================================================================
C51 COMPILER V7.20   MAIN                                                                  07/26/2006 17:37:30 PAGE 2   

  56          // 1 us 延时子程序, Fosc =12MHz 
  57          void mDelayuS( unsigned int usecond )
  58          {
  59   1              unsigned char i;
  60   1      
  61   1              while( usecond-- )
  62   1              {
  63   2              for( i=0; i<5; i++ ) {;} 
  64   2              }
  65   1      }
  66          
  67          //-------------------------------------------------------------------------------------------------
  68          // 1 ms 延时子程序, Fosc =12MHz 
  69          void mDelaymS( unsigned int msecond )
  70          {
  71   1              unsigned char i,j;
  72   1      
  73   1              while( msecond-- )
  74   1              {
  75   2              for( j=0; j<5; j++ )
  76   2                      for( i=0; i<125; i++) {;} 
  77   2              }
  78   1      }
  79          
  80          //=================================================================================================
  81          //=================================================================================================
  82          // UART Interrupt Procedure 
  83          //=================================================================================================
  84          //=================================================================================================
  85          // 
  86          /*
  87          //-------------------------------------------------------------------------------------------------
  88          // UART Send Byte 
  89          void UARTSendByte( unsigned char datum )
  90          {
  91                  ES = 0;
  92                  
  93                  TI = 0;
  94                  SBUF = datum;
  95                  while( TI == 0 ) ;
  96                  
  97                  ES = 1;
  98          }
  99          */
 100          //-------------------------------------------------------------------------------------------------
 101          // UART Send String 
 102          void UARTSendString( unsigned char *p )
 103          {
 104   1              unsigned char i;
 105   1      
 106   1              ES = 0;
 107   1              RS485Enable = 1;                        // Enable Send 
 108   1              LED                     = 1;                    // Enable 
 109   1      
 110   1              for( i=0; i<5; i++ )
 111   1              {
 112   2                      SBUF  = *p++; 
 113   2                  while ( TI == 0 ) ;            // Waiting...
 114   2              TI    = 0;
 115   2                      mDelayuS( 10 );
 116   2              }
 117   1              
C51 COMPILER V7.20   MAIN                                                                  07/26/2006 17:37:30 PAGE 3   

 118   1              RS485Enable = 0;                        // Disable Send 
 119   1              LED                     = 0;                    // Disable 
 120   1              ES = 1;
 121   1      }
 122          
 123          //=================================================================================================
 124          // 
 125          void UART_ISR( void ) interrupt 4 
 126          {
 127   1              unsigned char datum;
 128   1      
 129   1              RI = 0;
 130   1              datum = SBUF;
 131   1              
 132   1              switch( ReceiveStep )
 133   1              {
 134   2                      // Receive Start! 
 135   2                      case 0: if( datum == 0xAA ){ ReceiveStep = 1; FlagTemper = 0; } break; 
 136   2                      // MSB 
 137   2                      case 1: if( datum == 0x55 ) ReceiveStep = 2; break; 
 138   2                      // LSB 
 139   2                      case 2:  if( datum == MyAddress ) ReceiveStep = 3; break; 
 140   2                      // Receive over! 
 141   2                      case 3: if( datum == CommandOver ){ ReceiveStep = 0; FlagTemper = 1; } break; 
 142   2                      
 143   2                      default: ReceiveStep = 0; break;
 144   2              }
 145   1      }
 146          
 147          //=================================================================================================
 148          //=================================================================================================
 149          // Timer0 Interrupt Procedure 
 150          //=================================================================================================
 151          //=================================================================================================
 152          // Fosc = 11.0592MHz 
 153          void Timer0_ISR( void ) interrupt 1 
 154          {
 155   1              TH0 = 0x04; TL0 = 0;            // 70ms 
 156   1              
 157   1              Count++;
 158   1              if( Count > 11 )                        // 70ms*11 = 770ms 
 159   1              {
 160   2                      Count = 0;
 161   2                      DS18B20Temperature( );
 162   2                      TEMPERATURE[ Filter ] = TEMPER;
 163   2                      Filter++;
 164   2                      if( Filter > 2 ){ Filter = 0; TemperOver = 1; }
 165   2              }
 166   1      }
 167          
 168          //=================================================================================================
 169          //                                                                      Control Procedure:
 170          //=================================================================================================
 171          // 
 172          void Control( void )
 173          {
 174   1              unsigned char i, CRC;
 175   1              unsigned int Temperature, temp;
 176   1              
 177   1              if( FlagTemper )
 178   1              {
 179   2                      TR0 = 0; ET0 = 0;
C51 COMPILER V7.20   MAIN                                                                  07/26/2006 17:37:30 PAGE 4   

 180   2                      FlagTemper = 0; 
 181   2                      DS18B20Temperature( );
 182   2                      
 183   2                      TemperOver = 0;
 184   2                      Count = 0; Filter = 0;
 185   2                      TEMPER = 0; 
 186   2                      for( i=0; i<3; i++ ) TEMPERATURE[i] = 0;
 187   2                      
 188   2                      TH0 = 0x04; TL0 = 0;            // 70ms 
 189   2                      TR0 = 1;                                        // Start Temperature get 
 190   2                      ET0 = 1;
 191   2              }
 192   1      
 193   1              if( TemperOver )
 194   1              {
 195   2                      TemperOver = 0;
 196   2                      ET0 = 0;
 197   2                      TR0 = 0;                // Temperature get Over 
 198   2      
 199   2                      if( TEMPERATURE[0] > TEMPERATURE[1] ){ temp = TEMPERATURE[0]; TEMPERATURE[0] = TEMPERATURE[1]; TEMPERATU
             -RE[1] = temp; }
 200   2                      if( TEMPERATURE[0] > TEMPERATURE[2] ){ temp = TEMPERATURE[0]; TEMPERATURE[0] = TEMPERATURE[2]; TEMPERATU
             -RE[2] = temp; }
 201   2                      if( TEMPERATURE[1] > TEMPERATURE[2] ){ temp = TEMPERATURE[1]; TEMPERATURE[1] = TEMPERATURE[2]; TEMPERATU
             -RE[2] = temp; }
 202   2                      
 203   2                      Temperature = TEMPERATURE[1]*10/16;
 204   2                      
 205   2                      ComDatum[0] = MyAddress; 
 206   2                      ComDatum[1] = (unsigned char)(Temperature >> 8);        // MSB 
 207   2                      ComDatum[2] = (unsigned char)Temperature;                       // LSB 
 208   2                      ComDatum[3] = CommandOver; 
 209   2      
 210   2                      // CRC 
 211   2                      CRC = 0;
 212   2                      for( i=0; i<4; i++ ) CRC += ComDatum[i]; 
 213   2                      ComDatum[4] = CRC;
 214   2                      ComDatum[5] = '\0';
 215   2                      
 216   2                      UARTSendString( ComDatum );
 217   2              }
 218   1      }
 219          
 220          //=================================================================================================
 221          //=================================================================================================
 222          // Main Procedure 
 223          //=================================================================================================
 224          //=================================================================================================
 225          // System initialization 
 226          void Initialization( void )
 227          {
 228   1              mDelaymS( 100 );
 229   1              
 230   1              // Port configuration 
 231   1              P1M0=0x00; 
 232   1              P1M1=0x80; 
 233   1              
 234   1              P3M0=0x00;
 235   1              P3M1=0x00;
 236   1              
 237   1              // Timer Initialization 
 238   1              TMOD = 0x21; 
C51 COMPILER V7.20   MAIN                                                                  07/26/2006 17:37:30 PAGE 5   

 239   1      //      TH1 = 0xFD; TL1 = 0xFD;         // 9600 
 240   1              TH1 = 0xFA; TL1 = 0xFA;         // 4800 
 241   1              TH0 = 0x04; TL0 = 0;
 242   1              
 243   1              // UART Initialization 
 244   1              SCON = 0x50;
 245   1              PS = 1;
 246   1              EA = 1; ES = 1; ET0 = 0;
 247   1              TR1 = 1; TR0 = 1;
 248   1              
 249   1              // Extern 
 250   1              RS485Enable = 0;                        // Disable Send 
 251   1              LED                     = 0;                    // Disable 
 252   1              
 253   1              ReceiveStep = 0;
 254   1              Count = 0;
 255   1      }
 256          
 257          //-------------------------------------------------------------------------------------------------
 258          // Main 
 259          void main( void )
 260          {
 261   1              Initialization( );
 262   1      
 263   1              DS18B20Temperature( );
 264   1              
 265   1              while( 1 )
 266   1              {
 267   2                      Control( );
 268   2              }
 269   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =    572    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =   ----    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     15       6
   IDATA SIZE       =   ----    ----
   BIT SIZE         =      2    ----
END OF MODULE INFORMATION.


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

⌨️ 快捷键说明

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