2640|1

3

帖子

0

TA的资源

一粒金砂(初级)

楼主
 

求程序解释 [复制链接]

以下是一段代码,求解释一下

1.main 函数执行顺序

2.中断标志位ADC12IFG是如何确定的

//*************************************************************************
// ADC初始化程序,用于配置ADC相关寄存器
//*************************************************************************
void ADC_Init()
{
  P6SEL|=0x01;                                    //选择ADC通道,设置对应IO口的功能模式 
  ADC12CTL0|= ADC12ON + SHT0_2 + REFON +REF2_5V ; //ADC电源控制开,16个CLK,内部基准2.5V
  ADC12CTL1|= ADC12SSEL1 + ADC12SSEL0;            //SMCLK做时钟源
  ADC12MCTL0= SREF1 + INCH_0;                     //参考控制位及通道选择
  ADC12IE |= 0x01;                                 //中断允许
  ADC12CTL0|= ENC;                                //使能转换器
}

//*************************************************************************
// ADC中断服务程序
//*************************************************************************
#pragma vector=ADC_VECTOR
__interrupt void ADC12ISR(void)
{
  uchar j;
  while((ADC12CTL0 &0x01)==0);           //如果ADC忙,则等待,否则读取ADC转换数值
  Flag = 1 ;
  TEMP = ADC12MEM0;                     //读取ADC转换值
  Data_do(TEMP);                        //处理ADC值,用于显示
  for(j=0;j<50;j++)
  {
    Display(A1,A2,A3,A4);               //显示ADC的数据
  }
}

//***********************************************************************
//            主程序
//***********************************************************************
void main(void)
{
  WDT_Init();                         //看门狗初始化
  Clock_Init();                       //时钟初始化
  Port_Init();                        //端口初始化,用于控制IO口输入或输出
  Close_LED();                        //LED数码管先关闭
  ADC_Init();                         //初始化ADC配置
  _EINT();                            //使能中断
  Flag=1;                             //标志位先置1
 
  while(1)
  {
    while(Flag==1)
    {
      ADC12CTL0 |= ADC12SC;           //开-启转换
      ADC12CTL0 &= ~ADC12SC;          //清零
      Flag=0;                         //清零标志位
    }
  }
}

最新回复

中断发生后,中断标志位可以自动清零,而本代码中只用了通道0, 所以认为发生中断即为通道0中断发生,ADC12MEM0被读取后,对应标志位自动清零  详情 回复 发表于 2012-2-27 10:52
 
点赞 关注

回复
举报

5015

帖子

13

TA的资源

裸片初长成(初级)

沙发
 
中断发生后,中断标志位可以自动清零,而本代码中只用了通道0,
所以认为发生中断即为通道0中断发生,ADC12MEM0被读取后,对应标志位自动清零
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

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

 
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
快速回复 返回顶部 返回列表