📄 main.c
字号:
#include<msp430x24x.h>
//#include"iic.h"
#include"lcd.h"
//#include"adc12.h"
#include "adc.h"
#include"key.h"
#include"kind.h"
#include"mission.h"
#include"TA.h"
#define num 32
static uint A0results[num];
static uint A1results[num];
static uint A2results[num];
static uint A3results[num];
#define ON 1
#define OFF 0
/*
各部分的执行状态量
*/
uchar pump1_stat,pump2_stat,pump3_stat,pump4_stat,light_stat,fan_stat;
uchar page_stat;//当前显示的位置
void start_adc()
{
//WDTCTL=WDTPW+WDTHOLD;
P6SEL = 0x0f;
ADC12CTL0=ADC12ON+SHT0_8+MSC;
ADC12CTL1=SHP+CONSEQ_3;
ADC12MCTL0=INCH_0;
ADC12MCTL1=INCH_1;
ADC12MCTL2=INCH_2;
ADC12MCTL3=INCH_3+EOS;
ADC12IE =0x08;
ADC12CTL0 |= ENC;
_EINT();
ADC12CTL0 |=ADC12SC;
}
void close_adc()
{
_DINT();
ADC12CTL0 &=~ADC12SC;
ADC12IE &=~0x08;
_EINT();
}
//long shishu_inner,shishu_outer; //温度传感器返回的值,内部温度,外部温度
/*
温度传感器调用函数
*/
//int void iic_run();
unsigned long WetO,WetI,LightO,LightI;//外部湿度,内部湿度,外部光强,内部光强
//void start_adc();//开启服务,为内部ADC12
//void close();//关闭内部ADC12
uchar key_val; //键盘当前值
void init_key();//开启键盘服务
void (*point)(void);//指向显示函数
void close_all();//关闭所有服务
void main( void )
{
WDTCTL = WDTPW + WDTHOLD;// Stop watchdog timer to prevent time out reset
init_key();
init();
init_TimweA();
pump1_stat=0;pump2_stat=0;pump3_stat=0;pump4_stat=0;fan_stat=0;light_stat=0;
key_val=0;
init_mission();
show_pag0();
page_stat=1;
start_adc();
//close_adc();
while(1)
{
check_key();
}
}
void close_all(void)
{
init_mission();
}
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A(void)
{
point();
_NOP();
}
#pragma vector=ADC12_VECTOR
__interrupt void ADC12ISR(void)
{
static uchar indx=0;
A0results[indx++]=ADC12MEM0;
A1results[indx]=ADC12MEM1;
A2results[indx]=ADC12MEM2;
A3results[indx]=ADC12MEM3;
if(indx==num)
{
uchar i;
unsigned long A0sum=0,A1sum=0,A2sum=0,A3sum=0;
indx=0;
for(i=0;i<num;i++)
{
A0sum+=A0results[i];
A1sum+=A1results[i];
A2sum+=A2results[i];
A3sum+=A3results[i];
}
A0sum>>=5;
A1sum>>=5;
A2sum>>=5;
A3sum>>=5;
K0=(int)A0sum;
K1=(int)A1sum;
K2=(int)A2sum;
K3=(int)A3sum;
WetI=K0*100/4095;
WetO=K1*100/4095;
LightI=(4096-K2)*64/4095;
LightO=(4095-K3)*64/4095;
}
}
#pragma vector=PORT1_VECTOR
__interrupt void PORT1()
{
if(P1IFG&0x0f)
{
P2OUT=tam[key_val];
P1IFG=0;
}
if(key_val==9) P2OUT^=BIT5;
switch(page_stat)
{
//在第一页显示时
case 1:{
/*if(key_val==1) //如果此时按键值为1
{
show_pag1(); //显示下一页
point=&show_pag1; //将显示函数地址给指针,可以方便在定时器里刷新
page_stat=2;
}
if(key_val==6)
{
show_pag1();
point=&show_pag1;
page_stat=2;
}
//如果按键为9,则开/关灯
if(key_val==9)
{
if(light_stat==0)
{
open_light;
light_stat=1;
}
else
{
close_light;
light_stat=0;
}
}
key_val=0; //使键值为0,防止下次误判
*/
switch(key_val)
{
case 1:
{
show_pag1(); //显示下一页
point=&show_pag1; //将显示函数地址给指针,可以方便在定时器里刷新
page_stat=2;
break;
}
case 6:
{
show_pag1();
point=&show_pag1;
page_stat=2;
break;
}
/* case 9:
{
if(light_stat==0)
{
open_light;
light_stat=1;
}
else
{
close_light;
light_stat=0;
P2OUT^=BIT5;
break;
}*/
}
break;
}
case 2:
{
if(key_val==1)
{
show_pag21();
auto_run();
page_stat=3;
point=&show_pag21;
}
if(key_val==2)
{
show_pag3();
page_stat=5;
// point=&show_pag3;
}
if(key_val==3)
{
show_pag0();
page_stat=1;
// point=&show_pag0;
}
if(key_val==4) close_all();
// if(key_val==9) P2OUT^=BIT5;
key_val=0;
break;
}
case 3:
{
// auto_run();
if(key_val==8)
{
show_pag22();
page_stat=4;
point=&show_pag22;
}
if(key_val==6)
{
show_pag1();
// point=&show_pag1;
page_stat=2;
}
// if(key_val==9) P2OUT^=BIT5;
key_val=0;
break;
}
case 4:
{
if(key_val==7)
{
show_pag21();
point=&show_pag21;
page_stat=3;
}
if(key_val==1)
{
show_pag1();
page_stat=2;
// point=&show_pag1;
}
if(key_val==6)
{
show_pag1();
// point=&show_pag1;
page_stat=2;
}
//if(key_val==9) P2OUT^=BIT5;
key_val=0;
break;
}
case 5:
{
if(key_val==6)
{
show_pag1();
// point=&show_pag1;
page_stat=2;
}
if(key_val==1) //控制排水泵
{
if(pump1_stat==0)
{
open_pump1;
pump1_stat=1;
}
else
{
close_pump1;
pump1_stat=0;
}
}
if(key_val==2)
{
if(fan_stat==0)
{
open_fan;
fan_stat=1;
}
else
{
close_fan;
fan_stat=0;
}
}
if(key_val==3)
{
if(pump2_stat==0)
{
open_pump2;
open_pump3;
pump2_stat=1;
}
else
{
close_pump2;
close_pump3;
pump2_stat=0;
}
}
if(key_val==4)
{
if(pump4_stat==0)
{
open_pump4;
pump4_stat=1;
}
else
{
close_pump4;
pump4_stat=0;
}
}
// if(key_val==9) P2OUT^=BIT5;
key_val=0;
break;
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -