⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ad.c

📁 ABS防抱死功能
💻 C
字号:
#include <mc9s12dg128.h>     /* derivative information */
#include "main.h"
#include "ECT.h"
#include "AD.h"

extern word AD0_wData[4];


void AD0_Init(void)	//AD初始化
{
     //控制寄存器2:    上电,标志位快速清零,开中断
     ATD0CTL2  = (ATD0CTL2_ADPU_MASK|ATD0CTL2_AFFC_MASK|ATD0CTL2_ASCIE_MASK); 
     //控制寄存器3:转换序列长度为3,FIFO模式
     ATD0CTL3  = (ATD0CTL3_S4C_MASK|ATD0CTL3_FIFO_MASK);
	 //控制寄存器4: 10位采样精度,A/D Clock 不能大于 2 MHz,小于0.5MHz
     ATD0CTL4  = (ATD0CTL4_PRS1_MASK|ATD0CTL4_PRS0_MASK);
	 //控制寄存器5:右对齐无符号,多通道采样,通道0 
     ATD0CTL5  = 0x90; 
	
     ATD0DIEN=0x00;   // 禁止数字输入缓冲

}


#pragma CODE_SEG NON_BANKED  //中断服务程序
interrupt void AD0_ISR(void)
{
  word data;
  if(ATD0STAT1_CCF0==1)
  {
    data = ATD0DR0;
    if((data<AD0_VALUE_MAX)&&(data>AD0_VALUE_MIN))  //检查采样值是否在规定范围内
    {
      AD0_wData[0] = data;   //将结果寄存器中的值存放到数组中      
    }      
  }//通道0转换结束
  
  if(ATD0STAT1_CCF1==1)
  {
    data = ATD0DR1;
    if((data<AD0_VALUE_MAX)&&(data>AD0_VALUE_MIN))  //检查采样值是否在规定范围内
    {
      AD0_wData[1] = data;   //将结果寄存器中的值存放到数组中      
    }      
  }//通道1转换结束
  
  if(ATD0STAT1_CCF2==1)
  {
    data = ATD0DR2;
    if((data<AD0_VALUE_MAX)&&(data>AD0_VALUE_MIN))  //检查采样值是否在规定范围内
    {
      AD0_wData[2] = data;   //将结果寄存器中的值存放到数组中      
    }      
  }//通道2转换结束
  
  if(ATD0STAT1_CCF3==1)
  {
    data = ATD0DR3;
    if((data<AD0_VALUE_MAX)&&(data>AD0_VALUE_MIN))  //检查采样值是否在规定范围内
    {
      AD0_wData[3] = data;   //将结果寄存器中的值存放到数组中      
    }      
  }//通道3转换结束
  
}
#pragma CODE_SEG DEFAULT

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -