注册会员
- 积分
- 139
- 威望
- 85
- 贡献
- 36
- 兑换币
- 38
- 注册时间
- 2013-3-9
- 在线时间
- 10 小时
- 毕业学校
- 唐山师范学院
|
#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型号的。求大神指点,小弟在此拜谢了
|
|