求程序解释

2019-03-24 14:53发布

以下是一段代码,求解释一下 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;                         //清零标志位
    }
  }
} 此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
1条回答
wstt
2019-03-24 18:23
 精彩回答 2  元偷偷看……0人看过

一周热门 更多>

相关问题

    相关文章