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

📄 test.c

📁 MSP430单片机AD12模块测试程序源代码
💻 C
字号:
#include <stdlib.h>
#include <msp430x16x.h>
#include "test.h"

unsigned int AD_Mean[2] = {0};
/***************************************************************************
                              初始化单片机
***************************************************************************/
void Sys_Init(void)
{
      int i;
      WDTCTL = WDTPW + WDTHOLD;           //Stop Watch Dog
      BCSCTL1 &= ~( XT2OFF + XTS );       //Open XT2,ACLK=LFXT1(Low frequency Mode)
      do
      {
          IFG1 &= ~OFIFG;                 //Clear OSCFault flag
          for(i=0xff; i>0; i--);          //Time for flag to set
      }
      while( ( IFG1 & OFIFG ) != 0);      //OSCFault flag still set?
      BCSCTL2 |= SELM1 + SELS;            //MCLK选XT2,1分频;SMCLK选XT2,1分频
      //Periph_Init();       
}

void AD_Init(void)
{
      P6SEL &= ~BIT2;
      P6DIR &= ~BIT2;
      ADC12CTL0 &= ~ENC;
      ADC12CTL0 = ADC12ON + SHT0_12;
      //ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_12 + MSC;
      ADC12CTL1 = SHP + CONSEQ_0;
      ADC12MCTL0 = INCH_10;
      ADC12CTL0 |= ENC;
}
void AD_Read(void)
{
	ADC12CTL0 |= ADC12SC; 
        if( (ADC12CTL0 & ADC12SC) == 1)
        {
            OpenLED();
            Delay_1ms(100);
            CloseLED();
            _NOP();
        }
        //while( (ADC12CTL1&0x01) == 1);
        while ((ADC12IFG & BIT0)==0);
        AD_Mean[0] = ADC12MEM0;
}

/***************************************************************************
                            定时器A的设置
***************************************************************************/
void TimerAInit(void)
{
      TACTL = TASSEL0 + ID1 + TACLR;
      TACTL &= ~(MC0+MC1);
}

void StartTimerA(void)
{
      TACTL &= ~(MC0+MC1);
      TACCTL0 &=~CCIE;
      TACCR0= 0xffff;
      TACTL |= MC1;
}

void StopTimerA(void)
{
      TACTL &= ~(MC0+MC1);	
}

/***************************************************************************
                            定时器B的设置
***************************************************************************/
void TimerBInit(void)
{
      TBCTL = TBSSEL0  + TBCLR;
      TBCTL &= ~(MC0+MC1);
}

void StartTimerB(void)
{
      TBCTL &= ~(MC0+MC1);	
      TBCCTL0 &=~CCIE;
      TBCCR0= 0xffff;			
      TBCTL |= MC1;			
}

void StopTimerB(void)
{
      TBCTL &= ~(MC0+MC1);	
}

/***************************************************************************
                            延时子程序
                        实参为延时的毫秒数
***************************************************************************/
void Delay_1ms(unsigned int delaytime)
{
      unsigned int temp1,temp2;
      temp1 = TBR;
      temp2 = TBR + delaytime*33;
      while(((temp2>temp1)&&(temp1<=TBR)&&(TBR<temp2))||((temp2<temp1)&&((temp1<=TBR)||(TBR<temp2))));	
}

/***************************************************************************
                            延时子程序
                        实参为延时的秒数
***************************************************************************/
void Delay_1s(char delaytime)
{
      unsigned char i;
      for(i=0; i<delaytime; i++)
      {
            Delay_1ms(1000);
      }
}
void LED_Ini(void)
{
    P5SEL &= ~(BIT5 + BIT6 + BIT7);
    P5DIR |= BIT5 + BIT6 + BIT7;
    P5OUT &= ~(BIT5 + BIT6 + BIT7);
}
void OpenLED(void)
{
    P5OUT |= BIT5 + BIT6 + BIT7;
}

void CloseLED(void)
{
    P5OUT &= ~(BIT5 + BIT6 + BIT7);
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -