智能车制作

标题: 为什么我的AD口总读不出来 [打印本页]

作者: hude    时间: 2010-5-18 22:56
标题: 为什么我的AD口总读不出来
#include <hidef.h> /* common defines and macros */
#include "derivative.h" /* derivative-specific definitions */
word AD_wValue;//AD 转换结果
//--------------初始化函数----------------//
//-----时钟初始化程序--------//
void PLL_Init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{ //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=1; //总线时钟=48/2=24MHz
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80;
}
//-----ATD 初始化程序--------//
void AD_Init(void)
{
ATD0CTL1=0x00; //选择AD 通道为外部触发,8 位精度,采样前不放电
ATD0CTL2=0x40; //标志位自动清零,禁止外部触发, 禁止中断
ATD0CTL3=0xa0; //右对齐无符号,每次转换4 个序列, No FIFO, Freeze 模式下继续转
ATD0CTL4=0x07; //采样时间为4 个AD 时钟周期,PRS=1,ATDClock=6MHz
ATD0CTL5=0x30; //特殊通道禁止,连续转换,多通道转换,起始通道为0 转换4 个通道
ATD0DIEN=0x00; //禁止数字输入
}
//-----读取AD 转换结果--------//
void AD_GetValue(word *AD_wValue)
{
*AD_wValue=ATD0DR0; //读取结果寄存器的值
}
//-----主函数--------//
void main(void)
{
PLL_Init();
AD_Init();
DDRB=0xFF;
PORTB=0xEF;
EnableInterrupts;
for(;;)
{
while(!ATD0STAT2_CCF0); // 等待转换结束while(ATDOSTAT2_CCF0==1)
AD_GetValue(&AD_wValue); // 读取转换结果
PORTB = (byte)AD_wValue; // 在B 口显示转换值
}
}
作者: 何必问天    时间: 2010-5-19 09:13
药把标志清掉!
作者: hude    时间: 2010-5-19 21:55
什么啊
作者: 990610    时间: 2010-12-2 11:17
把while(!ATD0STAT2_CCF0); 改成while(!ATD0STAT&0x80);就可以了
作者: 437334816    时间: 2010-12-2 16:45
学习
作者: zyx89820    时间: 2011-3-3 20:33
ATD0STAT是什么意思啊
作者: zyx89820    时间: 2011-3-3 20:34
ATD0STAT是什么意思啊
作者: zhangyuan    时间: 2011-3-11 13:11
回复 7# zyx89820


    ATD状态寄存器。。。其实应该是ATD0STAT0吧
作者: 远方的笨蛋    时间: 2011-6-16 16:18
好像是while(!ATD0STAT2_CCF0); // 等待转换结束while(ATDOSTAT2_CCF0==1)
错了。



应该是:
while(!ATD0STAT1_CCF0);



ATD状态寄存器中没有ATD0STAT2




欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2