智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1027|回复: 0
打印 上一主题 下一主题

MC9SXS128 10位AD程序问题,AD读取的高位跳动

[复制链接]

2

主题

11

帖子

0

精华

注册会员

Rank: 2

积分
90
威望
56
贡献
20
兑换币
22
注册时间
2014-4-7
在线时间
7 小时
跳转到指定楼层
1#
发表于 2014-4-7 10:30:04 | 只看该作者 回帖奖励 |正序浏览 |阅读模式
程序如下,求大神指点:
//*/
/***---------------初始化程序---------------***/
void InitBusClk(void) {
  CLKSEL=0X80;               //PLLSEL  1 : Bus Clock=PLLCLK/2
                              //         0 : Bus Clock=OSCCLK/2
  PLLCTL_PLLON=1;           //开启PLL
  SYNR=0;
  REFDV=0X03;               //OSCCLK=16MHz
                             //PLLCLK=2*OSCCLK*[(1+SYNR)/(1+REFDV]=32/4=8MHz

  while(!(CRGFLG_LOCK==1));   //直到LOCK=1,when PLL is ready,退出循环
  
  CLKSEL_PLLSEL=1;        //PLLSEL  1 : Bus Clock=PLLCLK/2=8MHz/2=4MHz
                            //        0 : Bus Clock=OSCCLK/2=16M/2=8MHz
}

void InitAD(void){
     
   ATD0CTL2 = 0XC3;         

//  110 000 11   启动A/D, 快速清除标志位,无等待模式, 外部触发禁止(bit2=0)
      //  中断开放(bit1=1,bit0=1)         
      //  bit1 :ATD Sequence Complete Interrupt Enable            
      //  bit0 :ATD Sequence Complete Interrupt Flag
   
ATD0CTL3 = 0X0C;         
// 0 0001 1 00  转换序列为 1 、 FIFO模式启动,冻结模式下继续转换

ATD0CTL4 = 0X61;           // 1 11 00001   10位精度, 16AD采样时间
                             //            总线(1+1)*2 = 4 分频,AD时钟 = 1M

ATD0CTL5 = 0XA0;         
// 1010 0111    右对齐,无符号,连续转换,单通道, 起始通道 ATD0

   ATD0DIEN = 0X00;         // 数字输入 disabled
}

/***---------------主程序---------------***/
void main(void) {
  /* put your own code here */
  DisableInterrupts;            //关中断
  
  InitBusClk();
  InitAD();
              
  DDRB=0XFF;              //设B口为输出口
  PORTB=0X00;
  
    EnableInterrupts;          //开中断

    for(;;){        
   
       //while(!ATD0STAT2L_CCF7);
       PORTB=(byte)AD_Data;        //B口显示转换结构
    }
}

/***---------------中断服务程序---------------***/

#pragma CODE_SEG NON_BANKED

void  interrupt  22  IntAD(void)
{            // AD转换的中断向量号为33
  
  DisableInterrupts;                         //关中断
  while(!ATD0STAT2_CCF0);
  AD_Data=ATD0DR0H;                    //读取AD转换结果
  AD_Data1=ATD0DR0L;                    //读取AD转换结果
  EnableInterrupts;                         //开中断
}

#pragma CODE_SEG DEFAULT
回复

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-12-29 01:47 , Processed in 0.056204 second(s), 30 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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