|
|
/*废气塔自动控水*/
#include "stc8g.h"
sbit TA1=P3^2; //废气塔1水位检测
sbit TA2=P3^3; //废气塔2水位检测
sbit KA=P5^5; //继电器输出
sbit LED=P5^4; //工作指示灯
void Delay(unsigned int t); //函数声明
unsigned int c=0;
void Timer0_Init(void) //5毫秒@12.000MHz
{
AUXR |= 0x80; //定时器时钟1T模式
TMOD &= 0xF0; //设置定时器模式
TL0 = 0xA0; //设置定时初始值
TH0 = 0x15; //设置定时初始值
TF0 = 0; //清除TF0标志
ET0=1; //使能定时器0中断
EA=1; //使能总中断
TR0 = 1; //定时器0开始计时
}
void main() //主函数
{
P5M0 |= 0x30; P5M1 &= ~0x30; //P5^5,P5^4推挽输出
P3M0 &= ~0x0c; P3M1 |= 0x0c; //P3^2,P3^3高阻输入
KA=1; //继电器断开
LED=1; //工作指示灯灭
Delay(10000); //延时
LED=0; //工作指示灯亮
while(1)
{
if(TA1==0|TA2==0) //判断水池水位是否超
{
Delay(20000); //延时
if(TA1==0|TA2==0) //再次确认水位是否超
{
KA=0; //继电器输出
}
}
else if(TA1==1&TA2==1) //判断水池水位是否未超
{
Delay(20000); //延时
if(TA1==1&TA2==1) //再次确认水位是否未超
{
Timer0_Init(); //定时器0初始化
}
}
}
}
void Delay(unsigned int t) //延时函数
{
while(--t);
}
void Timer0_ISR() interrupt 1 //定时器0中断函数
{
TL0 = 0xA0; //重装定时初始值
TH0 = 0x15; //重装定时初始值
c++;
if(c>=60000) //5分钟延时
{
c=0;
KA=1;
}
}
|
评分
-
查看全部评分
|