/****************************************************************************
文件名:adc12.c
编写者:czhang
描述:ADC12模块程序。用于14xx系列。
MCLK:DCO ACLK:32.768kHz
版本:2005-4 V1.0
*****************************************************************************/
#include <msp430x14x.h>
#include "adc12.h"
unsigned char Wait=0; //等待转换结束的标志位 0:没有结束 1:结束
unsigned int AdMem[16]; //转换结果缓冲区
#define AD_CI 10
unsigned char AdCi=AD_CI; //单通道或者序列多次转换的转换次数
#define DUO_CI 1 //0:单通道或者序列单次转换 1:单通道或者序列多次转换
/****************************************************************************
初始化
****************************************************************************/
void Adc12Init()
{
ADC12CTL0 &= ~ENC; //使AD模块处于初始状态
ADC12CTL0 = MSC+REFON+REF2_5V+SHT0_15+SHT1_15; //使用内部2.5V参考电压,使用采样保持器。
}
/****************************************************************************
打开或关闭ADC12模块
doit:0:打开 100:关闭
****************************************************************************/
void Adc12Open(unsigned char doit)
{
if(doit==0)
{
ADC12CTL0 |= ADC12ON;
ADC12CTL0 |= ENC; //允许转换
}
else if(doit==100)
{
ADC12CTL0 &= ~ADC12ON; //不允许转换
ADC12CTL0 &= ~ENC;
}
}
/****************************************************************************
设置转换模式
adr:转换的首地址。取值范围为0~15
mod:转换模式。0:单通道单次 1:序列通道单次 2:单通道多次 3:序列通道多次
****************************************************************************/
void AdcDo(unsigned int adr,unsigned char mod)
{
ADC12CTL1 = (adr<<12)+SHP+(mod<<1); //SHP表示由采样定时器控制采样
}
/****************************************************************************
设置通道
tongdao:选择的模拟输入通道,取值范围为0~15
eos:0表示序列没有结束,0x80表示在序列转换时,表示本次转换结束后,本转换序列结束。
mem:转换存储器控制寄存器,取值范围为0~15
verf:参考电压,取值范围为0~7
inter:0:本通道转换完后不引发中断 1:本通道转换完后引发中断
****************************************************************************/
void SetTongDao(unsigned char tongdao,unsigned char eos,unsigned char mem,unsigned char verf,unsigned char inter)
{
char *pmem_ctl= ADC12MCTL;
pmem_ctl += mem;
*pmem_ctl = tongdao+ eos + (verf<<4);
if(inter==0)
ADC12IE &= ~(0x1<<mem);
else
ADC12IE |= (0x1<<mem);
}
/****************************************************************************
软件引发转换开始
****************************************************************************/
void Adc12Go()
{
unsigned char q0;
for(q0=0;q0<16;q0++)
AdMem[q0]=0;
Wait=0;
ADC12CTL0 |= ENC+ADC12SC; //转换开始
while(Wait==0) //等待转换结束
;
}
/*****************************************************************************
AD转换器中断函数
******************************************************************************/
#pragma vector=ADC_VECTOR
__interrupt void Adc()
{
#if DUO_CI==0 //单通道或者序列单次转换
unsigned char q0;
int *pmem=ADC12MEM;
Wait=1; //转换结束的标志位置位
for(q0=0;q0<16;q0++)
{
AdMem[q0]= *pmem;
pmem++;
}
#elif DUO_CI==1 //单通道或者序列多次转换
unsigned char q0;
unsigned int iq0;
int *pmem=ADC12MEM;
if(Wait==0)
{
for(q0=0;q0<16;q0++)
{
AdMem[q0] += *pmem;
pmem++;
}
AdCi--;
if(AdCi==0)
{
Adc12Open(100); //关闭ADC12模块
Wait=1; //转换结束的标志位置位
for(q0=0;q0<16;q0++)
{
AdMem[q0] = AdMem[q0]/AD_CI;
}
AdCi=AD_CI;
}
}
else
{
for(q0=0;q0<16;q0++)
{
iq0 += *pmem;
pmem++;
}
}
#endif
}
/****************************************************************************
从ADC12MEM中读出转换结果,本函数读出了ADC12MEM所有的16个寄存器,可根据需要进行
修改,不读出所有的寄存器。
padc:读出的结果保存在数组中,padc为指向此数组的指针
****************************************************************************/
void AdcGet(unsigned int *padc)
{
unsigned char q0;
for(q0=0;q0<16;q0++)
{
*padc= AdMem[q0];
padc++;
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
ADC.rar_MPS430adc_mps430 adc0809
共88个文件
r43:17个
c:16个
h:12个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
0 下载量 161 浏览量
2022-09-23
08:08:14
上传
评论
收藏 134KB RAR 举报
温馨提示
这是MPS430的魔术转化程序,共有4个,初学者可以根据此程序了解MPS430的ADC工作原理
资源推荐
资源详情
资源评论
收起资源包目录
ADC.rar (88个子文件)
ADC12-2
Resistance.dep 4KB
df_bh_timera.h 185B
main.c 1KB
zu.h 64B
Resistance.ewp 37KB
df_bh_timera.c 2KB
General.c 1KB
settings
Resistance.dbgdt 5KB
Resistance.dni 754B
Resistance.wsdt 4KB
zu.c 2KB
comparator.c 1KB
Resistance.ewd 9KB
Debug
List
Exe
Resistance.d43 15KB
Obj
Resistance.pbd 698B
main.r43 7KB
zu.r43 8KB
comparator.r43 5KB
General.r43 3KB
df_bh_timera.r43 7KB
Resistance.eww 164B
comparator.h 112B
general.h 294B
ADC12-4
adc12.h 314B
main.c 2KB
ADC12_1.ewp 37KB
ADC12_1.ewd 9KB
ADC12_1.dep 2KB
ADC12.eww 161B
adc12.c 4KB
wendu.h 138B
settings
ADC12_1.dni 735B
adc121.dni 617B
adc121.dbgdt 6KB
ADC12_2.dbgdt 6KB
ADC12_1.dbgdt 4KB
ADC12_2.dni 773B
ADC12.wsdt 3KB
wendu.c 560B
Debug
List
Exe
ADC12_1.d43 15KB
ADC12_2.d43 16KB
adc121.d43 11KB
Obj
main_m.r43 10KB
adc12.r43 10KB
wendu.r43 2KB
main.r43 11KB
ADC12-1
slope.dep 4KB
df_bh_timera.h 185B
slope.ewd 9KB
main.c 1KB
slope.h 78B
df_bh_timera.c 2KB
General.c 645B
slope.ewp 37KB
settings
slope.wsdt 5KB
Resistance.dbgdt 7KB
slope.dni 754B
slope.dbgdt 7KB
Resistance.dni 712B
Resistance.wsdt 4KB
slope.eww 159B
comparator.c 2KB
slope.c 2KB
Debug
List
Exe
Resistance.d43 14KB
slope.d43 19KB
Obj
main.r43 6KB
slope.r43 10KB
comparator.r43 5KB
General.r43 4KB
df_bh_timera.r43 7KB
comparator.h 136B
general.h 241B
ADC12-3
adc12.h 314B
adc12_2.dep 2KB
adc12_2.ewd 9KB
adc12_2.eww 161B
adc12_2.ewp 37KB
adc12.c 4KB
main_m.c 2KB
wendu.h 142B
settings
adc12_2.wsdt 3KB
adc12_2.dbgdt 63B
adc12_2.dni 550B
wendu.c 562B
Debug
List
Exe
adc12_2.d43 16KB
Obj
main_m.r43 10KB
adc12.r43 13KB
wendu.r43 2KB
共 88 条
- 1
资源评论
邓凌佳
- 粉丝: 65
- 资源: 1万+
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功