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

📄 leakage.lst

📁 基于 PLC935单片机的三相漏电检测系统
💻 LST
📖 第 1 页 / 共 3 页
字号:
 516   1      
 517   1          TH1 = Time_1s_H     ;
 518   1              TL1 = Time_1s_L ;
 519   1      
 520   1              TR1 = 1;
 521   1      
 522   1              ET1 = 1;        
 523   1      }
 524          
 525          //---------------------------------------------------------------------------
 526          //函数名称:Timer1_Int
 527          //功能描述:定时1的中断程序
 528          //输入:无
 529          //输出:无
 530          //---------------------------------------------------------------------------
 531          void Timer1_Int(void) interrupt 3
 532          {
 533   1          static uchar second_c = 100;
 534   1      
 535   1              TR1 = 0 ;
 536   1      
 537   1          second_c--;
 538   1              if(!second_c)
 539   1              {
 540   2             lightControl = TRUE ;
 541   2               
 542   2                 TR1 = 0 ;
 543   2               }
 544   1           else  
 545   1                 TR1 = 1;
 546   1      }
 547          
 548          //---------------------------------------------------------------------------
 549          //函数名称:Timer0_Int
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 10  

 550          //功能描述:定时10 ms  的中断程序
 551          //输入:无
 552          //输出:无
 553          //---------------------------------------------------------------------------
 554          void Timer0_Int(void) interrupt 1
 555          {
 556   1              static uchar second_cnt = 100;
 557   1      
 558   1              TR0 = 0;
 559   1      
 560   1              TH0 = TIME_10ms_H;
 561   1              TL0 = TIME_10ms_L;
 562   1      
 563   1              second_cnt --;
 564   1              if(second_cnt == 50)
 565   1                 workIndication = !workIndication;            //500ms 翻转一次
 566   1      
 567   1              //时间已达1  秒
 568   1              if(!second_cnt)
 569   1              {
 570   2                 sampleTimeFlag = TRUE;
 571   2                 second_cnt = 100;
 572   2              }
 573   1              TR0 = 1;
 574   1      }
 575          
 576          
 577          //---------------------------------------------------------------------------
 578          //函数名称:Serial_Int()
 579          //功能描述:串行口中断程序
 580          //输入:无
 581          //输出:无
 582          //---------------------------------------------------------------------------
 583          void Serial_Int(void) interrupt 4 
 584          {
 585   1              uchar recBuf;
 586   1          static uchar scnt;
 587   1      
 588   1              EA = 0;
 589   1          scnt++;                                                                                                             //关闭中断
 590   1              if(_testbit_(TI))                                           //JBC指令  是发送中断
 591   1              {
 592   2                      if(transDataPtr < transDataBuf[2] + 3)                                  //是否已经发送完毕
 593   2                      {
 594   3                              SBUF = transDataBuf[transDataPtr];                                      //发送数据 对SBUF覆值,即为发送数据
 595   3                              transCheckSum +=  transDataBuf[transDataPtr];
 596   3                              transDataPtr++;
 597   3      
 598   3                              if(transDataPtr == transDataBuf[2]+2)               //发送校验字  发送结束
 599   3                                      SBUF = transCheckSum;
 600   3                       }
 601   2              }
 602   1      
 603   1              if(_testbit_(RI))                                           //是接收中断
 604   1              {
 605   2                      recBuf = SBUF;
 606   2      
 607   2                      switch(recStatus)
 608   2                      {
 609   3                              case INIT_STAT:
 610   3                                      if(recBuf == SYNC)                                                              //是同步信号
 611   3                                      {
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 11  

 612   4                                              recStatus = ADDR_STAT;
 613   4                                              recChkSum = SYNC;                                                   //初始化校验和
 614   4                                      }
 615   3                                      break;
 616   3      
 617   3                      case ADDR_STAT:
 618   3                              if(recBuf == ReadID())                                                  //是本机地址
 619   3                              {
 620   4                                      recChkSum += recBuf;
 621   4                                              recStatus = COMMAND_STAT;
 622   4                                      }
 623   3                                      else
 624   3                                      {
 625   4                                              recStatus = INIT_STAT;
 626   4                                              recChkSum = 0;
 627   4                                      }
 628   3                                      break;
 629   3      
 630   3                              case COMMAND_STAT:
 631   3                                      recCommandBuf = recBuf;
 632   3                                      recChkSum += recBuf;
 633   3                                      if((recCommandBuf==COM_INIT)||(recCommandBuf==COM_TIME)\
 634   3                                           ||(recCommandBuf==COM_RD_CUR_DATA)||(recCommandBuf==COM_RD_BATCH_DATA)\
 635   3                                           ||(recCommandBuf==COM_RD_ALL_DATA))
 636   3                                      {//合法命令
 637   4                                         recStatus = SIZE_STAT;
 638   4                                      }
 639   3                                      else if(recCommandBuf == TERM_CUR_TX_ERR)               //上位机回应终端接收当前数据错误
 640   3                                               {
 641   4                                                  curTransErrFlag = TRUE;
 642   4                                                  recStatus = INIT_STAT;
 643   4                                               }
 644   3                                      else if(recCommandBuf==TERM_BAT_TX_ERR)                 //上位机回应终端接收批量数据错误
 645   3                                               {
 646   4                                                  batTransErrFlag = TRUE;
 647   4                                                  recStatus = INIT_STAT;
 648   4                                               }
 649   3                                      else if(recCommandBuf==TERM_ALL_TX_ERR)                 //上位机回应终端接收所有数据错误
 650   3                                               {
 651   4                                                  allDataTransErrFlag = TRUE;
 652   4                                                  recStatus = INIT_STAT;
 653   4                                               }
 654   3                                      else                                                                                    //其它不确定错误
 655   3                                      {
 656   4                                              recStatus = INIT_STAT;
 657   4                                              recChkSum = 0;
 658   4                                      }
 659   3                                      break;
 660   3      
 661   3                              case SIZE_STAT:
 662   3                                      recDataSize = recBuf;
 663   3                                      recChkSum += recBuf;
 664   3      
 665   3                                      if(recDataSize > 0)
 666   3                                              recStatus = DATA_STAT;
 667   3                                      else
 668   3                                              recStatus = VERIFY_STAT;
 669   3                                      break;
 670   3      
 671   3                              case DATA_STAT:
 672   3                                      switch(recCommandBuf)
 673   3                                      {
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 12  

 674   4                                              case COM_INIT:                                                          //上位机发出 读取预置信息(消防控制类型)  命令
 675   4                                                      recChkSum += recBuf;
 676   4                                                      recPresetData[recDataCnt] = recBuf;
 677   4                                                      recDataCnt++;
 678   4                                                      if(recDataCnt == recDataSize)                   //数据接收完毕
 679   4                                                      {
 680   5                                                              recDataCnt = 0;
 681   5                                                              recStatus = VERIFY_STAT;
 682   5                                                      }
 683   4                                                      break;
 684   4      
 685   4                                              case COM_TIME:
 686   4                                                      recChkSum += recBuf;
 687   4                                                      recCurrentTimeBuf[recDataCnt] = recBuf;
 688   4                                                      recDataCnt++;
 689   4                                                      if(recDataCnt==recDataSize)                             //数据接收完毕
 690   4                                                      {
 691   5                                                              recDataCnt = 0;
 692   5                                                              recStatus = VERIFY_STAT;
 693   5                                                      }
 694   4                                                      break;
 695   4      
 696   4                                              case COM_RD_CUR_DATA:
 697   4                                                      recChkSum += recBuf;
 698   4                                                      recStatus = VERIFY_STAT;
 699   4                                              break;
 700   4      
 701   4                                              case COM_RD_BATCH_DATA:
 702   4                                                      recChkSum += recBuf;
 703   4                                                      recRdBatDataSize[recDataCnt] = recBuf;
 704   4                                                      recDataCnt++;
 705   4                                                      if(recDataCnt==recDataSize)                             //数据接收完毕
 706   4                                                      {
 707   5                                                              recDataCnt = 0;
 708   5                                                              recStatus = VERIFY_STAT;
 709   5                                                      }
 710   4                                                      break;
 711   4      
 712   4                                              case COM_RD_ALL_DATA:
 713   4                                                      recChkSum += recBuf;
 714   4                                                      recStatus = VERIFY_STAT;
 715   4                                                      break;
 716   4      
 717   4                                              }
 718   3      
 719   3                                      break;
 720   3      
 721   3                              case VERIFY_STAT:
 722   3                                      if(recChkSum==recBuf)                                           //校验正确
 723   3                                      {
 724   4                                              recErrorFlag = FALSE;
 725   4                                              switch(recCommandBuf)                                   //根据不同命令置相应标志
 726   4                                              {
 727   5                                                      case COM_INIT:
 728   5                                                              initFlag = TRUE;
 729   5                                                              break;
 730   5      
 731   5                                                      case COM_TIME:
 732   5                                                              timeVerifyFlag = TRUE;
 733   5                                                              break;
 734   5      
 735   5                                                      case COM_RD_CUR_DATA:
C51 COMPILER V8.05a   LEAKAGE                                                              11/26/2007 12:52:43 PAGE 13  

 736   5                                                      rdCurDataFlag = TRUE;
 737   5                                                              break;
 738   5      
 739   5                                                      case COM_RD_BATCH_DATA:
 740   5                                                              rdBatDataFlag = TRUE;
 741   5                                                              break;
 742   5      
 743   5                                                      case COM_RD_ALL_DATA:
 744   5                                                              rdAllDataFlag = TRUE;
 745   5                                                              break;
 746   5                                              }
 747   4      
 748   4                                       }
 749   3                                       else
 750   3                                       {
 751   4                                              recErrorFlag = TRUE;
 752   4                                        }
 753   3                                        break;
 754   3      
 755   3                              default:
 756   3                                      recStatus = INIT_STAT;
 757   3                                      break;
 758   3                      }
 759   2      
 760   2              }
 761   1              EA = 1;                                                                                                         //打开中断
 762   1      }


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   1444    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    259    ----
   PDATA SIZE       =   ----    ----
   DATA SIZE        =     26    ----
   IDATA SIZE       =      6    ----
   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 + -