智能车制作
标题:
求大神帮助,有关AD转换的问题
[打印本页]
作者:
青竹林
时间:
2013-12-7 17:59
标题:
求大神帮助,有关AD转换的问题
#include <hidef.h> /* common defines and macros */#include<stdio.h>#include "derivative.h" /* derivative-specific definitions */int ADvalue0,ADvalue1,ADvalue2,ADvalue3; void pll_init(void) //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1){ //锁相环时钟=2*16*(2+1)/(1+1) REFDV=1; //总线时钟=48/2=24MHZ SYNR=2; while(!(CRGFLG&&0X08)); CLKSEL =0X08; //选定锁相环时钟}void AD_init(void) { ATD0CTL2=0Xc0; //启动A/D转换模式,快速清零,无中断和外部触发 ATD0CTL3=0XA0; //采集通道为4个 序列为4;右对齐 ATD0CTL4=0X85; //时钟设置,2M,且AD转换的是周期是7us,采样为两个时钟周期 ATD0CTL5=0XA0; //有符号,左对齐,起始转换通道为:0通道 ATD0DIEN=0X00; //禁止数字的输入 }void pwm0_init() //此为1MHZ的周期,{ PWME=0 ; PWMCLK=0X0A; //通道的时钟选择A或B或SA,或SB PWMPRCLK=0X33;//A或B的时钟分频选择 8分频 PWMSCLA=150; PWMSCLB=150; PWMCTL=0X00; //通道进行连级 PWMPOL_PPOL1=1;//是先输出低电平,极性的输出
PWMCAE_CAE1=0; //通道为左对齐输出
//输出波形的周期 (通道周期/PWMPERX) //输出的占空比(PWMDTY/PWMPER1*100%) // PWMCNT1=0xce; //计数为0; PWME_PWME1=1;
}
void AD_zhuanhuan0(void) { ADvalue0=ATD0DR0L ; if( ADvalue0==0xff) { PWMPER1=100; PWMDTY1=10; } else if(ADvalue0==0x00){ PWMPER1=100; PWMDTY1=50; } else { PWMPER1=100; PWMDTY1=90; } }
void main(void) { /* put your own code here */ pll_init(); AD_init(); pwm0_init(); for(;;) { while(!ATD0STAT2_CCF0) AD_zhuanhuan0();
} /* loop forever */ /* please make sure that you never leave main */}这个程序是否有问题?如果没有,输入5v的直流电压那P1输出的波形应该是占空比为多少的波形?还有AD 转换的参考电压输入引脚是哪个引脚?我用的单片机是MC9S12XS128MAL型号的。求大神指点,小弟在此拜谢了
欢迎光临 智能车制作 (http://dns.znczz.com/)
Powered by Discuz! X3.2