📄 main.c
字号:
#include "Head.h"
uchar Alarm,PhoneNO[13];//,tempoverflow;//声音、警报、电话号码、
uchar Sound[11]={15,29,27,0xff,0,0,0,0,0,0xff};
uchar InputBuff[13],InputLen=6,Funtion,InputBuff2[13],Inputcounter;
bit data SoundEn=0,InputDone=0,InputErr=0,InputEn=0;
bit data GetPSW=0,SecondInPut=0,AlarmHappen,Button;//zc1;//HANG=0,
extern int temp_1820,Button_02;
void delay10ms(uchar tim);
void main()
{
uchar temp[2];
IniSerial();
initial_8880();
MainInitial();
//zc1=0;//补上的可以删
while(1)
{ uint m; uchar n;
if(Alarm) //报警
{ RW24XX(InputBuff2,12,0x10,0xa1); //read phone number
if(HANDUP==0)
{m=0;
HANDUP=1; //挂机
while(m<60000)m++;
}
LED0=0;
m=0;
HANDUP=0; //摘机
while(m<60000)m++;
m=0;
while(SendDTMF(InputBuff2)!=1);
timer0=1; //delay begin
GetPSW=1; //pass
InputEn=1; //enable input
InputLen=1;
if(Alarm<5){Sound[0]=16;Sound[1]=16;Sound[2]=20;Sound[3]=Alarm;
Sound[4]=31;Sound[5]=0xff;}
if(Alarm==5) {Sound[0]=16;Sound[1]=16;Sound[2]=42; Sound[3]=0xff;}
Alarm=0;
AlarmHappen=1;
}
if(temp_1820>250) //250检测报警温度的时间间隔
{
temp_1820=1;
m=get_temp(); //get temperature
RW24XX(temp,2,0x20,0xa1); //read temperature
if(m>(temp[0]*100+temp[1]*10))
{LED0=0;
Alarm=5;
temp_1820=0;
} // tempoverflow++;
else LED0=1; // else tempoverflow=0;
// if(tempoverflow>2)Alarm=1;
}
/*if(Button_02>600)
{ if(Button2==0) //有按键2?
{ Button=LINE;
LINE =!Button; //if(LINE==0)LINE=1;
} // else LINE=0;
} */
if(SoundEn==1) //sound
{ musicstate=0;
SoundEn=0;
InputEn=1;
while(music(Sound)!=1);
}
if(InputErr==1) // pass word input error
{InputErr=0;
Inputcounter++;
if(Inputcounter>3) {timer0=10000;Inputcounter=0;} // over 3 times then handup
Sound[0]=44;Sound[1]=0xff;
SoundEn=1;InputEn=1;InputLen=6;
}
if(Funtion)
{uchar j=0;
switch(Funtion)
{
case 8:SoundEn=1; //1 chanle control
Sound[j++]=35;
Sound[j++]=45;
Sound[j++]=34;
Sound[j]=0xff;
InputLen=2;
InputEn=1;
j=0;
if(zc1) Sound[j++]=1;
if(CH2==0) Sound[j++]=2;
if(CH3==0) Sound[j++]=3;
if(CH4==0) Sound[j++]=4;
if(j==0) break;
Sound[j++]=19;
Sound[j++]=17;
Sound[j++]=45;
Sound[j]=0xff;
break;
case 2: //4 change phone number//
Sound[0]=29;Sound[1]=0xff; //请输入
SoundEn=1;
InputLen=11;
InputEn=1;
break;
case 24: //get phone number
if(SecondInPut==1)
{ for(j=0;j<13;j++)
{if(InputBuff2[j]==3)break;
if(InputBuff[j]!=InputBuff2[j])
{Sound[0]=44;Sound[1]=0xff;
SoundEn=1;
InputEn=1;
SecondInPut=0; //input error.
j=0xff;
break;
}
}
if(j==0xff || InputBuff[j]!=InputBuff2[j])
{Sound[0]=44;Sound[1]=0xff;
SoundEn=1;
InputEn=1;
SecondInPut=0;
break; //input error.
}
InputBuff[j++]=0xff; //input ok!!
RW24XX(InputBuff,j,0x10,0xa0);
Sound[0]=30;Sound[1]=0xff;
SoundEn=1;
InputEn=1;
InputLen=1;
SecondInPut=0;
break;
}
else //first time input
for(j=0;j<13;j++){ InputBuff2[j]=InputBuff[j];if(InputBuff[j]==3)break;}
Sound[0]=29;Sound[1]=0xff;
SoundEn=1;
InputLen=11;
InputEn=1;
SecondInPut=1;
break;
case 12: //3
Sound[0]=29;Sound[1]=0xff; //请输入 tempreture
SoundEn=1;
InputLen=3;
InputEn=1;
break;
case 26://temprture
if(SecondInPut==1)
{ /*for(j=0;j<4;j++)
{if(InputBuff2[j]==3)break;
if(InputBuff[j]!=InputBuff2[j])
{Sound[0]=44;Sound[1]=0xff;
SoundEn=1;
InputLen=3;
InputEn=1;
SecondInPut=0;
j=0xff;
break; //error
}
}
if(j==0xff || InputBuff[j]!=InputBuff2[j]) break; //ok?*/
// InputBuff[j++]=0xff;
// InputBuff[0]=loopdata(InputBuff[0]);
InputBuff[1]=loopdata(InputBuff[1]);
// InputBuff[0]=0x00;
// InputBuff[1]=0x01;
RW24XX(InputBuff,2,0x20,0xa0); //写入温度
Sound[0]=30;Sound[1]=34;Sound[2]=0xff;
SoundEn=1;
InputEn=1;
InputLen=1;
SecondInPut=0;
temp_1820=1; //timer begin
break;
}
else
for(j=0;j<4;j++){ InputBuff2[j]=InputBuff[j];if(InputBuff[j]==3)break;}
Sound[0]=29;Sound[1]=0xff; //copy the first input data
SoundEn=1;
InputLen=3;
InputEn=1;
SecondInPut=1;
break;
case 4: //2
//m=get_temp();
m=get_temp();
j=0;
Sound[j++]=36; //current temperature
Sound[j++]=m/100;
Sound[j++]=11;
Sound[j++]=(m-Sound[1]*100)/10;
n=(m-Sound[1]*100-Sound[j-1]*10)/1;
if(Sound[j-1]==0) j-=1;
if(n>9 || n==0) n=10;
Sound[j++]=22;
Sound[j++]=n;
//if(Sound[j-1]==0) Sound[j-1]=10;
Sound[j++]=21;
Sound[j++]=34;
Sound[j]=0xff; //temperature
SoundEn=1;
InputLen=1;
InputEn=1;
break;
case 10: //5 chPSW
Sound[0]=29;Sound[1]=0xff; //请输入
SoundEn=1;
InputLen=6;
InputEn=1;
break;
case 20: // chanle control
ChanleCTL(InputBuff[0],InputBuff[1]);
InputLen=2;
InputEn=1;
break;
case 3: //#
case 21: //ask for input
Sound[0]=38;Sound[1]=1;Sound[2]=41;Sound[3]=2;
Sound[4]=39;Sound[5]=3;Sound[6]=40;Sound[7]=4;Sound[8]=37;
Sound[9]=5;Sound[10]=0xff;SecondInPut=0;
SoundEn=1;InputEn=1;GetPSW=1;InputLen=1;break;
case 22://psw compare
if(SecondInPut==1)
{
for(j=0;j<6;j++)
if(InputBuff[j]!=InputBuff2[j])
{Sound[0]=44;Sound[1]=0xff;
SoundEn=1;
InputLen=6;
InputEn=1;
SecondInPut=0;
break;
}
if(j!=6) break;
InputBuff[j++]=0xff;
RW24XX(InputBuff,j,0x00,0xa0);
InputLen=1;
Sound[0]=43;Sound[1]=34;Sound[2]=0xff;
SoundEn=1;
InputEn=1;
SecondInPut=0;
break;
}
else {for(j=0;j<6;j++) InputBuff2[j]=InputBuff[j];
Sound[0]=29;Sound[1]=0xff;
SoundEn=1;
InputLen=6;
InputEn=1;
SecondInPut=1;
break;}
default:
case 23: //input error
Sound[0]=44;Sound[1]=0xff;
SoundEn=1;InputEn=1;
break;
}
j=0;
Funtion=0;
}
if(InputDone==1)
{
if(Compare()==1) //比较
{Sound[0]=14;Sound[1]=38;Sound[2]=1;Sound[3]=41;Sound[4]=2;
Sound[5]=39;Sound[6]=3;Sound[7]=40;Sound[8]=4;Sound[9]=37;
Sound[10]=5;Sound[11]=0xff;
SoundEn=1;InputEn=1;GetPSW=1;InputLen=1;
}
else
{
Sound[0]=44;Sound[1]=0xff;
SoundEn=1;InputEn=1;
}
InputDone=0;
}
}
}
//-----------------psw compare-----------------------
bit Compare(void)
{uchar i=0;
RW24XX(InputBuff2,7,0x00,0xa1);
for(i=0;i<6;i++)
{
if(InputBuff2[i]!=InputBuff[i]) return 0;
}
if(InputBuff[i]==0xff)return 1;
return 0;
}
//-------------------------------------------------------通道选择
void ChanleCTL(uchar Value,uchar Status)
{
bit data flag;
switch(Value)
{case 8://zc1=0;
if(Status==13) {if(zc1!=1){CH1=0;delay10ms(200);CH1=1;Sound[3]=17;zc1=1; }else {Sound[3]=17;}}//if(zc1==1){if(Status==13){CH1=0;delay10ms(500);CH1=1;Sound[3]=17; zc1=0;}}//if(Status==13) {if(zc1==0){CH1=0;delay10ms(500);CH1=1;Sound[3]=17; }else { zc1=1; Sound[3]=17;}}//{if(zc1=1) { CH1=0;delay10ms(10);CH1=1;Sound[3]=17;}else{ zc1=0; Sound[3]=17;}}
if(Status==3 ) {if(zc1!=0){CH1=0;delay10ms(200);CH1=1;Sound[3]=18;zc1=0;}else {Sound[3]=18;}}//if(zc1==0){if(Status==3 ) {CH1=0;delay10ms(500);CH1=1;Sound[3]=18;zc1=1;}}//if(Status==3 ) {if(zc1==1){CH1=0;delay10ms(500);CH1=1;Sound[3]=18;}else {zc1=0;Sound[3]=18;}}//{if(zc1=0) {CH1=0;delay10ms(10);CH1=1;Sound[3]=18;}else {zc1=1;Sound[3]=18;}}
Sound[1]=1;
flag=1;
break;
case 4:
if(Status==13) {CH2=0;Sound[3]=17;}
if(Status==3) {CH2=1;Sound[3]=18;}
Sound[1]=2;
flag=1;
break;
case 12:
if(Status==13){CH3=0;Sound[3]=17;}
if(Status==3) {CH3=1; Sound[3]=18;}
Sound[1]=3;
flag=1;
break;
case 2:
if(Status==13){CH4=0;Sound[3]=17;}
if(Status==3){CH4=1;Sound[3]=18;}
Sound[1]=4;
flag=1;
break;
}
if(flag!=0){flag=0;Sound[0]=20;Sound[2]=19; Sound[4]=0xff;SoundEn=1;return;}
else
Sound[0]=45;
Sound[1]=0xff;
SoundEn=1;
return;
}
uchar loopdata(uchar dd)
{uchar i,mask=8,result=0,temp[4]={0x01,0x02,0x04,0x08};
for(i=0;i<4;i++)
{if(dd & mask)result+=temp[i];
mask>>=1;
}
return result;
}
void delay10ms(uchar tim)
{
unsigned int i,j,k;
for(i=0;i<tim;i++);
for(j=0;j<20000;j++);
for(k=0;k<20000;k++);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -