main.c

来自「这是一个基于NC9SDG128B的AD转换源码」· C语言 代码 · 共 59 行

C
59
字号
#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg128.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
#include"sci.h"

uchar ad_value;
uchar vlt;
uchar *ADValue[8];

void AD_Init(void);	             //AD初始化
void display(void);
void delay(void);

void main(void) {
  AD_Init();                     //AD初始化
  SciInit();
  DDRB=0xFF;
  PORTB=0xff; 
  EnableInterrupts;
  for(;;)
  {
       while(!ATD0STAT1_CCF0);    //等待转换结束
	     ad_value= *ADValue[0];
       PORTB = ad_value;    //在B口显示转换值
       display();
  } 
}

/*void AD_Init(void)	//初始化
{
  ATD0CTL2=0xC0;    //
  ATD0CTL3=0x20;    //每个序列4次转换, No FIFO, Freeze模式下继续转换
  ATD0CTL4=0x83;    //8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1]  ; PRS=3, divider=8
  ATD0CTL5=0xA0;    //右对齐无符号,单通道采样,通道0 
  ATD0DIEN=0x00;    //禁止数字输入
}   */

void display(void){
  vlt=ad_value/51;
  SciTx(0x30+vlt);
} 


 void AD_Init(void){ 
    ATD0CTL2 = 0xC0;         //AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
    ATD0CTL3 = 0x00;       // 8 bit AD 
    ATD0CTL4 = 0x83;      // 8 bit 10010111        if bus clock=48m,   48/(24*2)=1M; 
    ATD0CTL5 = 0x30; 
    ATD0DIEN = 0x00;      // ATD analog input disable 
    ADValue[0] = &ATD0DR0H; 
    ADValue[1] = &ATD0DR1H; 
    ADValue[2] = &ATD0DR2H; 
    ADValue[3] = &ATD0DR3H; 
    ADValue[4] = &ATD0DR4H; 
    ADValue[5] = &ATD0DR5H; 
    ADValue[6] = &ATD0DR6H; 
    ADValue[7] = &ATD0DR7H; 
}

⌨️ 快捷键说明

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