📄 sys_fun.c
字号:
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 + -