?? alarm-v3.c
字號(hào):
if(InTemp0.oneBit.b5) //上次檢測(cè)到輸入為高電平
{
HI_TIME[5]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b5) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b5 = 0;
FRE_CONT[5]++;
HI_TIME[5] = 0; //清0
}
}
else
{
LOW_TIME[5]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b5) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b5 = 1;
FRE_CONT[5]++;
LOW_TIME[5] = 0; //清0
}
}
//-------------------------------------第7路----------------------------------//
if(InTemp0.oneBit.b6) //上次檢測(cè)到輸入為高電平
{
HI_TIME[6]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b6) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b6 = 0;
FRE_CONT[6]++;
HI_TIME[6] = 0; //清0
}
}
else
{
LOW_TIME[6]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b6) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b6 = 1;
FRE_CONT[6]++;
LOW_TIME[6] = 0; //清0
}
}
//-------------------------------------第8路----------------------------------//
if(InTemp0.oneBit.b7) //上次檢測(cè)到輸入為高電平
{
HI_TIME[7]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b7) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b7 = 0;
FRE_CONT[7]++;
HI_TIME[7] = 0; //清0
}
}
else
{
LOW_TIME[7]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b7) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b7 = 1;
FRE_CONT[7]++;
LOW_TIME[7] = 0; //清0
}
}
//-------------------------------------第9路----------------------------------//
if(InTemp0.oneBit.b8) //上次檢測(cè)到輸入為高電平
{
HI_TIME[8]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b8) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b8 = 0;
FRE_CONT[8]++;
HI_TIME[8] = 0; //清0
}
}
else
{
LOW_TIME[8]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b8) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b8 = 1;
FRE_CONT[8]++;
LOW_TIME[8] = 0; //清0
}
}
//-------------------------------------第10路----------------------------------//
if(InTemp0.oneBit.b9) //上次檢測(cè)到輸入為高電平
{
HI_TIME[9]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b9) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b9 = 0;
FRE_CONT[9]++;
HI_TIME[9] = 0; //清0
}
}
else
{
LOW_TIME[9]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b9) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b9= 1;
FRE_CONT[9]++;
LOW_TIME[9] = 0; //清0
}
}
//-------------------------------------第11路----------------------------------//
if(InTemp0.oneBit.b10) //上次檢測(cè)到輸入為高電平
{
HI_TIME[10]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b10) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b10 = 0;
FRE_CONT[10]++;
HI_TIME[10] = 0; //清0
}
}
else
{
LOW_TIME[10]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b10) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b10 = 1;
FRE_CONT[10]++;
LOW_TIME[10] = 0; //清0
}
}
//-------------------------------------第12路----------------------------------//
if(InTemp0.oneBit.b11) //上次檢測(cè)到輸入為高電平
{
HI_TIME[11]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b11) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b11 = 0;
FRE_CONT[11]++;
HI_TIME[11] = 0; //清0
}
}
else
{
LOW_TIME[11]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b11) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b11 = 1;
FRE_CONT[11]++;
LOW_TIME[11] = 0; //清0
}
}
//-------------------------------------第13路----------------------------------//
if(InTemp0.oneBit.b12) //上次檢測(cè)到輸入為高電平
{
HI_TIME[12]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b12) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b12 = 0;
FRE_CONT[12]++;
HI_TIME[12] = 0; //清0
}
}
else
{
LOW_TIME[12]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b12) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b12 = 1;
FRE_CONT[12]++;
LOW_TIME[12] = 0; //清0
}
}
//-------------------------------------第14路----------------------------------//
if(InTemp0.oneBit.b13) //上次檢測(cè)到輸入為高電平
{
HI_TIME[13]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b13) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b13 = 0;
FRE_CONT[13]++;
HI_TIME[13] = 0; //清0
}
}
else
{
LOW_TIME[13]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b13) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b13 = 1;
FRE_CONT[13]++;
LOW_TIME[13] = 0; //清0
}
}
//-------------------------------------第15路----------------------------------//
if(InTemp0.oneBit.b14) //上次檢測(cè)到輸入為高電平
{
HI_TIME[14]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b14) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b14 = 0;
FRE_CONT[14]++;
HI_TIME[14] = 0; //清0
}
}
else
{
LOW_TIME[14]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b14) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b14 = 1;
FRE_CONT[14]++;
LOW_TIME[14] = 0; //清0
}
}
//-------------------------------------第16路----------------------------------//
if(InTemp0.oneBit.b15) //上次檢測(cè)到輸入為高電平
{
HI_TIME[15]++; //高電平持續(xù)時(shí)間增加
if(!InTemp1.oneBit.b15) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b15 = 0;
FRE_CONT[15]++;
HI_TIME[15] = 0; //清0
}
}
else
{
LOW_TIME[15]++; //低電平持續(xù)時(shí)間增加
if(InTemp1.oneBit.b15) //當(dāng)前輸入狀態(tài)為低電平
{
InTemp0.oneBit.b15 = 1;
FRE_CONT[15]++;
LOW_TIME[15] = 0; //清0
}
}
}
/*****************************************************************************
功能:中斷服務(wù)程序_定時(shí)器1,用于判斷是否為45~65Hz的信號(hào)
用法:
******************************************************************************/
void Timer1_int2(void)
{
unsigned char q0;
if(FRE_CONT[0]>=45 && FRE_CONT[0]<=65)
{
if(!RelayFlag.oneBit.b0)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b0 = 1; //更新第1路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b0) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b0 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
else //如果檢測(cè)到第1路為“0”
{
if(HI_TIME[0]>200) //保持高電平400MS以上
{
RelayFlag.oneBit.b0 = 0; //更新第1路輸出狀態(tài)為低電平
if(InFlag.oneBit.b0) //斷電后如再變?yōu)?0~60HZ信號(hào),則黃燈開
{
YellowLed.oneBit.b0 = 1; //輸入信號(hào)由高變?yōu)榈蜁r(shí),黃燈亮
}
}
if(LOW_TIME[0]>200)
{
if(!RelayFlag.oneBit.b0)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b0 = 1; //更新第1路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b0) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b0 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[1]>=45 && FRE_CONT[1]<=65)
{
if(!RelayFlag.oneBit.b1)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b1 = 1; //更新第2路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b1) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b1 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
else //如果檢測(cè)到第1路為“0”
{
if(HI_TIME[1]>200) //保持高電平400MS以上
{
RelayFlag.oneBit.b1 = 0; //更新第2路輸出狀態(tài)為低電平
if(InFlag.oneBit.b1) //斷電后如再變?yōu)?0~60HZ信號(hào),則黃燈開
{
YellowLed.oneBit.b1 = 1; //輸入信號(hào)由高變?yōu)榈蜁r(shí),黃燈亮
}
}
if(LOW_TIME[1]>200)
{
if(!RelayFlag.oneBit.b1)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b1 = 1; //更新第2路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b1) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b1 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[2]>=45 && FRE_CONT[2]<=65)
{
if(!RelayFlag.oneBit.b2)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b2 = 1; //更新第3路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b2) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b2 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
else //如果檢測(cè)到第3路為“0”
{
if(HI_TIME[2]>200) //保持高電平400MS以上
{
RelayFlag.oneBit.b2 = 0; //更新第3路輸出狀態(tài)為低電平
if(InFlag.oneBit.b2) //斷電后如再變?yōu)?0~60HZ信號(hào),則黃燈開
{
YellowLed.oneBit.b2 = 1; //輸入信號(hào)由高變?yōu)榈蜁r(shí),黃燈亮
}
}
if(LOW_TIME[2]>200)
{
if(!RelayFlag.oneBit.b2)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b2 = 1; //更新第3路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b2) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b2 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[3]>=45 && FRE_CONT[3]<=65)
{
if(!RelayFlag.oneBit.b3)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b3 = 1; //更新第4路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b3) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b3 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
else //如果檢測(cè)到第4路為“0”
{
if(HI_TIME[3]>200) //保持高電平400MS以上
{
RelayFlag.oneBit.b3 = 0; //更新第4路輸出狀態(tài)為低電平
if(InFlag.oneBit.b3) //斷電后如再變?yōu)?0~60HZ信號(hào),則黃燈開
{
YellowLed.oneBit.b3 = 1; //輸入信號(hào)由高變?yōu)榈蜁r(shí),黃燈亮
}
}
if(LOW_TIME[3]>200)
{
if(!RelayFlag.oneBit.b3)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b3 = 1; //更新第4路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b3) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b3 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[4]>=45 && FRE_CONT[4]<=65)
{
if(!RelayFlag.oneBit.b4)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b4 = 1; //更新第5路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b4) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b4 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
else //如果檢測(cè)到第5路為“0”
{
if(HI_TIME[4]>200) //保持高電平400MS以上
{
RelayFlag.oneBit.b4 = 0; //更新第5路輸出狀態(tài)為低電平
if(InFlag.oneBit.b4) //斷電后如再變?yōu)?0~60HZ信號(hào),則黃燈開
{
YellowLed.oneBit.b4 = 1; //輸入信號(hào)由高變?yōu)榈蜁r(shí),黃燈亮
}
}
if(LOW_TIME[4]>200)
{
if(!RelayFlag.oneBit.b4)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b4 = 1; //更新第5路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b4) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b4 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
}
//////////////////////////////////////////////////////////////////////////////////////////////////////////////////
if(FRE_CONT[5]>=45 && FRE_CONT[5]<=65)
{
if(!RelayFlag.oneBit.b5)
{
Flag.oneBit.b0 = 1; //開啟聲音報(bào)警
}
RelayFlag.oneBit.b5 = 1; //更新第6路輸出狀態(tài)為高電平
if(!InFlag.oneBit.b5) //如果為0,則為第一次報(bào)警
{
InFlag.oneBit.b5 = 1; //置“1”,表示已經(jīng)報(bào)警一次
}
}
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號(hào)
Ctrl + =
減小字號(hào)
Ctrl + -