中级会员
- 积分
- 400
- 威望
- 283
- 贡献
- 107
- 兑换币
- 0
- 注册时间
- 2011-2-14
- 在线时间
- 5 小时
|
#include<hidef.h>
#include<mc9s12xs128.h>
#pragma LINK_INFO DERIVATIV"mc9s12xs128b"
#define PITTIME 2000//设定为10毫秒定时
uchar count=0,m;
void setbusclock(void)//32MHZ外部时钟为16MHZ
{
CLKSEL=0X00;//
PLLCTL_PLLON=1;//打开时钟
SYNR=0X40|0X03;
REFDV=0X80|0X01;
//SYNR=1;//PLLCLK=2*FOSC*(SYNR+1)/(REFDV+1)
//REFDV=1;
POSTDIV=0X00;//4:0,FPLL=FVCO/(2XPOSTDIV)
_asm(nop);//BUS CLOCK=16M
_asm(nop);
while(!(CRGFLG_LOCK));//WHEN PLL IS STEADY ,THEN USE IT
CLKSEL_PLLSEL=1;//engage PLL system;
}
void PIT_Init(void)//定时中断初始化函数10MS定时中断设置
{
PITCFLMT_PITE=1;
PITFLT=1;
PITCE=1;
PITINTE=1;
PITMTLD0=160-1;
PITLD0=PITTIME-1;
}
void PWM_Init(void)
{
PWMPOL=0X20;//脉冲先高后低
PWMCLK=0X20;//使用SA时钟源
PWMPRCLK=0X07;//时钟A为总线8分频
PWMCAE=0X00;//通道5为左对齐输出模式
PWMCTL=0X00;//单独使用通道5
PWMSCLA=0X05;//clockSA=clockA/(2*PWMSCLA)为3KHZ
PWMPER5=0X64;//设定周期
}
void Init_PT4_Capture()
{
TIOS=0x00; //输入捕捉
TCTL3=0x02; //通道4下降沿触发
TSCR2=0X07; //分频,用来给TCNT作时间参考,这里没有意义
TSCR1=0x80; //Timer Enable
TIE=0X10; //初始化定时器开启
}
void main(void)
{
PACTL_PAEN=1;
DisableInterrupts;
//setbusclock();
PIT_Init();
PWM_Init();
Init_PT4_Capture();
for(;;) ;
}
#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区
void interrupt 66 PIT0_ISR(void)
{
}
不知道对不对,谁懂的帮我改改谢谢!!!! |
|