简介: 基于MSP430F1232的ADC10系列通道单次采样实验。
/******************************************************************************************************************************
*
* 文件名: main.c
*
* 文件描述: 基于MSP430F1232的ADC10系列通道单次采样实验
*
* 版本号: 1.0
*
* 修改记录:
*
********************************************************************************************************************************/
//==============================================================================================================================
#include "io430.h"
#include "in430.h"
//==============================================================================================================================
unsigned long int result[3]; //用来存放转换结果的数组
unsigned int AD_VALUE[3];
char ADC10FLAG=0; //转换标志
/*==============================================================================================================================
*
* 函 数 名: readdata.
*
* 参 数: 无
*
* 功能描述:
*
* 将转换数据读出,存放在 result[3]中;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
void readdata(void)
{
char i,j=2;
for(i=0;i<3;i++)
{
result[j] = AD_VALUE[i];
j=j-1;
}
_NOP();
}
/*==============================================================================================================================
*
* 函 数 名: Init_Clk.
*
* 参 数: 无
*
* 功能描述:
*
* 基础时钟初始化设置;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
void Init_Clk(void)
{
int i;
BCSCTL1 = XTS + DIVA_3;
do
{
BCSCTL1 &= ~XT2OFF; //turn on XT2
IFG1 &= ~OFIFG; //high frequency crystal is stable
for (i=0; i < 2000; i++)
{ }
}while ((IFG1 & OFIFG) !=0);
// MClk = 6M / 1 = 6M ;
// SMClk = 6M / 8 = 750K;
// AClk = 6M / 8 = 750K;
BCSCTL2 |= SELM_2 + DIVM_0 + SELS + DIVS_3;
}
/*==============================================================================================================================
*
* 函 数 名: TimerA_Uint.
*
* 参 数: 无
*
* 功能描述:
*
* 定时器初始化设置,定时1秒;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
void TimerA_Uint(void)
{
P2DIR |= 0x02; // P2.1 output
TACTL = TACLR;
TACCR0 = 46875; //750K/8/46875 =2Hz
TACCTL0 = CCIE;
TACTL = TASSEL_2 + ID_3 + MC_1;
}
/*==============================================================================================================================
*
* 函 数 名: ADC_Uint.
*
* 参 数: 无
*
* 功能描述:
*
* ADC10设置,系列通道单次采样;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
void ADC_Uint(void)
{
ADC10CTL0 &= ~ENC;
ADC10DTC0 = ADC10CT; //选择为连续转移数据
ADC10CTL0 |= SREF_1;
ADC10CTL0 |= ADC10SHT_3;
ADC10CTL0 |= REFON;
ADC10CTL0 |= REF2_5V;
ADC10CTL0 |= MSC; //连续采样转换
ADC10CTL0 |= ADC10IE;
ADC10CTL0 |= ADC10ON;
ADC10CTL1 |= INCH_2; //A2--A0
ADC10CTL1 |= SHS_0;
ADC10CTL1 |= CONSEQ_1; //系列通道单次采样
ADC10DTC1 = 0x03; // 连续采样3次中断一次
ADC10SA = (unsigned int)AD_VALUE + 1; //数据转移起始地址
ADC10CTL0 |= ENC + ADC10SC;
}
/*==============================================================================================================================
*
* 函 数 名: main.
*
* 参 数: 无
*
* 功能描述:
*
* 系统主程序
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
void main(void)
{
WDTCTL = WDTPW + WDTHOLD;
Init_Clk();
TimerA_Uint();
ADC_Uint();
_EINT();
while(1)
{
if(ADC10FLAG==1)
{
ADC10FLAG = 0;
readdata();
_NOP();
}
}
}
/*==============================================================================================================================
*
* 函 数 名: ADC10_ISR.
*
* 参 数: 无
*
* 功能描述:
*
* ADC10中断服务程序,用于设置转换结束标志;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
// ADC10 interrupt service routine
#pragma vector=ADC10_VECTOR
__interrupt void ADC10_ISR (void)
{
ADC10FLAG = 1;
}
/*==============================================================================================================================
*
* 函 数 名: Timer_A.
*
* 参 数: 无
*
* 功能描述:
*
* Timer_A中断服务程序,定时1秒钟启动一次转换;
*
* 返 回 值: 无
*
* 作 者: areak 2009/8/16
*
================================================================================================================================*/
#pragma vector=TIMERA0_VECTOR
__interrupt void Timer_A (void)
{
P2OUT ^= 0x02; // Toggle P2.1
ADC10CTL0 |= ENC + ADC10SC;
}
//==============================================================================================================================
//END OF FILE
//==============================================================================================================================
上一篇:MSP430系统时钟寄存器详解
下一篇:单片机调EEPROM存储器24C256
推荐阅读最新更新时间:2024-11-04 18:20
设计资源 培训 开发板 精华推荐
- Sg1526 简化欠压锁定的典型应用
- AZ7033ZTR低压指示检测器典型应用电路
- DC1080A、LTC4268 演示板、具有同步无光反激控制器的高功率 PD
- 使用 Allegro MicroSystems 的 STR-A6151 的参考设计
- 具有错误标志/上电复位功能的 Si9181 微功率 350mA CMOS 固定输出 LDO 稳压器的典型应用
- 【训练营】第一次参加训练营搞的小贱钟
- #第六届立创电赛#一个普通的蓝牙小音响
- LTC3445EUF 演示板,I2C 可控降压稳压器
- MB3771 参考电压产生和电压跌落检测的典型应用电路
- LT6654BHS6-2.5 具有升压输出电流和电流限制的电压基准的典型应用
- 下载有礼:2017年泰克亚太专家大讲堂第一期:大数据与云存储环境下的高速总线技术演进
- 2023 DigiKey KOL 系列——将TinyML融入IoT物联网应用中
- TI即将直播【 MSP430 系列最新超声波流量测量方案】,你会错过?报名看直播赢双重好礼喽!
- 2023 DigiKey KOL 系列——将TinyML融入IoT物联网应用中
- 瑞萨电子RL78/G14 demo板低价开团 19.9元包邮
- 英飞凌家用暖通空调解决方案邀你拆盲盒
- 开学季!EEworld下载中心 Cortex主题资源上传
- 推荐有礼,分享有你!DSP学习季开学了,推荐你最喜欢的TI DSP资料!
- 好书共读 | 《控制之美(卷2)——最优化控制MPC与卡尔曼滤波器》