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

📄 main.c

📁 msp430F22x4的C语言程序示例.
💻 C
字号:
#include "msp430x20x2.h"
//此程序是用ADC10单通道多次方式测片内温度二极管的电压
//                MSP430F20x2
//             -----------------
//         /|\|              XIN|-
//          | |                 |
//          --|RST          XOUT|-
//            |                 |
//            |A10 (Temp)   P1.0|-->LED

volatile unsigned int ad_value[10];
int main( void )
{
  WDTCTL=WDTPW+WDTHOLD;                   //关看门狗
  BCSCTL1 =CALBC1_1MHZ;                   //设定DCO为1MHZ
  DCOCTL =CALBC1_1MHZ;
  //时钟源选AD内部时钟并4分频,选通道10,AD启动信号来源选TA.OUT1,选单通道连续采样
  ADC10CTL1=ADC10DIV_3+INCH_10+SHS_1+CONSEQ_2;
  //选1.5V为正向参考,地为负参考,AD中断使能,打开参考,启动AD模块(不是启动AD转换)
  ADC10CTL0=SREF_1+ADC10SHT_3+ADC10IE+REFON+ADC10ON;
  TACCR0=30;                              //延时等待参考稳定
  TACCTL0 |=CCIE;                         //CCR0中断使能
  TACTL=TACLR+MC_1+TASSEL_2;              //TA增计数,时钟源为smclk
  _BIS_SR(LPM0_bits+GIE);                 //进入低功耗0,使能总中断,等待参考稳定
  TACCTL0 &=~CCIE;                        //CCR0中断禁止
  _BIC_SR(GIE);                           //关总中断
  ADC10CTL0 |=ENC;                        //AD转换使能
  TACCTL1=OUTMOD_4;                       //CCR1选输出模式4,当TAR=0时,输出高电平
  TACTL  =TASSEL_2+MC_2;                  //TA改为连续计数,smclk时钟源
  _BIS_SR(LPM0_bits+GIE);                 //进入低功耗0,使能总中断,等待10AD完成
  _NOP();                             
  return 0;  
}

#pragma vector = TIMERA0_VECTOR           //TA0中断服务,用来参考稳定
__interrupt void ta0_isr(void)
{
  TACTL=0;                                //关TA
  _BIC_SR_IRQ(LPM0_bits);                 //退出低功耗
}

#pragma vector = ADC10_VECTOR             //ADC10中断服务
__interrupt void adc_isr(void)            
{
  static char i=0;
  ad_value[i]=ADC10MEM;                   //保存AD结果
  i++;
  if(i==10)                               //作10次AD
  _BIC_SR_IRQ(LPM0_bits+GIE);             //退出低功耗
}

⌨️ 快捷键说明

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