#include "common.h"
#include "lm041drv.h"
#define waterUp 210
#define waterDown 50
#define tempUp 205
#define tempDown 60
#define pressDown 70
sbit EOC=P3^5;
sbit sound=P3^4;
uchar water,temp,press;
void T0Init()
{
TMOD=0x01;
TH0=0xF7;
TL0=0x1F;
ET0=1;
EA=1;
}
void DisplayUI()
{
SetRowCol(0,0);
printf(" V Up Down");
SetRowCol(1,0);
printf("W: %03u %03u %03u ",(uint)water,(uint)waterUp,(uint)waterDown);
SetRowCol(2,0);
printf("T: %03u %03u %03u ",(uint)temp,(uint)tempUp,(uint)tempDown);
SetRowCol(3,0);
printf("P: %03u %03u ",(uint)press,(uint)pressDown);
}
void main()
{
uchar xdata *adc0808[3]={0x78ff,0x79ff,0x7aff};
uchar xdata *reg373=0xbfff;
uchar alarmLedInf=0xff;
uchar normalCount=0;
Lm041Init();
T0Init();
SetRowCol(2,0);
printf("hello");
while(1)
{
*adc0808[0]=0;
while(EOC==0);
*adc0808[0]=0;
while(EOC==0);
water=*adc0808[0];
*adc0808[1]=0;
while(EOC==0);
*adc0808[1]=0;
while(EOC==0);
temp=*adc0808[1];
*adc0808[2]=0;
while(EOC==0);
*adc0808[2]=0;
while(EOC==0);
press=*adc0808[2];
normalCount=0;
if(water>waterUp)
{
alarmLedInf=alarmLedInf&0xfe;//D0位清0,水位上限报警灯亮
alarmLedInf=alarmLedInf|(1<<1);//D1位置1,水位下限报警灯灭
}
else if(water<waterDown)
{
alarmLedInf=alarmLedInf&~(1<<1);//D1位清0,水位下限报警灯亮
alarmLedInf=alarmLedInf|(1<<0);//D0位置1,水位上限报警灯灭
}
else
{
alarmLedInf=alarmLedInf|(3<<0);//D0,D1位置1,水位上下限报警灯灭
normalCount++;
}
if(temp>tempUp)
{
alarmLedInf=alarmLedInf&~(1<<2);//D2位清0,温度上限报警灯亮
alarmLedInf=alarmLedInf|(1<<3);//D3位置1,温度下限报警灯灭
}
else if(temp<tempDown)
{
alarmLedInf=alarmLedInf&~(1<<3);//D3位清0,温度下限报警灯亮
alarmLedInf=alarmLedInf|(1<<2);//D2位置1,温度上限报警灯灭
}
else
{
alarmLedInf=alarmLedInf|(3<<2);//D2,D3位置1,温度上下限报警灯灭
normalCount++;
}
if(press<pressDown)
{
alarmLedInf=alarmLedInf&~(1<<4);//D4位清0
}
else
{
alarmLedInf=alarmLedInf|(1<<4);//D4位置1
normalCount++;
}
if(normalCount==3)
{
alarmLedInf=alarmLedInf&~(1<<5);//D5位清0
TR0=0;
}
else
{
alarmLedInf=alarmLedInf|(1<<5);//D5位置1
TR0=1;
}
*reg373=alarmLedInf;
DisplayUI();
}
}
void T0Sever() interrupt 1
{
TH0=0xF7;
TL0=0x1F;
sound=~sound;
}
|