/*输出占空比为25%的波形,周期为500Hz*/
#include<hidef.h> //common defines and macros
#include"MC9S12XS128.H" //derivative information
#pragma LINK_INFO DERIVATIVE "MC9S12XS128"
//初始化函数//
//时钟初始化程序//
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; //选定锁相环时钟
}
void PWM_Init(void) {
//int i;
// for(i=1000;i>0;i--){
PWME_PWME0=0x00;//关闭PWME0同道
PWMPRCLK=0X33;//对总线进行分频,总线时钟为24MHz;分频后为3M
//PWMPRCLK有ClockA和ClockB预分频控制位
PWMCLK_PCLK0=1;//设SA为时钟源;A的时钟为3M;SA=A/(2*PWMSCLA)
PWMSCLA=10;//0111 1101;PWMSCLA=150;SA=10K
PWMSCLB=5;// SB=100K;
PWMPOL_PPOL0=1;//上升沿翻转,在周期开始时输出高电平。
PWMCAE_CAE0=0;//左对齐输出。
PWMDTY0=55;//占空比为25%
PWMPER0=100;//
PWMCNT0=0X00;
PWME_PWME0=1;
DDRB=0xff; /* PTB 输出 */
PORTB_PB0=PWMDTY0; /* LED关闭 */
PORTB_PB1=PWMPER0;
//}
}
void main(void) {
PLL_Init();
PWM_Init();
EnableInterrupts;
for(;;) {
_FEED_COP();
}
}
评论1