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

📄 sys_fun.c

📁 msp430F435做的医疗器械,包括语音模块,知识源于网络
💻 C
📖 第 1 页 / 共 3 页
字号:
                  if(In_Temp[1]!=0x0E)          //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  break;

        case 0x05:Data_buffer[9] = 0x08;    //出水温度标志     (出水温度)
                  if(Out_Temp[1]!=0x0E)         //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  break;

        case 0x06:Data_buffer[8] = 0x10;    //进水温度标志      (温差)
                  Data_buffer[9] = 0x08;    //出水温度标志
                  if(Sub_Temp[1]!=0x0E)         //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  if((Disp_symbol & fcool_symbol)==fcool_symbol)//若为制冷
                      Data_buffer[0] |= 0x04;//"-"
                  break;
    }
}

/************************************************************
                discrible: 更新测试提示符Data_buffer(测试项数据提示)

                date     :05.04.20
************************************************************/
void Up_test_Promptbuffer(unsigned char num)
{
    switch(num)
    {
        case 0x01:Data_buffer[9] = 0x20;    //"W"            (测试实时功率)
                  break;

        case 0x02:Data_buffer[10] = 0x0B;   //"L","/","h"    (测试实时流速)
                  break;

        case 0x03:                          //无提示符       (测试状态"TEST ON"或"TEST OFF")
                  break;


        case 0x04:Data_buffer[8] = 0x02;    //热标志         (测试热量:0.1Wh)
                  Data_buffer[5] |= 0x01;   //小数点"."
                  Data_buffer[9] = 0x30;    //"W","h"
                  Data_buffer[6] |= 0x01;   //左框符1
                  break;
                  
        case 0x05:Data_buffer[8] = 0x01;    //冷标志         (测试冷量:0.1Wh)
                  Data_buffer[5] |= 0x01;   //小数点"."
                  Data_buffer[9] = 0x30;    //"W","h"
                  Data_buffer[6] |= 0x01;   //左框符1
                  break;          

        case 0x06:Data_buffer[10] = 0x08;   //"L"            (测试流量0.001L)
                  Data_buffer[3] |= 0x01;   //小数点"."
                  Data_buffer[6] |= 0x01;   //左框符1
                  Data_buffer[2] |= 0x01;   //左框符2
                  Data_buffer[1] |= 0x01;   //左框符3
                  break;

        case 0x07:Data_buffer[8] = 0x10;    //进水温度标志     (进水温度)
                  if(In_Temp[1]!=0x0E)          //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  break;

        case 0x08:Data_buffer[9] = 0x08;    //出水温度标志     (出水温度)
                  if(Out_Temp[1]!=0x0E)         //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  break;

        case 0x09:Data_buffer[8] = 0x10;    //进水温度标志      (温差)
                  Data_buffer[9] = 0x08;    //出水温度标志
                  if(Sub_Temp[1]!=0x0E)         //没出错时,点亮小数点
                      Data_buffer[4] |= 0x01;   //小数点"."
                  break;

    }
}

/************************************************************
                discrible: 更新测试提示符Data_buffer(系统数据提示)

                date     :05.04.20
************************************************************/
void Up_sysdata_Promptbuffer(unsigned char num)
{
    switch(num)
    {
        case 0x01:break;                    //表号,无提示符

        case 0x02:break;                    //地址项,无提示符

        case 0x03:Data_buffer[9] = 0x20;    //"W"            (测试实时功率)
                  break;

        case 0x04:Data_buffer[10] = 0x0B;   //"L","/","h"    (测试实时流速)
                  break;

        case 0x05:Data_buffer[9] = 0x10;    //"h"             (累积运行时间,无提示符)
                  break;

        case 0x06:Data_buffer[8] = 0x04;    //"0+"            (当前日期)

        case 0x07:Data_buffer[8] = 0x04;    //"0+"            (当前时间)
    }
}

/************************************************************
                discrible: 往Data_buffer直接写入段码"TEST ON"

                date     :05.04.20
************************************************************/
void Up_test_on(void)
{
    Data_buffer[0] = 0xE0;//"T"
    Data_buffer[1] = 0x9E;//"E"
    Data_buffer[2] = 0xBC;//"S"
    Data_buffer[3] = 0xE0;//"T"

    Data_buffer[4] = 0x00;//"O"
    Data_buffer[5] = 0xFA;//"O"
    Data_buffer[6] = 0xEA;//"N"
}

/************************************************************
                discrible: 往Data_buffer直接写入段码"TEST OFF"

                date     :05.04.20
************************************************************/
void Up_test_off(void)
{
    Data_buffer[0] = 0xE0;//"T"
    Data_buffer[1] = 0x9E;//"E"
    Data_buffer[2] = 0xBC;//"S"
    Data_buffer[3] = 0xE0;//"T"

    Data_buffer[4] = 0xFA;//"O"
    Data_buffer[5] = 0x8E;//"F"
    Data_buffer[6] = 0x8E;//"F"
}

/************************************************************
                discrible:历史热量数据提示符

                date     :05.04.20
************************************************************/
void Up_hisHeatdata_Promptbuffer(unsigned char num)
{    
        switch(num)//热量提示符
        {
            case 0x01:Data_buffer[7] = 0x60;  //"1"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x02:Data_buffer[7] = 0xD6;  //"2"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x03:Data_buffer[7] = 0xF4;  //"3"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x04:Data_buffer[7] = 0x6C;  //"4"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x05:Data_buffer[7] = 0xBC;  //"5"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x06:Data_buffer[7] = 0xBE;  //"6"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x07:Data_buffer[7] = 0xE0;  //"7"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x08:Data_buffer[7] = 0xFE;  //"8"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x09:Data_buffer[7] = 0xFC;  //"9"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x0A:Data_buffer[0] |= 0x01;  //"10"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0xFA;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x0B:Data_buffer[0] |= 0x01;  //"11"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0x60;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;

            case 0x0C:Data_buffer[0] |= 0x01;  //"12"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0xD6;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x02;    //热标志
                      break;      
        }        
}
/************************************************************
                discrible:历史冷量数据提示符

                date     :05.04.20
************************************************************/
void Up_hisCooldata_Promptbuffer(unsigned char num)
{
    switch(num)
    {
            case 0x01:Data_buffer[7] = 0x60;  //"1"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x02:Data_buffer[7] = 0xD6;  //"2"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志                      
                      break;

            case 0x03:Data_buffer[7] = 0xF4;  //"3"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x04:Data_buffer[7] = 0x6C;  //"4"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x05:Data_buffer[7] = 0xBC;  //"5"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x06:Data_buffer[7] = 0xBE;  //"6"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x07:Data_buffer[7] = 0xE0;  //"7"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x08:Data_buffer[7] = 0xFE;  //"8"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x09:Data_buffer[7] = 0xFC;  //"9"
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x0A:Data_buffer[0] |= 0x01;  //"10"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0xFA;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x0B:Data_buffer[0] |= 0x01;  //"11"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0x60;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;

            case 0x0C:Data_buffer[0] |= 0x01;  //"12"
                      Data_buffer[7] |= 0x01;
                      Data_buffer[7] |= 0xD6;
                      Data_buffer[9] = 0x70;  //"k","W","h"
                      Data_buffer[8] = 0x01;  //冷标志
                      break;      
    }  
}
/******************************************************************************
                discrible:擦除某一段的子程序

                date     :05.04.20
******************************************************************************/
void erase_seg(unsigned char segment)          //擦除某一段的子程序,可以单独使用
{
    unsigned int *flash_ptr;
    _DINT();                                //关闭中断
    FCTL2 = FWKEY+FSSEL0+FN0;               //选择FLASH的擦写时钟  FWKEY==0x95写口令
    switch(segment)
    {
        case 1:flash_ptr=(unsigned int *)0xFC00;//segment 1系统时间数据
            break;
        case 2:flash_ptr=(unsigned int *)0xFA00;//segment 2热量流量数据
            break;
        case 3:flash_ptr=(unsigned int *)0xF800;//segment 3校温数据
            break;
        case 4:flash_ptr=(unsigned int *)0xF600;//segment 3校温数据
            break;
    }
    FCTL1=FWKEY+ERASE;                        //使能擦除操作
    FCTL3=FWKEY;                              //FLASH解锁
    *flash_ptr=0;                             //空写,启动擦除
    FCTL1=FWKEY;                              //关闭擦除操作
    FCTL3=FWKEY+LOCK;                         //FLASH锁定
    _EINT();                                  //打开中断
}

/******************************************************************************
                discrible:写入num个字节的子程序

                date     :05.04.20
******************************************************************************/
void wr_byte(unsigned int address,unsigned char *abyte,unsigned char num)  //可以单独使用
{
    unsigned char *add;
    unsigned char i;
    _DINT();                                  //关闭中断
    add=(unsigned char *)address;
    FCTL2=FWKEY+FSSEL0+FN0;                   //选择FLASH擦写时钟
    FCTL1=FWKEY+WRT;                          //使能写入操作
    FCTL3=FWKEY;                              //FLASH解锁

    for(i=0;i<num;i++)
        *(add+i)=*(abyte+i);                  //写入字节

    FCTL1=FWKEY;                              //关闭写入操作
    FCTL3=FWKEY+LOCK;                         //FLASH锁定
    _EINT();                                  //打开中断
}

/******************************************************************************
                discrible:将校温数据写入ROM(包括入口出口)

                date     :05.04.20
******************************************************************************/
void Save_AdjustTempData(void)
{
    unsigned char AdjustTemp_data[10];//校温参数,集中放在一起,方便存入ROM

    AdjustTemp_data[0] = LoIn_temp[0];                   //入口5度实际温度值
    AdjustTemp_data[1] = LoIn_temp[1];
    AdjustTemp_data[2] = (unsigned char )InSub_temp;     //入口温差低字节
    AdjustTemp_data[3] = (unsigned char )(InSub_temp>>8);//入口温差高字节

    AdjustTemp_data[4] = LoOut_temp[0];                  //出口5度实际温度值
    AdjustTemp_data[5] = LoOut_temp[1];
    AdjustTemp_data[6] = (unsigned char )OutSub_temp;     //出口温差低字节
    AdjustTemp_data[7] = (unsigned char )(OutSub_temp>>8);//出口温差高字节

    AdjustTemp_data[8] = Key_symbol;                      //校准用到的符号
    AdjustTemp_data[9] = adjust_symbol;                   //校准用到的符号

    erase_seg(0x03);                                      //擦除第3段ROM
    wr_byte(0xF800,AdjustTemp_data,10);                   //写入校温数据
}

/******************************************************************************
                discrible:调用存储程序,存入热量,冷量及流量数据

                date     :05.04.20
******************************************************************************/
void Save_HeatFlowData(void)
{
    unsigned char HeatFlowTemp_data[20],i;
    for(i=0;i<4;i++)
        HeatFlowTemp_data[0+i]=Heat_GJ[i];
    for(i=0;i<4;i++)
        HeatFlowTemp_data[4+i]=Heat_WH[i];
    for(i=0;i<4;i++)
        HeatFlowTemp_data[8+i]=Flux[i];
    for(i=0;i<4;i++)
        HeatFlowTemp_data[12+i]=Cool_GJ[i];
    for(i=0;i<4;i++)
        HeatFlowTemp_data[16+i]=Cool_WH[i];

    erase_seg(0x02);                               //擦除第2段ROM
    wr_byte(0xFA00,HeatFlowTemp_data,20);          //写入热量,流量数据
}

/******************************************************************************
                discrible:保存系统时间数据

                date     :05.04.20
******************************************************************************/
void Save_DateData(void)
{
    unsigned char DateTemp_data[6],i;
    for(i=0;i<3;i++)
        DateTemp_data[0+i]=Date[i];//存入日期,从低字节开始存:日,月,年
    for(i=0;i<3;i++)
        DateTemp_data[3+i]=Time[i];//存入时间,从低字节开始存:分,小时

    erase_seg(0x01);                   //擦除第1段ROM
    wr_byte(0xFC00,DateTemp_data,6);   //写入系统时间数据
}

⌨️ 快捷键说明

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