智能车制作

标题: 关于mc9s12dg128的一个AD程序!求解~ [打印本页]

作者: napoleon90    时间: 2010-8-26 20:22
标题: 关于mc9s12dg128的一个AD程序!求解~
主要是想熟悉下各个模块,今天做到AD时,想用 dg128的AN7做单一输入口采样,然后通过串口和PORTB口的led显示采集到的数据。
我编好了,不过程序好像一直停留在if(ATD0STAT1_CCF7==1)  检测转换完成与否这……
求解!
代码如下:

#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */

void mcuinit()
{
DisableInterrupts;     //forbid interrupt
CLKSEL_PLLSEL=0;       //choose the crystal
PLLCTL_PLLON=0;        // close off the pll
SYNR=0X02;             // set the rate
REFDV=0X01;            // pllclk=2*oscclk*(synr+1)/(refdv+1)
PLLCTL_PLLON=1;        // open the pll
while((CRGFLG&0X08)==0X00);  // check whether the pll is steady
CLKSEL_PLLSEL=1;       //choose the pllclk ,now fbus=24mhz
EnableInterrupts;
}


void sciinit()
{
unsigned char t;
SCI0BD=156; //设置波特率为9600根据公式=fbus/9600/16
//?SCI0BDH=0X00; //先低后高
SCI0CR1=0X00; // 8位传送,无奇偶校验
SCI0CR2=0X0C;  //允许发送接收,禁止中断

t=SCI0DRL;  //读取数据,状态寄存器,清零
t=SCI0SR1;
}

void ADinit()

{
  ATD0CTL2=0XC0;//开电源,快速清除使能
  ATD0CTL3=0X08; //转换个数一个,非先入先出
  ATD0CTL4=0X8B;//8位精度,2个a/d转换周期,atdclk=1mhz    一共12个atdclk=2+2+8
  ATD0CTL5=0XA7; //右对齐 连续转换 无符号,单通道,选择模拟AN7通道
  ATD0DIEN=0X00; //禁止数字输入
}                       
  

void main(void)

{

  mcuinit();
  ADinit();
  sciinit();
  DDRB=0XFF;
  PORTB=0xff;
  EnableInterrupts;
  while(1)
  {
   
if(ATD0STAT1_CCF7==1)
{
  PORTB=ATD0DR7L;
   if(SCI0SR1_TDRE==1)
   {
   
  SCI0DRL=ATD0DR7L;
  }
  }


}
}
[attach]3079[/attach]
作者: napoleon90    时间: 2010-8-27 14:43
没人么……
作者: lantian    时间: 2011-1-2 16:10
if(ATD0STAT1_CCF7==1)改成if(ATD0STAT1_CCF7==1);加一个分号
作者: ☆帅气★_べ    时间: 2012-7-2 16:38
判断if(ATD0STAT0_CCF7==1)




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