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

📄 pulseparse.txt

📁 用pic单片机实现的对锂电池冲电的程序
💻 TXT
字号:
使用LPC932制作的一款电表---PulseParse
redbug 发表于 2005-10-14 16:36:00  


#i nclude <REG932.H>
#i nclude <define.h>
#i nclude <Stdio.h>
#i nclude <Intrins.h>
//数据累加
void SumData(void)
{
    //总电量累加
    PulseData=PulseData+1;
    if(PulseData==16)                          
    {
        SumPulseData[0]=SumPulseData[0]+1;
        if(SumPulseData[0]==0x64)
        {
            SumPulseData[0]=0x00;            
            SumPulseData[1]=SumPulseData[1]+1;
            if(SumPulseData[1]==0x64)
            {
                SumPulseData[1]=0x00;
                SumPulseData[2]=SumPulseData[2]+1;
                if(SumPulseData[2]==0x64)
                {
                    SumPulseData[2]=0x00;
                    SumPulseData[3]=SumPulseData[3]+1;
                    if(SumPulseData[3]==0x64)
                    {
                        SumPulseData[0]=0x00;
                        SumPulseData[1]=0x00;
                        SumPulseData[2]=0x00;
                        SumPulseData[3]=0x00;
                    }
                }
            }
        }
    }
    //反向电量累加
    if(ReverseFgToData)
    {
        if(PulseData==16)
        {
            ReversePulseData[0]=ReversePulseData[0]+1;
            if(ReversePulseData[0]==0x64)
            {
                ReversePulseData[0]=0x00;
                ReversePulseData[1]=ReversePulseData[1]+1;
                if(ReversePulseData[1]==0x64)
                {
                    ReversePulseData[1]=0x00;
                    ReversePulseData[2]=ReversePulseData[2]+1;
                    if(ReversePulseData[2]==0x64)
                    {
                        ReversePulseData[2]=0x00;
                        ReversePulseData[3]=ReversePulseData[3]+1;
                        if(ReversePulseData[3]==0x64)
                        {                        
                            ReversePulseData[0]=0x00;
                            ReversePulseData[1]=0x00;
                            ReversePulseData[2]=0x00;
                            ReversePulseData[3]=0x00;
                        }
                    }
                }
            }
        }
    }
    //峰电量累加
    if(FengFg)
    {
        if(PulseData==16)
        { 
            FengPulseData[0]=FengPulseData[0]+1;
            if(FengPulseData[0]==0x64)
            {
                FengPulseData[0]=0x00;
                FengPulseData[1]=FengPulseData[1]+1;
                if(ReversePulseData[1]==0x64)
                {
                    FengPulseData[1]=0x00;
                    FengPulseData[2]=FengPulseData[2]+1;
                    if(ReversePulseData[2]==0x64)
                    {
                        FengPulseData[2]=0x00;
                        FengPulseData[3]=FengPulseData[3]+1;
                        if(FengPulseData[3]==0x64)
                        {
                            FengPulseData[0]=0x00;
                            FengPulseData[1]=0x00;
                            FengPulseData[2]=0x00;
                            FengPulseData[3]=0x00;
                        }
                    }
                }
            }
        }
    }    
    //平电量累加
    if(PingFg)
    {
        if(PulseData==16)
        {
            PingPulseData[0]=PingPulseData[0]+1;
            if(PingPulseData[0]==0x64)
            {
                PingPulseData[0]=0x00;
                PingPulseData[1]=PingPulseData[1]+1;
                if(PingPulseData[1]==0x64)
                {
                    PingPulseData[1]=0x00;
                    PingPulseData[2]=PingPulseData[2]+1;
                    if(PingPulseData[2]==0x64)
                    {
                        PingPulseData[2]=0x00;
                        PingPulseData[3]=PingPulseData[3]+1;
                        if(PingPulseData[3]==0x64)
                        {
                            PingPulseData[0]=0x00;
                            PingPulseData[1]=0x00;
                            PingPulseData[2]=0x00;
                            PingPulseData[3]=0x00;
                        }
                    }
                }
            }
        }
    }    
    //谷电量累加
    if(GuFg)
    {
        if(PulseData==16)
        {
            GuPulseData[0]=GuPulseData[0]+1;
            if(GuPulseData[0]==0x64)
            {
                GuPulseData[0]=0x00;
                GuPulseData[1]=GuPulseData[1]+1;
                if(GuPulseData[1]==0x64)
                {
                    GuPulseData[1]=0x00;
                    GuPulseData[2]=GuPulseData[2]+1;
                    if(GuPulseData[2]==0x64)
                    {
                        GuPulseData[2]=0x00;
                        GuPulseData[3]=GuPulseData[3]+1;
                        if(GuPulseData[3]==0x64)
                        {
                            GuPulseData[0]=0x00;
                            GuPulseData[1]=0x00;
                            GuPulseData[2]=0x00;
                            GuPulseData[3]=0x00;
                        }
                    }
                }
            }
         }
    }
    if(PulseData==16)
    {
        PulseData=0;
    }
}
void PulseParse(void)
{
    if(PulseParseFg)
    {   
        
        KeyTemp=~P0&0x30;
        KeyTemp=KeyTemp>>4;    
        switch(KeyTemp)    
        {
            case 0x00 : //正向电量脉冲采集---累积正向电量   
                        if(SumBit)
                        {
                            SumData();
                            SumBit=0;
                        }                                                      
                        ReverseFgToData=0;
                        ReverseFgToLcd=0;
                        KBMASK=KBMASK|0x30;
                        EKBI=1;
            break;
            case 0x01 :    //正向电量脉冲有效标志
                        
                        SumBit=1;
                        ReverseFgToData=0;
                           ReverseFgToLcd=0;
                           KBMASK=KBMASK|0x10;
                        EKBI=1;
            break;
            case 0x02 : //反向电量脉冲标志+脉冲有效---累积标志---反向电量
                        
                        
                        ReverseFgToData=1;
                        ReverseFgToLcd=1;
                        if(AddRev)
                        {
                            SumData();
                            AddRev=0;
                        }
                        KBMASK=KBMASK|0x20;
                        EKBI=1;
            break;
            case 0x03 :    
                        AddRev=1;   
                        KBMASK=KBMASK|0x30;
                        EKBI=1;                 
            break;    
        }
        PulseParseFg=0;
    }
}
 
 

⌨️ 快捷键说明

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