?? function.c
字號:
//** 1.將某一區的故障號轉換成設備類型
//*************************************************************************
uchar Turn_Type(uchar TempData)
{
uchar xdata return_data;
switch(TempData)
{
case 0://設備類型為鋼瓶
return_data=0x08;
break;
case 1://設備類型為聲光
return_data=0x03;
break;
case 2://設備類型為噴灑燈
return_data=0x04;
break;
case 3://設備類型為聯動設備
return_data=0x0a;
break;
case 4://設備類型為壓力開關
return_data=0x0b;
break;
case 5://設備類型為停止鍵
return_data=0x0c;
break;
case 6://設備類型為啟動鍵
return_data=0x0d;
break;
default:break;
}
//返回轉換后的數據
return return_data;
}
//*************************************************************************
//**函 數 名:ReadQuFault
//**輸 入:
//** QuNumber:故障檢測的區號
//**輸 出:無
//**功能描述:
//** 1.檢測某一個區的故障
//*************************************************************************
void ReadQuFault(uchar QuNumber)
{
uchar xdata fault_test;
uchar xdata temp_alreadly_fault;
uchar xdata DeNumber;
uchar xdata I;
switch(QuNumber)
{
case 1:CS_FAULT=ONEPORTFAULTEST; temp_alreadly_fault=alreadly_fault1;break;
case 2:CS_FAULT=TWOPORTFAULTEST; temp_alreadly_fault=alreadly_fault2;break;
case 3:CS_FAULT=THREEPORTFAULTEST;temp_alreadly_fault=alreadly_fault3;break;
case 4:CS_FAULT=FOURPORTFAULTEST; temp_alreadly_fault=alreadly_fault4;break;
default:break;
}
//讀取報警時間
Read12887(Clock_Time);
for(I=0;I<7;I++)
{
fault_test=CS_FAULT>>I;
if(((fault_test&0x01)==0x00)&&(((temp_alreadly_fault>>I)&0x01)==0x00))
{
if(fault_count[QuNumber][I]<20)fault_count[QuNumber][I]++;
else
{
DeNumber=Turn_Type(I);
SaveAlarmToBUFF(QuNumber,DeNumber,2);
//存入打印緩沖區
SaveAlarmToPrintBUFF(QuNumber,DeNumber,2);
//點亮故障燈
FaultLED(1);
fault_number++;
disp_fault_number = fault_number;
//滅消音燈
Mute_LED_CTRL(0);
//故障聲響設置
if(SoundType != 1 && SoundType != 2 && SoundType != 3 && SoundType != 4)
SoundType = 4;
if(machine_status<=0x30)
{
machine_status=0x30;
have_report=1;
}
switch(QuNumber)
{
case 1:alreadly_fault1|=(0x01<<I);break;
case 2:alreadly_fault2|=(0x01<<I);break;
case 3:alreadly_fault3|=(0x01<<I);break;
case 4:alreadly_fault4|=(0x01<<I);break;
default:break;
}
}
}
else
{
fault_count[QuNumber][I]=0;
}
}
}
//*************************************************************************
//**函 數 名:Read_Key
//**輸 入:無
//**輸 出:無
//**功能描述:讀取鍵值
//*************************************************************************
void Read_Key()
{
JP_DET=0;
KEYCOL_SCAN=CS_OUT2;
Delay123(5);
if((KEY_PORT&0x7f)!=0x7f)
{
Delay123(1000);
if((KEY_PORT&0x7f)!=0x7f)
{
//讀取鍵值
key_num=KEY_PORT;
key_num=~key_num;
key_num&=0x7f;
//如果沒有其它聲響
if(SoundType == 0)
{
//設置聲響類型
SoundType = 5;
}
MenuCount=3000;
backlamp_delay=3000;
}
}
}
//*************************************************************************
//**函 數 名:Key_Manage
//**輸 入:無
//**輸 出:無
//**功能描述:鍵盤處理主程序
//*************************************************************************
void Key_Manage()
{
uchar xdata hj_led_temp = 0;
uchar xdata gz_led_temp = 0;
uchar xdata zqd_led_temp = 0;
uchar xdata ys_led_temp = 0;
uchar xdata temp_led = 0;
//////////////////讀鍵盤操作//////////////////////
key_num=0xff;
Read_Key();
//按下自檢鍵
if(key_num==TEST)
{
Clr_Scr(0xff);
Test_flag = 1;
//發出聲響
BeepCtrl(1);
//開液晶背光
LCDLAMPCTRL(1);
Self_TEST_CTRL(1);
if(HJLED == 1) hj_led_temp = 1;
else hj_led_temp = 0;
if(GZLED == 1) gz_led_temp = 1;
else gz_led_temp = 0;
if(ZQDLED == 1) zqd_led_temp = 1;
else zqd_led_temp = 0;
if(YSLED == 1) ys_led_temp = 1;
else ys_led_temp = 0;
//點亮火警、故障、總啟動和延時燈
HJLED = 0;
GZLED = 0;
ZQDLED = 0;
YSLED = 0;
temp_led = CS_OUT2;
temp_led = temp_led&0xC7;
KEYCOL_SCAN = temp_led;
DelayMS(4000);
Self_TEST_CTRL(0);
HJLED = hj_led_temp;
GZLED = gz_led_temp;
ZQDLED = zqd_led_temp;
YSLED =ys_led_temp;
KEYCOL_SCAN = CS_OUT2;
//恢復顯示界面
if(machine_status!=0x10)have_report=1;
//消除聲響
BeepCtrl(0);
Test_flag = 0;
}
//消音鍵按下,并且有火警、故障、啟動、反饋。
if((key_num==MUTE)||((alarm_number!=0)&&(fault_number!=0)&&(start_number!=0)&&(feedback_number!=0)))
{
if(SoundType!=0&&SoundType!=5)
{
//讀取報警時間
Read12887(Clock_Time);
CD[0] = 0x20;
CD[1] = Clock_Time[6];
CD[2] = Clock_Time[5];
CD[3] = Clock_Time[4];
CD[4] = Clock_Time[2];
CD[5] = Clock_Time[1];
CD[6] = Clock_Time[0];
//打印時鐘
PrintClock(CD);
//打印換行
PrintTo(0x0d);
//設置漢字打印方式
PrintTo(0x1c); PrintTo(0x26);
PrintDoubleWord("消");PrintDoubleWord("音");
//取消漢字打印方式
PrintTo(0x1c); PrintTo(0x2e);
//打印換行
PrintTo(0x0d);
//消音燈亮
Mute_LED_CTRL(1);
//消除聲響
BeepCtrl(0);
//開關液晶背光的計數器清零
backlamp_delay=3000;
//開背光
LCDLAMPCTRL(1);
//聲音類型清零
SoundType = 0;
//聲音計數器清零
SoundCount = 0;
}
}
if((key_num==UP)) //向上鍵
{
//開關液晶背光的計數器清零
backlamp_delay=3000;
switch(machine_status)
{
case 0x30:if(disp_fault_number>1)
{
disp_fault_number--;
have_report=1;
}
break;
case 0x40:if(disp_stop_number>1)
{
disp_stop_number--;
have_report=1;
}
break;
case 0x50:if(disp_alarm_number>1)
{
disp_alarm_number--;
have_report=1;
}
break;
case 0x60:if(disp_feedback_number>1)
{
disp_feedback_number--;
have_report=1;
}
break;
case 0x70:if(disp_start_number>1)
{
disp_start_number--;
have_report=1;
}
break;
default: break;
}
}
//向下鍵
if((key_num==DOWN))
{
//開關液晶背光的計數器清零
backlamp_delay=3000;
switch(machine_status)
{
case 0x30:if(disp_fault_number<(fault_number))
{
disp_fault_number++;
have_report=1;
}
break;
case 0x40:if(disp_stop_number<(stop_number))
{
disp_stop_number++;
have_report=1;
}
break;
case 0x50:if(disp_alarm_number<(alarm_number))
{
disp_alarm_number++;
have_report=1;
}
break;
case 0x60:if(disp_feedback_number<(feedback_number))
{
disp_feedback_number++;
have_report=1;
}
break;
case 0x70:if(disp_start_number<(start_number))
{
disp_start_number++;
have_report=1;
}
break;
default: break;
}
}
//復位鍵
if(((key_num==RESET)&&(machine_status!=0x10)))
{
//讀取時間
Read12887(Clock_Time);
CD[0] = 0x20;
CD[1] = Clock_Time[6];
CD[2] = Clock_Time[5];
CD[3] = Clock_Time[4];
CD[4] = Clock_Time[2];
CD[5] = Clock_Time[1];
CD[6] = Clock_Time[0];
//打印時鐘
PrintClock(CD);
//打印換行
PrintTo(0x0d);
//設置漢字打印方式
PrintTo(0x1c); PrintTo(0x26);
PrintDoubleWord("復");PrintDoubleWord("位");
//取消漢字打印方式
PrintTo(0x1c); PrintTo(0x2e);
//打印換行
PrintTo(0x0d);
//系統初始化,變量初始化
InitializeSystem();
//程序指針跳轉到地址0運行
((void (code *) (void)) 0x0000) ();
}
//設置鍵
if(key_num==SETUP)
{
//開背光
LCDLAMPCTRL(1);
Sys_Setup();
}
//上,下鍵
if((key_num==QUERY)&&(machine_status>=0x30))
{
machine_status+=0x10;
if(machine_status>0x70)machine_status=0x30;
//看是否有故障信息
if(machine_status==0x30)
{
if(fault_number==0) //信息為0類型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
//看是否停止信息
if(machine_status==0x40)
{
if(stop_number==0) //信息為0類型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
//看是否有火警信息
if(machine_status==0x50)
{
if(alarm_number==0) //信息為0類型在+1
{
machine_status+=0x10;
}
else
have_report=1;
}
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -