⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 基于msp430的一个系统运用系统函数kernel
💻 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 + -