#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;
}
|