智能车制作
标题:
MC9S12DG128调试小程序,AD转化(查询方式)---旨在帮助新手入门,共同提高!
[打印本页]
作者:
wysh320
时间:
2009-3-11 08:39
标题:
MC9S12DG128调试小程序,AD转化(查询方式)---旨在帮助新手入门,共同提高!
#include <hidef.h> /* common defines and macros */
#include <mc9s12dg128.h> /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
/******定义变量********/
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;
}
/*AD初始化*/
void AD_Init(void)
{
ATD0CTL2=0xC0; // 启动A/D, 快速清零, 无等待模式, 禁止外部触发, 中断禁止
ATD0CTL3=0x20; // 转换序列长度为4, No FIFO, Freeze模式下继续转换
ATD0CTL4=0x85; // 8位精度, 2个时钟, ATDClock=[BusClock*0.5]/[PRS+1]=2MHz
RS=5,divider=12
ATD0CTL5=0xA0; // 右对齐无符号,单通道采样,通道0
ATD0DIEN=0x00; // 禁止数字输入
}
/*读取AD转换结果*/
void AD_GetValue(word *AD_wValue)
{
*AD_wValue=ATD0DR0; //读取结果寄存器的值
}
void main(void)
{
PLL_Init();
AD_Init();
DDRB=0xFF;
PORTB=0x00;
EnableInterrupts;
for(;;)
{
while(!ATD0STAT1_CCF0); // 等待转换结束while(ATDOSTAT1_CCF0==1)
AD_GetValue(&AD_wValue); // 读取转换结果
PORTB = (byte)AD_wValue; // 在B口显示转换值
}
}
作者:
yangbenhe
时间:
2009-5-7 12:56
好的,谢谢share!
作者:
chengdonglee
时间:
2009-5-20 05:26
我的程序和你几乎一样,但是单片机就不输出正常的信号,郁闷,不知道是什么问题
作者:
星空下的学生
时间:
2009-5-20 09:26
作者:
abc43412119
时间:
2009-5-24 22:41
楼主太好了,
作者:
应用电子
时间:
2009-6-8 16:39
太感谢了!!!!!!!
省了我很多时间啊!!
作者:
xiaokk
时间:
2009-8-13 10:02
支持楼主,多以些这样的基础程序就更好了!
作者:
薄子太
时间:
2009-9-27 14:46
谢谢啦,
作者:
liang88889999
时间:
2009-9-27 21:00
谢一个
作者:
叶落知秋
时间:
2009-10-23 23:27
支持楼主
作者:
wangguiqing2008
时间:
2009-10-30 09:55
看了,写
作者:
吾陪你
时间:
2009-10-30 14:16
作者:
七彩
时间:
2010-2-16 17:27
顶一下
作者:
zcs131458
时间:
2011-3-7 13:32
这程序 不能输出 正常信号 不行啊
这还是 书上的 你能写个有信号产生的正常程序出来分享吗
作者:
幻影2011
时间:
2011-3-7 18:32
十分感谢
欢迎光临 智能车制作 (http://111.231.132.190/)
Powered by Discuz! X3.2