搜索
bottom↓
回复: 6

请教关于MPS430单片机AD转换的问题

[复制链接]

出0入0汤圆

发表于 2010-11-19 21:18:03 | 显示全部楼层 |阅读模式
430单片机的AD转换结果寄存器,和AD输入口是一一对应的吗,比如p6.0对应ADC12MEM0。有这种关系吗?

下面是一段主程序,我想改成其他的AD口,我研究了很久也没有成功,我要是改成P6.1,应该修改哪里啊,只修改这里,能行吗
void main( void )
{

    WDTCTL = WDTPW + WDTHOLD;    //关狗
    BoardConfig(0xbe);          //学习板的资源配置
   
    Ini_Lcd();                  //初始化液晶
   
    Disp_HZ(0x80,hang1,8);     //液晶显示第一行数据
    Disp_HZ(0x90,hang2,8);
    Disp_HZ(0x8c,hang3,8);
    Disp_HZ(0x98,hang4,8);
    P6SEL |= 0x01;                    // 使能ADC通道
    ADC12CTL0 = ADC12ON+SHT0_8+MSC;   // 打开ADC,设置采样时间
    ADC12CTL1 = SHP+CONSEQ_2;         // 使用采样定时器
    ADC12IE = 0x01;                   // 使能ADC中断
    ADC12CTL0 |= ENC;                 // 使能转换
    ADC12CTL0 |= ADC12SC;             // 开始转换
   
    _EINT();
    LPM4;
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-11-19 22:16:40 | 显示全部楼层
2年前竞赛用的430 现在基本都忘了。。。在电脑里找到一个那时候写的程序 你参考下吧

adc12.c
------------------------------------------------------------------------------

#include "adc12.h"

//------------------------------------------------------------------------------
//ADC初始化函数
void ADCInit(void)
{
  P6SEL |= (BIT0+BIT1+BIT2+BIT3);           //端口的第二功能,A0-A3通道输入
  ADC12CTL0 |= ADC12ON;                     //开ADC12
  ADC12CTL0 |= MSC;                         //连续转换模式
  ADC12CTL0 |= SHT0_2;                      //设置采样时间
  ADC12CTL0 |= REF2_5V;                     //内部参考源,2.5V
  ADC12CTL0 |= REFON;                       //启动内部参考电压
  
  ADC12CTL1 |= ADC12SSEL_1;                  //AD采样时钟源为SMCLK
  ADC12CTL1 |= SHS_0;                        //采样信号为ADC12SC输出   
  ADC12CTL1 |= SHP;                          //SAMPCON信号来自采样时钟
  ADC12CTL1 |= CONSEQ_3;                     //多通道多次采样
  ADC12MCTL0 = INCH_0 + SREF_1;                     //A0,Vref+
  ADC12MCTL1 = INCH_1 + SREF_1;                     //A1,Vref+
  ADC12MCTL2 = INCH_2 + SREF_1;               //A2,Vref+
  ADC12MCTL3 = INCH_3 + SREF_1 +EOS;         //A3,Vref+
  ADC12IE = BIT3;                             //允许中断                                    
  ADC12CTL0 |= ENC;                             //允许进行转换
  ADC12CTL0 |= ADC12SC;                             //开始进行转换
  
  return ;
}

//------------------------------------------------------------------------------
//ADC12中断函数
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
  BuffA0[index]=ADC12MEM0;
  BuffA1[index]=ADC12MEM1;
  BuffA2[index]=ADC12MEM2;
  BuffA3[index]=ADC12MEM3;
  index++;
  if(index==100)index=0;
}


adc12.h
------------------------------------------------------------------------------
//------------------------------------------------------------------------------
//该程序对应的是msp430f169单片机的内部12位ADC的使用,取四路通道A0--A3
//对应接口为P6.0---P6.3
//------------------------------------------------------------------------------
#ifndef _430169AD_H_H
#define _430169AD_H_H

#include "msp430x16x.h"     

extern unsigned int BuffA0[100];     //数据缓冲区
extern unsigned int BuffA1[100];     //数据缓冲区
extern unsigned int BuffA2[100];     //数据缓冲区
extern unsigned int BuffA3[100];     //数据缓冲区
extern unsigned char index;       //指示缓冲区位置

void ADCInit(void);         

#endif

出0入0汤圆

发表于 2010-11-19 23:35:11 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-12-14 08:52:52 | 显示全部楼层
回复【楼主位】balance
-----------------------------------------------------------------------

当然不是一一对应的啦,和ADC12MCTLx的设置有关,好像是用bit0-3设置,可以设置成A0-A7,以及avcc、avss、verf、veref等

出0入0汤圆

发表于 2010-12-17 17:01:38 | 显示全部楼层
mark
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-5-25 23:53

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表