3165|3

31

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于ADC12模块的问题 [复制链接]

#include
#include "BoardConfig.h"
#define uint unsigned int
#define uchar unsigned char
uchar static adc_flag=0;
uchar static count=0;

void int_clk()
{
  uchar i;
  BCSCTL1&=~XT2OFF;
  BCSCTL2|SELM1+SELS;
  do
  {
    IFG1&=~OFIFG;
    for(i=0;i<100;i++)
      _NOP;
  }
  while((IFG1&OFIFG)!=0);
  IFG1&~OFIFG;
}

int_adc()
{
  P6SEL|=0x01;
  ADC12CTL0=ADC12ON+MSC+SHT0_2+REF2_5V+REFON;
  ADC12CTL1=SHP+CONSEQ_2;
  ADC12MCTL0=0x10;
  ADC12IE=0x01;
  ADC12CTL0|=ENC;
}

#pragma vector = TIMERA0_VECTOR
__interrupt void ADC12ISR (void)
{
  uint results[10];
  adc_flag=1;
  results[count]=ADC12MEM0;
  count++;
}

int main(void)
{
  WDTCTL=WDTPW+WDTHOLD;
  BoardConfig(0xb8);                   //关闭数码管、流水灯和电平转换

  int_clk();
  int_adc();
  _EINT();
  ADC12CTLO|=ADC12SC;
  while(1);
}
只是单通道多次转换模式的程序,请教:转设来存放转换结果的数组只有11位,每次转换完地结果存放在数组中,当数组用完之后呢?转换会自动停止吗?会的话是在哪里设置的?还有为什么不用清理中断标志?

最新回复

中断标志自动清零  详情 回复 发表于 2011-7-22 23:53
 
点赞 关注

回复
举报

10

帖子

0

TA的资源

一粒金砂(中级)

沙发
 
1.你可以设置一个判断语句,当数组>10时,就进行清零;
2.当你访问ADC12MEM0时,系统就自动清除中断标志了。
我也刚用430不久,以上回答如有错误,敬请谅解!~~
 
 

回复

219

帖子

0

TA的资源

纯净的硅(初级)

板凳
 
我觉得你的中断程序写的有些简单了:
#pragma vector = TIMERA0_VECTOR
__interrupt void ADC12ISR (void)
{
  results[count]=ADC12MEM0;  //当访问ADC12MEM0,      ADC12IFG.0就自动清零了,不用软件清零
   count++;
  if(count==12)  
     {
       count=0;
      下面是数组求和再求平均值的语句,就不写了
     }
}
 
 
 

回复

3

帖子

0

TA的资源

一粒金砂(初级)

4
 
中断标志自动清零
 
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表