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

📄 readtemp.lst

📁 绝对原创
💻 LST
📖 第 1 页 / 共 2 页
字号:
             -****
 163          *       函数名称 :
 164          *       功能描述 :
 165          *       实际参数 :
 166          *       返回值   :
 167          *       说明     :      读出MAX6675温度数据
 168          **********************************************************************************************************
C51 COMPILER V7.07   READTEMP                                                              08/26/2006 11:15:05 PAGE 4   

             -****/
 169                                           
 170              void ReadTempDat(void)
 171                  {  
 172   1              uchar p2_dat ;
 173   1                      uint temp_dat0,temp_dat1 ;
 174   1              
 175   1                      CS0 = 0 ;                                                       // 停止第一个MAX6675转换 
 176   1                      temp_dat0 = Read_Max6675() ;
 177   1                      CS0 = 1 ;
 178   1                      _nop_() ;
 179   1      
 180   1                      CS1 = 0 ;                                                                               // 停止第二组MAX6675转换 
 181   1                      temp_dat1 = Read_Max6675() ;
 182   1      
 183   1                  CS0 = 0 ;                                                                           // 两路终止转换 
 184   1      
 185   1                      All_Temp0[Road_Dat][Read_Number] = temp_dat0 >> 1 ;     // 第一个MAX6675温度值(从MAX6675读出来的温度是带小数
             -点2位和1位断线标志的)
 186   1                      All_Temp1[Road_Dat][Read_Number] = temp_dat1 >> 1 ;     // 第二个MAX6675温度值  
 187   1      
 188   1                      Relay_Number++ ;                                                                // 每通一次继电器读温度次数(现在规定位2次)      
 189   1                      if (Relay_Number > 1)
 190   1                      {
 191   2                              Relay_Number = CLEAR ;                                          // 清读温度次数
 192   2      
 193   2                              p2_dat = P2 & 0x7c ;                                            // 判断现在接通的是哪个继电器(用第二组温度判断)
 194   2      
 195   2                              P2 &= 0x03 ;                                                            // 释放所有继电器
 196   2                              P1 &= 0xf0 ;
 197   2      
 198   2                              if (Read_Number >= 5)                                           // 读完6次温度新值(平均值)
 199   2                              {
 200   3                                      Fact_Temp[Road_Dat] = FactTempDat(&All_Temp0[Road_Dat][0],12) ; 
 201   3                                      if (Road_AdhystSign[Road_Dat])
 202   3                                      {
 203   4                                              if (Fact_Temp[Road_Dat] > Road_AdjustDat[Road_Dat])                                     // 当前值大于修正值
 204   4                                                      Fact_Temp[Road_Dat] -= Road_AdjustDat[Road_Dat] ;
 205   4                                              else
 206   4                                                      Fact_Temp[Road_Dat] = 0 ;
 207   4                                      }
 208   3                                      else
 209   3                                              Fact_Temp[Road_Dat] += Road_AdjustDat[Road_Dat] ;
 210   3                                                                      
 211   3                                      Fact_Temp[Road_Dat + 5] = FactTempDat(&All_Temp1[Road_Dat][0],12) ;
 212   3                                      if (Road_AdhystSign[Road_Dat + 5])
 213   3                                      {
 214   4                                              if (Fact_Temp[Road_Dat + 5] > Road_AdjustDat[Road_Dat + 5])                     // 当前值大于修正值
 215   4                                                      Fact_Temp[Road_Dat + 5] -= Road_AdjustDat[Road_Dat + 5] ;
 216   4                                              else
 217   4                                                      Fact_Temp[Road_Dat + 5] = 0 ;
 218   4                                      }
 219   3                                      else
 220   3                                              Fact_Temp[Road_Dat + 5] += Road_AdjustDat[Road_Dat + 5] ;
 221   3                                      
 222   3                                      if (Road_Dat == 4)
 223   3                                      {
 224   4                                              Send_DatBag[5] = 0xd0 ;                                                         // 数据代码
 225   4                                              Send_DatBag[4] = 0x00 ;
 226   4                                              Send_DatBag[3] = BCD((SiteFack_Temp >> 2)) ;    // 有两位是小数点                               
 227   4                                              Send_DatBag[2] = Send_DatBag[4] ;                                       // 重发数据包
 228   4                                              Send_DatBag[1] = Send_DatBag[3] ;                               
C51 COMPILER V7.07   READTEMP                                                              08/26/2006 11:15:05 PAGE 5   

 229   4                                              Send_DatBag[0] = 0xff ;                                                         // 结束标志
 230   4      
 231   4                                              Breed_Dat = 1 ;                                                                         // 发送下一组数据
 232   4                                              Send_Counter = 6 ;                                                                      // 一帧6个数据                                  
 233   4                                              SBUF = Send_DatBag[Send_Counter - 1] ;          
 234   4                                              Send_Counter-- ;
 235   4                                      }
 236   3                              }
 237   2              
 238   2                              NewTemp(temp_dat0,temp_dat1) ;                                  // 读完两次后求瞬间值,在控温里要用来比较
 239   2                                                                                                                              // 延时,为隔离相邻两段温度干扰  
 240   2                              switch(p2_dat)
 241   2                              {
 242   3                                      case 0x40:                                                      
 243   3                                                              Road_Dat = 1 ;                                  // 路数值,(在储存温度值用)      
 244   3                                                              Temp_Relay1     = ON ;                          // 接通第下一个继电器   
 245   3                                                              Temp_Relay6 = ON ;
 246   3                                                              break ;
 247   3                      
 248   3                                      case 0x20:                                              
 249   3                                                              Road_Dat = 2 ;                                  // 路数值,(在储存温度值用)      
 250   3                                                              Temp_Relay2     = ON ;                          // 接通第下一个继电器   
 251   3                                                              Temp_Relay7 = ON ;
 252   3                                                              break ;
 253   3                                      
 254   3                                      case 0x10:
 255   3                                                      
 256   3                                                              Road_Dat = 3 ;                                  // 路数值,(在储存温度值用)      
 257   3                                                              Temp_Relay3     = ON ;                          // 接通第下一个继电器   
 258   3                                                              Temp_Relay8 = ON ;
 259   3                                                              break ;
 260   3                      
 261   3                                      case 0x08:                                              
 262   3                                                              Road_Dat = 4 ;                                  // 路数值,(在储存温度值用)
 263   3                                                              Temp_Relay4     = ON ;                          // 接通第下一个继电器   
 264   3                                                              Temp_Relay9 = ON ;
 265   3                                                              break ;
 266   3                      
 267   3                                      case 0x04:                                              
 268   3                                                              Road_Dat = 0 ;                                  // 路数值,(在储存温度值用)
 269   3                                                              Temp_Relay0     = ON ;                          // 接通第下一个继电器   
 270   3                                                              Temp_Relay5 = ON ;      
 271   3      
 272   3                                                              Old_Read_Number += 2 ;  
 273   3                                                              
 274   3                                                              if (Old_Read_Number >= 6)
 275   3                                                                      Old_Read_Number = 0 ;
 276   3                                                      
 277   3                                                              break ;
 278   3                                      default:
 279   3                                                              break ;
 280   3                              }
 281   2                              Read_Number = Old_Read_Number ;                         // 为本下一次
 282   2                      }
 283   1                      else 
 284   1                      {
 285   2                              Read_Number++ ;
 286   2                      }       
 287   1              }
 288          
 289          /*********************************************************************************************************
             -****
C51 COMPILER V7.07   READTEMP                                                              08/26/2006 11:15:05 PAGE 6   

 290          *       函数名称 :
 291          *       功能描述 :
 292          *       实际参数 :
 293          *       返回值   :
 294          *       说明     :      处理温度数据
 295          **********************************************************************************************************
             -****/
 296          
 297                  void NeatenTemp(void)
 298                  {
 299   1                      if (Int0_Time >= READ_TIME)                                             // 4 X 0.055 = 0.22s
 300   1                      {
 301   2                              Int0_Time = CLEAR ;                                                     // 清读MAX6675定时时间中断标志
 302   2                              ReadTempDat() ;                                                         // 读温度数据
 303   2      
 304   2                              CS0 = ON ;                                      /* 进行温度转换 */
 305   2                              CS1 = ON ;
 306   2                              TR0 = ON ;                                                                      // 开读MAX6675定时器
 307   2                      }
 308   1              }  
 309          
 310          /*********************************************************************************************************
             -****
 311          *       函数名称 :
 312          *       功能描述 :
 313          *       实际参数 :
 314          *       返回值   :
 315          *       说明     :
 316          **********************************************************************************************************
             -****/
 317                          
 318             


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