|
void init()
{
TMOD &= 0xf0;
TMOD|= 0x01;
TH0=(65536-50000)/256; //设置T0计数初值高8位,定时时间50ms
TL0=(65536-50000)%256; //设置T0计数初值低8位
ET0=1; //开放T0中断允许
EA=1; //开放总中断允许
}
void init1()
{
TMOD &= 0x0f;
TMOD|= 0x10;
TH1=(65536-50000)/256; //设置T0计数初值高8位,定时时间50ms
TL1=(65536-50000)%256; //设置T0计数初值低8位
ET1=1; //开放T0中断允许
EA=1; //开放总中断允许
}
void timer0() interrupt 1
{
TH0=(65536-50000)/256; //重新设置T0计数初值高8位
TL0=(65536-50000)%256; //重新设置T0计数初值低8位
k++;
LCD_Clear(); //50ms计数器加1
if(k==20){
k=0; //50ms计数器清零
time++;
}
if(time>60){
time=0;
}
}
void timer1() interrupt 3
{
TH1=(65536-50000)/256; //重新设置T0计数初值高8位
TL1=(65536-50000)%256; //重新设置T0计数初值低8位
z++;
LCD_Clear();
if(z==20)
{
z=0; //50ms计数器清零
waterjs--;
}
if(waterjs==0&&djs==0){
sol=0;//自动关断电磁阀
waterjs=5;
djs=1;
}
if(waterjs==0&&djs==1){
djs=2;
flag=1;
sol=1;//5秒之后电磁阀打开
flow=1;
DelayMs(2000);
}
if(det==1&&flow==1){//没有水流 正常
led2=0;
led3=0;
led4=1;
TR1=0;
flag=0;
mode+=1;
if(mode==1){
time=30;
if(det==0&&flag==2){
TR0=0;
waterjs=15;
flag=1;
if(flag==1&&waterjs!=0){
flag=3;
TR1=1;//kai
}}
if(time==45){TR0=0;}
}
if(mode==2){
TR0=1;
waterjs=10;
if(time==60){TR0=0;}
}
if(mode==3){
TR0=1;
waterjs=5;
if(time==30){TR0=0;}
}
if(mode==4){
time=0;
TR0=1;
waterjs=20;
TR1=1;
mode0_flag=1;
if(waterjs==0&&mode0_flag==1)
{
sol=1;
mode=0;
}
}
}
if(det==0&&flow==1){//有水流漏水
flow=3;
waterjs=2;//两秒之后
}
if(det==0&&waterjs==0){
led5=0;
flow=2;
}
if(waterjs==0&&flow==2){
sol=0;//2秒之后电磁阀关闭
led4=0;
led3=0;
led2=1;
TR1=0;
time=0;
}
if(waterjs<=2){
led1=0;
DelayMs(100);
led1=1;
}
}
void time30(){
if(0<=time&&time<=30){
if(det==0&&flag==0){
TR0=0;
waterjs=15;
flag=1;
if(flag==1&&waterjs!=0){
flag=2;
TR1=1;//kai
}}if(det){
TR0=1;
}
}
}
void time45(){
if(30<=time&&time<=45){
if(det==0&&flag==0){
TR0=0;
waterjs=10;
flag=1;
if(flag==1&&waterjs!=0){
TR1=1;//kai
TR0=0;}//guan
}if(det){
TR0=1;
led=1;
}
}
}
void time60(){
if(45<=time&&time<=60){
if(det==0&&flag==0){
TR0=0;
waterjs=5;
flag=1;
if(flag==1&&waterjs!=0){
TR1=1;//kai
TR0=0;}//guan
}if(det){
TR0=1;
}
}
}
|
|