ad.c
来自「ti公司msp430单片机自带的ad转换程序」· C语言 代码 · 共 66 行
C
66 行
/*************************************************************
* 文件名称:adc12.c
* 文件说明:adc12操作
*
*************************************************************/
#include <msp430x16x.h>
#define REF 33 //大于20mv输出1
unsigned char buffer;
unsigned char count;
/************************************************************
* 初始化ADC12
************************************************************/
void init_ADC12(void)
{
ADC12CTL0 = ADC12ON + REFON + REF2_5V + SHT0_2;// 设置ADC12 的内部参考电压2.5伏
ADC12CTL1 = SHP; // 设置使用采样时钟
ADC12MCTL0 = SREF_1; // 选择通道A0,2.5V参考电压
ADC12IE |= 0x01; // 使能中断
ADC12CTL0 |= ENC; // 使能转换
}
/***********************************************************
* 启动 ADC12
************************************************************/
void start_ADC12()
{
ADC12CTL0 |= ADC12SC;
}
/***********************************************************
* 中断向量
************************************************************/
#pragma vector = ADC_VECTOR
__interrupt void ADC_Interrupt(void)
{
buffer = ADC12MEM0;
if(buffer >=REF)
count += 1; //大于20mv加1
LPM3_EXIT; //退出中断后退出低功耗模式
}
void main(void)
{
unsigned int iq0;
WDTCTL=WDTPW+WDTHOLD;
//使用XT2晶振
BCSCTL1 &= ~XT2OFF;//打开XT2振荡器
do
{
IFG1 &= ~OFIFG;//清除振荡器失效标志
for(iq0=0XFF;iq0>0;iq0--);//延时,等待XT2起振
}
while ((IFG1 & OFIFG)!= 0);//判断XT2是否起振
BCSCTL2=SELM_2+SELS;//选择MCLK、SMCLK为XT2
_EINT();
init_ADC12();
while(1)
{
start_ADC12();
LPM3;
}
}
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?