智能车制作

标题: 我这AD口怎么总读不出来数 [打印本页]

作者: hude    时间: 2010-5-17 22:52
标题: 我这AD口怎么总读不出来数
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */


word AD_wValue;//AD转换结果

//--------------初始化函数----------------//

//-----时钟初始化程序--------//
void PLL_Init(void)      //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
  REFDV=1;           //总线时钟=48/2=24MHz
  SYNR=2;
  while(!(CRGFLG&0x08));
  CLKSEL=0x80;
}

//-----ATD初始化程序--------//
void AD_Init(void)     
{

  ATD0CTL1=0x00;   //选择AD通道为外部触发,8位精度,采样前不放电  
  ATD0CTL2=0x40;   //标志位自动清零,禁止外部触发, 禁止中断     
  ATD0CTL3=0xa0;   //右对齐无符号,每次转换4个序列, No FIFO, Freeze模式下继续转     
  ATD0CTL4=0x0b;  //采样时间为4个AD时钟周期,PRS=1,ATDClock=6MHz  
  ATD0CTL5=0x30;   //特殊通道禁止,连续转换 ,多通道转换,起始通道为0转换4个通道  
  ATD0DIEN=0x00;   //禁止数字输入
}

//-----读取AD转换结果--------//
void AD_GetValue(word *AD_wValue)
{
  *AD_wValue=ATD0DR0;  //读取结果寄存器的值
}

//-----主函数--------//
void main(void)
{
  PLL_Init();
  AD_Init();         
  DDRB=0xFF;  
  PORTB=0x00;
  EnableInterrupts;  
  for(;;)
  {
    while(!ATD0STAT2_CCF0);    // 等待转换结束while(ATDOSTAT2_CCF0==1)
          AD_GetValue(&AD_wValue);   // 读取转换结果
    PORTB = (byte)AD_wValue;   // 在B口显示转换值
  }
}




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2