S12XS128单片机ATD模块应用与编程实例.pdfVIP

  • 0
  • 0
  • 约3.43千字
  • 约 4页
  • 2026-02-06 发布于北京
  • 举报

要让ATD开始转换工作,必须经过以下三个步骤:

1.将ADPU置1,使ATD启动;

2.按照要求对转换为数、扫描方式、采样时间、时钟频率及标志检查等方式进

行设置;

3.发出启动命令;

如果上电默认状态即能满足工作要求,那么只要将ADPU置1,然后通过控制

寄存器发出转换命令,即可实现转换。

【例程2】

程序描述:由通道ATD0进行单通道A/D转换,转换值在B口显示

程序如下:

#includehidef.h/*commondefinesandmacros*/

#includemc9s12dg128.h/*derivativeinformation*/

#pragmaLINK_INFODERIVATIVEmc9s12dg128b

/******定义变量********/

wordAD_wValue;//AD转换结果

/*时钟初始化*/

voidPLL_Init(void)//PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)

{//锁相环时钟=2*16*(2+1)/(1+1)=48MHz

REFDV=1;//总线时钟=48/2=24MHz

SYNR=2;

while(!(CRGFLG0x08));

CLKSEL=0x80;

}

/*AD初始化*/

voidAD_Init(void)

{

ATD0CTL2=0xC0;//启动A/D,快速,无等待模式,外部触发,中

ATD0CTL3=0x20;//转换序列长度为4,NoFIFO,Freeze模式下继续转换

ATD0CTL4=0x85;//8位精度,2个时钟,

ATDClock=[BusClock*0.5]/[PRS+1]=2MHz;PRS=5,divider=12

ATD0CTL5=0xA0;//右对齐无符号,单通道采样,通道0

ATD0DIEN=0x00;//数字输入

}

/*AD转换结果*/

voidAD_GetValue(word*AD_wValue)

{

*AD_wValue=ATD0DR0;//结果寄存器的值

}

/**********主函数**************/

voidmain(void)

{

PLL_Init();

AD_Init();

DDRB=0xFF;

PORTB=0x00;

EnableInterrupts;

for(;;)

{

while(!ATD0STAT1_CCF0);//等待转换结束

while(ATDOSTAT1_CCF01)

AD_GetValue(AD_wValue);//转换结果

PORTB=(byte)AD_wValue;//在B口显示转换值

}

}

TostarttheATDconversionprocess,thefollowingthreestepsmustbetaken:

1.SetADPUto1tostarttheATD;2.Configuretheconversionnumber,

scanningmethod,samplingtime,clockfrequency,andflagchecksas

required;3.Issuethestartcommand;

Ifthedefaultpower-onstatemeetstheoperationalrequirements,simplysetADPUto1,then

issuetheconversioncommandthroughthecontrolregistertoachievetheconversion.

【Example2】

ProgramDe

文档评论(0)

1亿VIP精品文档

相关文档