- 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
您可能关注的文档
最近下载
- 电能质量PPT课件.ppt
- 132_中药饮片炮制及生产管理.pptx VIP
- SimBank银行模拟教学平台实习指导书.pdf VIP
- 深度解析(2026)《JBT 12968-2025盾构机用变频调速三相异步电动机技术规范》.pptx VIP
- 统计学原理与实务.pdf VIP
- 冻干SOP(最新整理版).docx VIP
- DB11T 1213-2015 自来水单位产量能源消耗限额 .docx VIP
- (正式版)G-B∕T 43909-2024 叉车属具 安全要求.docx VIP
- 中国慢性乙型肝炎功能性(临床)治愈临床实践专家共识(2025)解读PPT课件.pptx VIP
- 监理概论教案.pdf VIP
原创力文档

文档评论(0)