📄 fault.c
字号:
#include "common.h"
void Earse_All_Fault_List(void)
{
/*
unsigned char code temp[16][8]={
// 标志 年 月 日 时 分 秒 故障
0xff,0x08,0x02,0x23,0x10,0x32,0x00,0x01,
0xff,0x08,0x02,0x24,0x21,0x11,0x01,0x00,
0xff,0x08,0x02,0x25,0x01,0x00,0x02,0x05,
0xff,0x08,0x02,0x27,0x14,0x44,0x03,0x00,
0x00,0x08,0x02,0x29,0x09,0x35,0x04,0x0d,
0x00,0x08,0x03,0x30,0x07,0x28,0x05,0x00,
0x00,0x08,0x03,0x30,0x04,0x14,0x06,0x06,
0x00,0x08,0x04,0x30,0x00,0x04,0x07,0x00,
0x00,0x08,0x06,0x01,0x21,0x40,0x08,0x07,
0x00,0x08,0x01,0x13,0x11,0x49,0x09,0x00,
0x00,0x08,0x01,0x23,0x00,0x54,0x10,0x05,
0x00,0x08,0x01,0x25,0x15,0x52,0x11,0x00,
0x00,0x08,0x01,0x28,0x20,0x30,0x12,0x0b,
0x00,0x08,0x01,0x30,0x01,0x33,0x13,0x00,
0x00,0x08,0x02,0x02,0x13,0x03,0x14,0x0c,
0x00,0x08,0x02,0x03,0x22,0x05,0x15,0x00,
};
unsigned char i,j;
*/
unsigned char i,j;
sector_erase(ADDRESS_fault_list);
for(i=0;i<16;i++) for(j=0;j<8;j++) byte_program(ADDRESS_fault_list+i*8+j,0xff);
}
void Show_Fault_List_Line(unsigned char line,unsigned char sn)
{
unsigned char code message[19][16]={
{"恢复 "},
{"快熔报警 "},
{"水温高报警 "},
{"正排温度高 "},
{"负排温度高 "},
{"水温高报警 "},
{"正排温度高 "},
{"负排温度高 "},
{"变压器温度高 "},
{"缺相故障 "},
{"水压低报警 "},
{"过流报警 "},
{"过压报警 "},
{"网电压高报警 "},
{"网电压低报警 "},
{"水温高报警,封脉"},
{"正排温度高,封脉"},
{"负排温度高,封脉"},
{"变压器温高,封脉"},
};
ShowChar(line,0,fault_list[sn][2]/16+0x30);
ShowChar(line,1,fault_list[sn][2]%16+0x30);
ShowChar(line,2,'/');
ShowChar(line,3,fault_list[sn][3]/16+0x30);
ShowChar(line,4,fault_list[sn][3]%16+0x30);
ShowChar(line,5,'-');
ShowChar(line,6,fault_list[sn][4]/16+0x30);
ShowChar(line,7,fault_list[sn][4]%16+0x30);
ShowChar(line,8,':');
ShowChar(line,9,fault_list[sn][5]/16+0x30);
ShowChar(line,10,fault_list[sn][5]%16+0x30);
ShowChar(line,11,':');
ShowChar(line,12,fault_list[sn][6]/16+0x30);
ShowChar(line,13,fault_list[sn][6]%16+0x30);
ShowChar(line,14,' ');
ShowLine(line,15,message[fault_list[sn][7]]);
}
void Show_Fault_List(void)
{
unsigned char i,j,k,line;
unsigned char sn;
unsigned char Rev_Line_On_Page=1;
ShowLine(0,9,"**故障列表**");
k=0;
for(i=0;i<16;i++)
{
if( byte_read(ADDRESS_fault_list+i*8)==0xff) continue;
for(j=0;j<8;j++)
{
fault_list[k][j]=byte_read(ADDRESS_fault_list+i*8+j);
}
k++;
}
for(i=k;i<16;i++) fault_list[i][0]=0xff;
for(sn=0;sn<16;sn++) if(fault_list[sn][0]==0xff) break;
if(sn==0) //空列表
{
CH452_Write(CH452_RESET);
EX0=1;
key=100;
CH452_Write(CH452_SYSON2W); //配置CH452为两线制方式,SDA用做按键中断输出
while(key!=16) feeddog();
return;
}
for(i=0;i<6,i<sn;i++)
{
Show_Fault_List_Line(2+i,i);
}
ReverseShowLine(0,30,2); //反白显示第三行
line=1;
CH452_Write(CH452_RESET);
EX0=1;
key=100;
CH452_Write(CH452_SYSON2W); //配置CH452为两线制方式,SDA用做按键中断输出
while(1)
{
feeddog();
if(key==100) continue;
CH452_Write(CH452_SYSOFF); //关键盘中断
if(key==15) //下
{
if(line==sn)
{
key=100;
CH452_Write(CH452_SYSON2W); //配置CH452为两线制方式,SDA用做按键中断输出
continue;
}
line++;
ReverseShowLine(0,30,Rev_Line_On_Page+1);
Rev_Line_On_Page++;
if(Rev_Line_On_Page==7)
{
for(i=0;i<6;i++)
{
Show_Fault_List_Line(2+i,i+line-6);
}
ReverseShowLine(0,30,7);
Rev_Line_On_Page=6;
}
else ReverseShowLine(0,30,Rev_Line_On_Page+1);
}
if(key==14) //上
{
if(line==1)
{
key=100;
CH452_Write(CH452_SYSON2W); //配置CH452为两线制方式,SDA用做按键中断输出
continue;
}
line--;
ReverseShowLine(0,30,Rev_Line_On_Page+1);
Rev_Line_On_Page--;
if(Rev_Line_On_Page==0)
{
for(i=0;i<6;i++)
{
Show_Fault_List_Line(2+i,i+line-1);
}
ReverseShowLine(0,30,2);
Rev_Line_On_Page=1;
}
else ReverseShowLine(0,30,Rev_Line_On_Page+1);
}
if(key==16) //ESC
{
ClearScreen(); //清屏
return;
}
key=100;
CH452_Write(CH452_SYSON2W); //配置CH452为两线制方式,SDA用做按键中断输出
}
}
//增加故障列表内容
void Add_Fault_List(void)
{
unsigned char i,j;
for(i=0;i<15;i++) //FIFO,原表上移
{
for(j=0;j<8;j++)
{
fault_list[i][j]=byte_read(ADDRESS_fault_list+i*8+8+j);
}
}
fault_list[15][0]=0x00; //增加新内容
fault_list[15][1]=ucCurtime[6];
fault_list[15][2]=ucCurtime[4];
fault_list[15][3]=ucCurtime[3];
fault_list[15][4]=ucCurtime[2];
fault_list[15][5]=ucCurtime[1];
fault_list[15][6]=ucCurtime[0];
fault_list[15][7]=Alarm;
sector_erase(ADDRESS_fault_list); //擦除
for(i=0;i<16;i++) //写入新表
{
for(j=0;j<8;j++)
{
byte_program(ADDRESS_fault_list+i*8+j,fault_list[i][j]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -