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

📄 comm.lst

📁 该程序完成了c8051外围电路的驱动和串口协议的编写。希望能给大家学习51单片机带来帮助
💻 LST
📖 第 1 页 / 共 3 页
字号:
 428   1      } 
 429          //--------------------------------------------------------------------------------------------------
 430          //函数名称:void ReportChannelCurrentStatus(unsigned char uchCh,unsigned char uchStatus,unsigned int uiVal
             -ue,int uiGap)
 431          //功    能:上报通道的状态,实时测量值和间隙电压
 432          //输入参数:通道,状态,实时测量值和间隙电压
 433          //返    回:无
 434          //完成日期:4/16/2007
 435          //--------------------------------------------------------------------------------------------------
 436          void ReportChannelCurrentStatus(unsigned char uchCh,unsigned char uchStatus,unsigned int uiValue,int uiGap
             -)
 437          {
 438   1              static unsigned char uchCountData = 0;
 439   1      
 440   1              uchCountData++;
 441   1              if (uchCountData == 3)
 442   1              {
 443   2                      RunLEDStartControl();    //灯控制
 444   2              }
 445   1              else if (uchCountData >= 6)
 446   1              {
 447   2                      RunLEDStopControl();
 448   2                      uchCountData = 0;
 449   2              }                                                               //CAN运行灯控制临时添加,判断分析通信上报的状态
 450   1                      
 451   1              uchSendBuf[0] = 0;
 452   1              uchSendBuf[1] = 0;
 453   1              uchSendBuf[2] = 7;
 454   1              uchSendBuf[3] = 0x21;
 455   1              uchSendBuf[4] = uchCh;
 456   1              uchSendBuf[5] = uchStatus; 
 457   1              *((unsigned int*)&uchSendBuf[6]) = uiValue;
 458   1              *((unsigned int*)&uchSendBuf[8]) = uiGap;
 459   1      
 460   1              if (uchCPUAddressStatus == 0)
 461   1              {
 462   2                      uchCh = uchCh;
 463   2              }
 464   1              else if (uchCPUAddressStatus == 1)
 465   1              {
 466   2                      uchCh = uchCh - 2;
 467   2              }
 468   1      
 469   1              if (uchAlarmStatusJudge[uchCh - 1] == uchAlarmStatusJudgeBAK[uchCh - 1])
 470   1              {
 471   2                      SendPackage(3,0x01,uchSendBuf);
 472   2              }
 473   1              else if (uchAlarmStatusJudge[uchCh - 1] != uchAlarmStatusJudgeBAK[uchCh - 1])
 474   1              {
 475   2                      SendPackage(1,0x01,uchSendBuf); 
 476   2                      uchAlarmStatusJudgeBAK[uchCh - 1] = uchAlarmStatusJudge[uchCh - 1];
 477   2              } //状态不相等,则优先级提高
 478   1      }
 479          
 480          //--------------------------------------------------------------------------------------------------
 481          //函数名称:void ReportModuleType(unsigned char uchModuleType, unsigned int uchAddress)
 482          //功    能:每个槽地址为偶数的CPU上报模块类型
 483          //输入参数:模块类型,Can通讯地址
 484          //返    回:无
 485          //完成日期:6/22/2007
C51 COMPILER V7.10   COMM                                                                  09/18/2008 14:09:30 PAGE 9   

 486          //--------------------------------------------------------------------------------------------------
 487          void ReportModuleType(unsigned char uchModuleType, unsigned int uchAddress)
 488          {
 489   1              unsigned int xdata i;
 490   1              if(uchAddress % 2 == 0)
 491   1              {
 492   2                      uchSendBuf[0] = 0;
 493   2                      uchSendBuf[1] = 0;
 494   2                      uchSendBuf[2] = 3;
 495   2                      uchSendBuf[3] = 0x11;
 496   2                      *(unsigned int *)&uchSendBuf[4] = uchModuleType;
 497   2                      SendPackage(1,1,uchSendBuf);
 498   2              }
 499   1              if (uchAddress % 2 == 1)
 500   1              {
 501   2                      for (i=0; i<250; i++)
 502   2                      {
 503   3                              ;
 504   3                      }
 505   2              }       
 506   1      }
 507          
 508          //--------------------------------------------------------------------------------------------------
 509          //函数名称:void SetAlarmStatusCOMM(unsigned char uchChannel, unsigned char uchAlarmStatus)
 510          //功    能:将报警模块的报警状态设置到通信处理模块中来
 511          //输入参数:通道号,报警状态
 512          //返    回:无
 513          //完成日期:6/22/2007
 514          //--------------------------------------------------------------------------------------------------
 515          void SetAlarmStatusCOMM(unsigned char uchChannel, unsigned char uchAlarmStatus)
 516          {
 517   1              uchAlarmStatusJudge[uchChannel - 1] = uchAlarmStatus;
 518   1      }
 519          
 520          //--------------------------------------------------------------------------------------------------
 521          //函数名称:void InitCOMMModulePara(void)
 522          //功    能:初始化通信模块中的变量参数
 523          //输入参数:无
 524          //返    回:无
 525          //完成日期:6/22/2007
 526          //--------------------------------------------------------------------------------------------------
 527          void InitCOMMModulePara(void)
 528          {
 529   1              uchModuleConfigStatus = 0x00;
 530   1      }
 531          
 532          //--------------------------------------------------------------------------------------------------
 533          //函数名称:void SetCPUAddressFlagCOMM(unsigned char uchCPUAddressFlag)
 534          //功    能:将CPU地址的状态设置到通信模块中
 535          //输入参数:CPU地址状态
 536          //返    回:无
 537          //完成日期:6/22/2007
 538          //--------------------------------------------------------------------------------------------------
 539          void SetCPUAddressFlagCOMM(unsigned char uchCPUAddressFlag)
 540          {
 541   1              uchCPUAddressStatus = uchCPUAddressFlag;
 542   1      }
 543          
 544          //--------------------------------------------------------------------------------------------------
 545          //函数名称:void ReportSystemEvent(unsigned char uchChannel,unsigned int uiSystemEvent)
 546          //功    能:上报系统事件
 547          //输入参数:系统事件
C51 COMPILER V7.10   COMM                                                                  09/18/2008 14:09:30 PAGE 10  

 548          //返    回:无
 549          //完成日期:6/22/2007
 550          //--------------------------------------------------------------------------------------------------
 551          void ReportSystemEvent(unsigned char uchChannel,unsigned int uiSystemEvent)
 552          {
 553   1              uchSendBuf[0] = 0;
 554   1              uchSendBuf[1] = 0;
 555   1              uchSendBuf[2] = 4;        //数据长度
 556   1              uchSendBuf[3] = 0x0E;
 557   1      
 558   1              if (uchChannel == 0)                       //通道号为零,则是普通系统事件,不区分上下CPU
 559   1              {
 560   2                      uchSendBuf[4] = uchChannel;
 561   2              }
 562   1              else                                                       //通道号不为零,则是特殊系统事件,要区分上下CPU
 563   1              {
 564   2                      if (uchCPUAddressStatus == 0)   //放在这判断是为了压缩程序代码
 565   2                      {
 566   3                              uchSendBuf[4] = uchChannel;
 567   3                      }
 568   2                      else if (uchCPUAddressStatus == 1)
 569   2                      {
 570   3                              uchSendBuf[4] = uchChannel + 2; 
 571   3                      }
 572   2      
 573   2              }
 574   1      
 575   1      //      uchSendBuf[4] = uchChannel;                     //后删除20080514
 576   1      
 577   1              *((unsigned int*)&uchSendBuf[5]) = uiSystemEvent;
 578   1      
 579   1              SendPackage(0,1,uchSendBuf);
 580   1              return;
 581   1      }
 582          
 583          //--------------------------------------------------------------------------------------------------
 584          //函数名称:void SetConfigChannelStatus(unsigned char uchChannel,unsigned char uchChannelStatusFlag)
 585          //功    能:判断通道参数配置是否正确
 586          //输入参数:通道号,通道配置标志   0:没配置过 1:配置不正确 2:配置正确 3:通道不存在
 587          //返    回:无
 588          //完成日期:6/22/2007
 589          //--------------------------------------------------------------------------------------------------
 590          /*void SetConfigChannelStatus(unsigned char uchChannel,unsigned char uchChannelStatusFlag)
 591          {
 592                  uchConfigChannelStatus[uchChannel - 1] = uchChannelStatusFlag;
 593          } */
 594          
 595          
 596          
 597          
 598          
 599          
 600          
 601          
 602          
 603          
 604          
 605          
 606          
 607          
 608          
 609          
C51 COMPILER V7.10   COMM                                                                  09/18/2008 14:09:30 PAGE 11  

 610          
 611          
 612          
 613          
 614          
 615          
 616          
 617          
 618          
 619          
 620          
 621          
 622          
 623          
 624          
 625          
 626          
 627          
 628          


MODULE INFORMATION:   STATIC OVERLAYABLE
   CODE SIZE        =   3721    ----
   CONSTANT SIZE    =   ----    ----
   XDATA SIZE       =    112       2
   PDATA SIZE       =   ----    ----
   DATA SIZE        =      3      10
   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 + -