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

📄 复件 add_heat.c

📁 msp430F435做的医疗器械,包括语音模块,知识源于网络
💻 C
字号:
/****************************************************************
            discrible:热量累加主程序

            author   :Ye Yun Kai

            date     :05.04.15(yy.mm.dd)
****************************************************************/
#include "msp430x42x.h"
#include "Sys_data.h"
#include "Sys_fun.h"


void Add_Heat(void)
{
    unsigned char i,j;
    unsigned char Heat_temp;                  //热量临时值(0.1WH)
    unsigned char temp_mL;                    //每个脉冲的体积(单位:mL,十进制数)


/////////////////////////////////////////////////////////////////////////////////////
                            //热量部分
/////////////////////////////////////////////////////////////////////////////////////
//----------GJ单位热量累加----------------------------------------------
    if( (In_Temp[1]!=0x0E) && (Out_Temp[1] !=0x0E) && (Sub_Temp[1] !=0x0E) )//若温度出错,则不计量
    {
        Heat_GJadd += Heat_GJpluse; //GJ单位热量(十进制)

        Heat_GJ[0] +=(Heat_GJadd/100000000);      //10的8次,有1MG,进位至寄存器
        Heat_GJadd = (Heat_GJadd%100000000);
        for(i=0;i<3;i++)
        {
            if((Heat_GJ[i]&0x0F)>9)
            {
                Heat_GJ[i] +=0x10;
                Heat_GJ[i] &=0xF0;
            }
            if((Heat_GJ[i]&0xF0)>0x90)
            {
                Heat_GJ[i+1] +=0x01;
                Heat_GJ[i] &=0x0F;
            }
        }

//----------WH单位热量累加(主显示层用)-------------------------------------------------
        Heat_WHadd += Heat_WHpluse; //WH单位热量(十进制)

        Heat_WH[0] +=(Heat_WHadd/100000000);       //10的8次,有1KWH,进位至寄存器
        Heat_WHadd = (Heat_WHadd%100000000);
        for(i=0;i<3;i++)
        {
            if((Heat_WH[i]&0x0F)>9)
            {
                Heat_WH[i] +=0x10;
                Heat_WH[i] &=0xF0;
            }
            if((Heat_WH[i]&0xF0)>0x90)
            {
                Heat_WH[i+1] +=0x01;
                Heat_WH[i] &=0x0F;
            }
        }

//---------------------热量定时存入ROM(20.0KWh存入一次)----------------------------------------
/*        if( ((Heat_WH[1]&0x0F)==0x02)&&((Save_symbol & f20KWh_flag)!=f20KWh_flag) )
        {
            Save_symbol &= ~f00KWh_flag;//清00.0KWh已存标志
            Save_symbol |= f20KWh_flag; //置已存标志
            Save_HeatFlowData();          //调用存储程序,存入热量及流量数据
        }
        else if( ((Heat_WH[1]&0x0F)==0x04)&&((Save_symbol & f40KWh_flag)!=f40KWh_flag) )
        {
            Save_symbol &= ~f20KWh_flag;//清20.0KWh已存标志
            Save_symbol |= f40KWh_flag; //置已存标志
            Save_HeatFlowData();          //调用存储程序,存入热量及流量数据
        }
        else if( ((Heat_WH[1]&0x0F)==0x06)&&((Save_symbol & f60KWh_flag)!=f60KWh_flag) )
        {
            Save_symbol &= ~f40KWh_flag;//清40.0KWh已存标志
            Save_symbol |= f60KWh_flag; //置已存标志
            Save_HeatFlowData();          //调用存储程序,存入热量及流量数据
        }
        else if( ((Heat_WH[1]&0x0F)==0x08)&&((Save_symbol & f80KWh_flag)!=f80KWh_flag) )
        {
            Save_symbol &= ~f60KWh_flag;//清60.0KWh已存标志
            Save_symbol |= f80KWh_flag; //置已存标志
            Save_HeatFlowData();          //调用存储程序,存入热量及流量数据
        }
        else if( ((Heat_WH[1]&0x0F)==0x00)&&((Save_symbol & f00KWh_flag)!=f00KWh_flag) )
        {
            Save_symbol &= ~f80KWh_flag;//清80.0KWh已存标志
            Save_symbol |= f00KWh_flag; //置已存标志
            Save_HeatFlowData();          //调用存储程序,存入热量及流量数据
        }
*/
//----------------------WH单位热量累加-------------------------------------

//        Power_test_WHadd += Power_test_WHpulse;//----实时功率计算

//----------------------测试热量计算部分----------------------
        if((Display_symbol & seclayer_flag)==seclayer_flag)
        {
            if((Display_symbol & test_off)!=test_off)//若开始测试,则计热量,否则不计
            {
                Heat_test_WHadd += Heat_WHpluse;//WH单位热量(十进制)

                Heat_temp =(Heat_test_WHadd/10000);
                Heat_test_WHadd = (Heat_test_WHadd%10000);

                for(j=0;j<Heat_temp;j++)//------------加上0.1WH为最小单位的热量值
                {
                    Heat_test[0]++;
                    for(i=0;i<3;i++)
                    {
                        if((Heat_test[i]&0x0F)>9)
                        {
                            Heat_test[i] +=0x10;
                            Heat_test[i] -=0x0A;
                        }
                        if((Heat_test[i]&0xF0)>0x90)
                        {
                            Heat_test[i+1] +=0x01;
                            Heat_test[i] -=0xA0;
                        }
                    }
                }
                if(test_index_Disp==0x04)
                {
                    Up_Datebuffer(Heat_test,4);             //当前测试热量(单位:1WH)
                    Up_test_Promptbuffer(test_index_Disp);  //提示符更新
                    Lcd_buffer_update(Data_buffer);         //更新LCD
                }
            }
        }
/////////////////////////////////////////////////////////////////////////////////////
                            //流量部分
/////////////////////////////////////////////////////////////////////////////////////
//-----------------流量累加(主显示层用)----------------------------------------------
        Flux_10Ladd+= Constant; //1个脉冲的体积:0.033003L/p(1个脉冲的体积:33003*10负3次方 mL)

        Flux[0] +=(Flux_10Ladd/10000000); //最小单位是10L(10的7次方)
        Flux_10Ladd =(Flux_10Ladd%10000000);
        for(i=0;i<3;i++)
        {
            if((Flux[i]&0x0F)>9)
            {
                Flux[i] +=0x10;
                Flux[i] &=0xF0;
            }
            if((Flux[i]&0xF0)>0x90)
            {
                Flux[i+1] +=0x01;
                Flux[i] &=0x0F;
            }
        }

//-----------------------流量累加,流速测试-------------------------------

        Flux_test_add += Constant;//-----实时流速计算  //1个脉冲的体积:0.033003L/p

//------------------------------------------------测试流量累加部分
        if((Display_symbol & seclayer_flag)==seclayer_flag)
        {
            if((Display_symbol & test_off)!=test_off)       //若开始测试,则计流量,否则不计
            {
                temp_mL = (Constant/1000);                  //最小单位是0.001L     //1个脉冲的体积:0.033L/p

                Remainder_add += (Constant%1000);           //Constant数据低3位累加器,超过1000,则给Flux_test[0]加1
                temp_mL += Remainder_add/1000;
                Remainder_add = (Remainder_add%1000);

                Flux_test[0] += (temp_mL/10)*16 +(temp_mL%10);  //44----->0x44
                for(i=0;i<3;i++)
                {
                    if((Flux_test[i]&0x0F)>9)
                    {
                        Flux_test[i] +=0x10;
                        Flux_test[i] -=0x0A;
                    }
                    if((Flux_test[i]&0xF0)>0x90)
                    {
                        Flux_test[i+1] +=0x01;
                        Flux_test[i] -=0xA0;
                    }
                }
                if(test_index_Disp==0x05)
                {
                    Up_Datebuffer(Flux_test,4);             //当前测试流量(单位:0.001L)
                    Up_test_Promptbuffer(test_index_Disp);  //提示符更新
                    Lcd_buffer_update(Data_buffer);         //更新LCD
                }
            }
        }
    }
}

⌨️ 快捷键说明

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