首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

不知为什么ATD0中无法实现双路转换

不知为什么ATD0中无法实现双路转换

#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

void delay_1ms(void){
unsigned int i;
for(i=0;i<1280;i++); //1280是调节关键
}

//**********初始化AD模块**********************//

void AD_Init(void) //初始化
{
ATD0CTL2=0xC2; // AD模块上电, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
delay_1ms();
ATD0CTL3=0x10; // 转换序列长度为2, FIFO=0, Freeze模式下继续转换
ATD0CTL4=0x83; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1] ; PRS=3,
//divider=8
ATD0CTL5=0xB4; // 右对齐无符号,多通道采样,通道4为输入通道
ATD0DIEN=0x00; // 禁止数字输入
}

//**********AD中断模块**********************//
#pragma CODE_SEG NON_BANKED
#pragma TRAP_PROC

void AD_inturrept(void){ //AD中断程序
if(ATD0STAT1_CCF4==0) PORTB =~(char)ATD0DR4;//在B口显示转换值

if(ATD0STAT1_CCF5==0) PORTA =~(char)ATD0DR5;//在A口显示转换值
}


//**********主程序**********************//
void main(void) {
DisableInterrupts;
DDRB=0xFF;
DDRA=0XFF;
PORTB=0xFF;
PORTA=0X00;

AD_Init(); //AD初始化
EnableInterrupts;
for(;;){}

}
当FIFO=0时,ATD0中通道4、5的转化结果不是应该存储在ATD0DR4和ATD0DR5中吗 但我在这两个结果寄存器中却读不到数据 在ATD0DR0中能够读到 不知这是为什么 请各位高人为我指点迷津 先谢了!
请参考这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=125170&ID=125170
海纳百川  有容乃大
非常感谢版主!!
返回列表