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

📄 leakage.lst

📁 基于 PLC935单片机的三相漏电检测系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 253   3                                  sampleTimeFlag = FALSE;
 254   3                               }                                                                      
 255   2      
 256   2                      else if(writeEEPROMBufFullFlag)
 257   2                               {
 258   3                                  if(EEPROMWrAddr<=0xFFFF)
 259   3                                      {
 260   4                                         if(ISendStr(0xA0, EEPROMWrAddr, writeEEPROMBuf, EEPROM_PAGE_SIZE));
 261   4                                                EEPROMWrAddr += 128;
 262   4                                      }
 263   3                                  else
 264   3                                      {
 265   4                                         EEPROMWrAddr = EEPROM_ORG_ADDR;
 266   4                                         if(ISendStr(0xA0, EEPROMWrAddr, writeEEPROMBuf, EEPROM_PAGE_SIZE));
 267   4                                                EEPROMWrAddr += 128;           
 268   4                                      }
 269   3                                  writeEEPROMBufFullFlag = FALSE;
 270   3                                }
 271   2                      else if(leakageCurrentMsg[1]>=recPresetData[1])
 272   2                               {
 273   3                                  leakageCurrentMsg[0] = 0x01;
 274   3                               
 275   3                                  lightControl = TRUE ; 
 276   3                               
 277   3                                  switch(recPresetData[0])
 278   3                              {
 279   4                                 case SWITCH_OFF:
 280   4                                        if(leakageCurrentMsg[1]>=recPresetData[1])
 281   4                                               powerSwitchControl = OPEN_SWITCH;                      //断开闸刀
 282   4                                        else
 283   4                                               powerSwitchControl = CLOSE_SWITCH;                 //不断开闸刀
 284   4                                        break;
 285   4                           
 286   4                                            case NO_SWITCH_OFF:
 287   4                                           powerSwitchControl = CLOSE_SWITCH;             //不断开闸刀
 288   4                                        break;
 289   4      
 290   4                                    case DELAY_SWITCH_OFF:                            //延时断开闸刀
 291   4                                           if(leakageCurrentMsg[1]>=recPresetData[1])
 292   4                                           {                          
 293   5                                                      delayCount = 0;
 294   5                                              delaySwitchFlag = TRUE;
 295   5                                          
 296   5                                                   }
 297   4                                           else
 298   4                                           {
 299   5                                                  powerSwitchControl = CLOSE_SWITCH;                  //不断开闸刀
 300   5                                              delaySwitchFlag = FALSE;
 301   5                                                   }
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 6   

 302   4                                           break;
 303   4                           }                   
 304   3                        }
 305   2              }         
 306   1      }
 307          
 308          
 309          
 310          //---------------------------------------------------------------------------
 311          //函数名称:void Delay(uchar t)
 312          //功能描述:延时 t ms
 313          //输入:uchar t (所要延时的长度)
 314          //输出:无
 315          //---------------------------------------------------------------------------
 316          void Delay(uchar t)             //延时1ms
 317          {
 318   1          uchar i;
 319   1              while(t-- > 0)
 320   1              {
 321   2                 for(i=0;i<120;i++)
 322   2                 {;}
 323   2              }
 324   1      }
 325          
 326          
 327          //---------------------------------------------------------------------------
 328          //函数名称:uchar ReadID(void)
 329          //功能描述:读取本机地址
 330          //输入:无
 331          //输出:地址码
 332          //---------------------------------------------------------------------------
 333          
 334          uchar ReadID(void)
 335          {
 336   1              uchar tempID;
 337   1      
 338   1              tempID = P0;
 339   1              tempID = tempID >> 6;
 340   1              tempID = (0xFC & P2)|(0x03 & tempID);
 341   1      
 342   1              return(tempID);
 343   1              //return(0x21);
 344   1      }
 345          
 346          
 347          //---------------------------------------------------------------------------
 348          //函数名称:void WriteI2CBufData(void)
 349          //功能描述:写缓冲区 满检测
 350          //输入:无
 351          //输出:无
 352          //---------------------------------------------------------------------------
 353          
 354          void WriteI2CBufData(void)
 355          {
 356   1              uchar i;
 357   1      
 358   1          //将时间数据移动到页缓冲区
 359   1              for(i=0;i<7;i++)
 360   1              {
 361   2                      writeEEPROMBuf[wrEEPROMBufPtr] = recCurrentTimeBuf[i];
 362   2                      wrEEPROMBufPtr++;
 363   2                      if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 7   

 364   2                      {
 365   3                              wrEEPROMBufPtr = 0;
 366   3                              writeEEPROMBufFullFlag = TRUE;
 367   3                              return;
 368   3                      }
 369   2                      else
 370   2                              writeEEPROMBufFullFlag = FALSE;
 371   2              }
 372   1      
 373   1          //将电压数据移动到页缓冲区
 374   1              for(i=0;i<3;i++)
 375   1              {
 376   2                      writeEEPROMBuf[wrEEPROMBufPtr] = lineVolt[i];
 377   2                      wrEEPROMBufPtr++;
 378   2                      if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
 379   2                      {
 380   3                              wrEEPROMBufPtr = 0;
 381   3                              writeEEPROMBufFullFlag = TRUE;
 382   3                              return;
 383   3                      }
 384   2                      else
 385   2                              writeEEPROMBufFullFlag = FALSE;
 386   2              }
 387   1      
 388   1          //将电流数据移动到页缓冲区
 389   1              for(i=0;i<3;i++)
 390   1              {
 391   2                      writeEEPROMBuf[wrEEPROMBufPtr] = lineCurrent[i];
 392   2                      wrEEPROMBufPtr++;
 393   2                      if(wrEEPROMBufPtr >= EEPROM_PAGE_SIZE)
 394   2                      {
 395   3                              wrEEPROMBufPtr = 0;
 396   3                              writeEEPROMBufFullFlag = TRUE;
 397   3                              return;
 398   3                      }
 399   2                      else
 400   2                              writeEEPROMBufFullFlag = FALSE;
 401   2              }
 402   1      
 403   1          //将漏电信息移动到页缓冲区
 404   1              for(i=0;i<3;i++)
 405   1              {
 406   2                      writeEEPROMBuf[wrEEPROMBufPtr] = leakageCurrentMsg[i];
 407   2                      wrEEPROMBufPtr++;
 408   2                      if(wrEEPROMBufPtr>=EEPROM_PAGE_SIZE)
 409   2                      {
 410   3                              wrEEPROMBufPtr = 0;
 411   3                              writeEEPROMBufFullFlag = TRUE;
 412   3                              return;
 413   3                      }
 414   2                      else
 415   2                              writeEEPROMBufFullFlag = FALSE;
 416   2              }
 417   1      }
 418          
 419          
 420          //---------------------------------------------------------------------------
 421          //函数名称:void ByteTransBuf(uchar command, uchar dataSize)
 422          //功能描述:将待发送数据放入发送缓冲区
 423          //输入:    command-- 上位机的命令字
 424          //                  dataSize--发送数据的字节数
 425          //输出:无
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 8   

 426          //---------------------------------------------------------------------------
 427          
 428          void ByteTransBuf(uchar command, uchar dataSize)
 429          {
 430   1              uchar i;
 431   1      
 432   1          //将本机地址、命令、数据字节数放入发送缓冲区
 433   1              transDataBuf[0] = ReadID();
 434   1              transDataBuf[1] = command;
 435   1              transDataBuf[2] = dataSize;
 436   1      
 437   1          //将时间数据移动到发送缓冲区
 438   1              for(i=0;i<7;i++)
 439   1              {
 440   2                      transDataBuf[i+3] = recCurrentTimeBuf[i];
 441   2              }
 442   1      
 443   1          //将电压数据移动到页缓冲区
 444   1              for(i=0;i<3;i++)
 445   1              {
 446   2                      transDataBuf[i+10] = lineVolt[i];
 447   2              }
 448   1      
 449   1          //将电流数据移动到页缓冲区
 450   1              for(i=0;i<3;i++)
 451   1              {
 452   2                      transDataBuf[i+13] = lineCurrent[i];
 453   2              }
 454   1      
 455   1          //将漏电信息移动到页缓冲区
 456   1              for(i=0;i<3;i++)
 457   1              {
 458   2                      transDataBuf[i+16] = leakageCurrentMsg[i];
 459   2              }
 460   1      }
 461          
 462          
 463          //---------------------------------------------------------------------------
 464          //函数名称:void PageTransBuf(uchar command)
 465          //功能描述:将待发送数据放入发送缓冲区
 466          //输入:    command-- 上位机的命令字
 467          //输出:无
 468          //---------------------------------------------------------------------------
 469          
 470          void PageTransBuf(uchar command)
 471          {
 472   1          //将本机地址、命令、数据字节数放入发送缓冲区
 473   1              transDataBuf[0] = ReadID();
 474   1              transDataBuf[1] = command;
 475   1              transDataBuf[2] = EEPROM_PAGE_SIZE;
 476   1      
 477   1              if(command == COM_RD_ALL_DATA)
 478   1              {
 479   2      
 480   2                      EEPROMRdAddr = EEPROM_ORG_ADDR;
 481   2      
 482   2                      while(IRcvStr(0xA0, EEPROMRdAddr, transDataBuf+3, EEPROM_PAGE_SIZE))      //0xA0:AT24C512固有地址
 483   2                         EEPROMRdAddr += 128;
 484   2              }
 485   1              else
 486   1              {
 487   2                      EEPROMRdAddr = EEPROMWrAddr - EEPROM_PAGE_SIZE * recRdBatDataSize[1] * recRdBatDataSize[0];
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 9   

 488   2      
 489   2                      while(IRcvStr(0xA0, EEPROMRdAddr, transDataBuf+3, EEPROM_PAGE_SIZE))
 490   2                         EEPROMRdAddr += 128;
 491   2              }
 492   1      }
 493          
 494          
 495          //---------------------------------------------------------------------------
 496          //函数名称:void ChkLeakageCurrentLine(void)
 497          //功能描述:检测漏电线路
 498          //输入:无
 499          //输出:无
 500          //---------------------------------------------------------------------------
 501          //void ChkLeakageCurrentLine(void)
 502          //{
 503          
 504          //}
 505          
 506          
 507          //---------------------------------------------------------------------------
 508          //函数名称:rut
 509          //功能描述:外部中断1
 510          //输入:无
 511          //输出:无
 512          //---------------------------------------------------------------------------
 513          void rut(void) interrupt 2
 514          {
 515   1              lightControl = FALSE ; 

⌨️ 快捷键说明

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