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

📄 mdload.c

📁 本公司的单相CPU卡表的源程序代码
💻 C
字号:
/*
************************************************************************
* MDLoad.c:
* 
********************************************************************
*/

#include "include\macro.h"  
#include "include\HardConfig.h"
#include "include\SysConfig.h"
#include "include\SubConfig.h"
#include "include\data.h"
#include "include\bitdef.h"

#include "include\FunAnnounce.h"


#define   MD_STU_OVERLOAD   0xa5                   
#define   MD_STU_DOWNLOAD  0x00

#define   MD_STU_NATURAL       0x00              //
#define   MD_STU_OFFDELAY      0x01             //
#define   MD_STU_ONDELAY       0X02             //
/*******************************************************************
* AddMD() :  
********************************************************************/
uchar AddMD(void)
{
 uint  tmpsum= 0;
 uchar i;
 ulong md_tmp;
 uchar md_parm[3];
  

    MDLoad.ptr++;
    if(MDLoad.ptr>=5)   MDLoad.ptr =0;

    for(i=0;i<5;i++)
    {
        tmpsum += MDLoad.buff[i];	
    }

    MDLoad.buff[MDLoad.ptr] = 0;

    md_tmp =((ulong)(tmpsum))*12*100 ;
    md_tmp =(md_tmp/CONS_METER);

    
    Long_BCD4( &MDLoad.mpower[0], md_tmp);              
	
    MEM_Read(E2P_LIMITMD, &md_parm[0], 0x03);
    if(Cmp_TwoArry(&MDLoad.mpower[0],&md_parm[0] ,3) == 255)   return(MD_STU_DOWNLOAD);
    return(MD_STU_OVERLOAD);
		
}

/*******************************************************************
**
********************************************************************/
void OverLoad(void)
{

    if(MDLoad.status==0)
    {
       MDLoad.status =1;
       MEM_Read(E2P_OMDTMR, &MDLoad.evenTmr, 0x01);
    	if(MDLoad.evenTmr>=5)  MDLoad.evenTmr =5;      //max time is 5 minutes
    }
}


/*******************************************************************
**
********************************************************************/
void MDstatus_judge(void)
{
    uchar tmp=0;
    uchar data=0;

    tmp = AddMD();
    switch (MDLoad.status)
    {
        case MD_STU_NATURAL:	
	           if(tmp==MD_STU_OVERLOAD)
	          {
	               MDLoad.status =MD_STU_OFFDELAY;
	               MEM_Read(E2P_OMDTMR, &MDLoad.evenTmr, 0x01);    
                 if(MDLoad.evenTmr>=5)  MDLoad.evenTmr =5;      //max time is 5 minutes
	           }
             break;
			
        case MD_STU_OFFDELAY:
	           if(tmp==MD_STU_OVERLOAD)
	           {
	               MDLoad.evenTmr--;
                 if(MDLoad.evenTmr==0)
                {
	                   MDLoad.status = MD_STU_ONDELAY;
		                 MEM_Read(E2P_CMDTMR, &MDLoad.evenTmr, 0x01);    
                     if(MDLoad.evenTmr>=5)  MDLoad.evenTmr =5;      //max time is 5 minutes
                     MEM_Read(E2P_OFFCNT, &data, 0x01); 
                     data++;
                     MEM_Write(E2P_OFFCNT, &data, 0x01);
                     Relay.tmr_status |= bitRstu_overoff;
                     Relay_Opera(OFF);   
                }
	           }
            else
            {
                 MDLoad.status =MD_STU_NATURAL;
            }
            break;

        case MD_STU_ONDELAY:
            MDLoad.evenTmr--;
            if(MDLoad.evenTmr==0)
            {   
                
                MEM_Read(E2P_OFFCNTMAX, &tmp, 0x01);
                MEM_Read(E2P_OFFCNT, &data, 0x01);
                if(data >tmp)
                {
                     MDLoad.evenTmr = 0x01;     
                }
                else
                {
                    MDLoad.status = MD_STU_NATURAL;    
                    Relay_Judge(6);
                }
             }
            break;

        default :
	           MDLoad.status =MD_STU_NATURAL;	
	           break;
    }
}

⌨️ 快捷键说明

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