飞思卡尔单片机编程 联系客服

发布时间 : 星期一 文章飞思卡尔单片机编程更新完毕开始阅读13bd750b763231126edb1173

1、头文件derivative.h中包含为: #include

#pragma LINK_INFO DERIVATIVE \这是Codewarrior5.0版本中的默认设置。

2、设置PLL时钟时SYNR和REFDV须按照给的程序当中来设置,若按照程序注释中来设置的话时钟将出现很大误差,原因我不知道,我是不断测试得到的。

3、具体的寄存器要根据给定的对应的头文件,不同的IDE版本中xs128的头文件可能不同,应根据实际情况来写。

代码如下:

#include /* common defines and macros */ #include \

#define PITTIME 1000//设定为5ms定时 uchar count=0;

void setbusclock(void) //32MHz 外部时钟16MHz {

CLKSEL=0X00; // disengage PLL to system PLLCTL_PLLON=1; // turn on PLL

SYNR =0x40 | 0x03; REFDV=0x80 | 0x01;

//SYNR =1; //PLLCLK=2*fOSC*(SYNR + 1)/(REFDV + 1) //REFDV=1;

POSTDIV=0x00; // 4:0, fPLL= fVCO/(2xPOSTDIV)

// If POSTDIV = $00 then fPLL is identical to fVCO (divide by one). _asm(nop); // BUS CLOCK=16M _asm(nop);

while(!(CRGFLG_LOCK==1)); //when pll is steady ,then use it; CLKSEL_PLLSEL =1; //engage PLL to system; }

void PORTB_init(void)//IO口初始化,B口为输出 {

DDRB=0xFF; PORTB=0x00; }

void PIT_init(void)//定时中断初始化函数 5MS定时中断设置 {

PITCFLMT_PITE=0; //定时中断通道0关 PITCE_PCE0=1;//定时器通道0使能

PITMTLD0=160-1;//8位定时器初值设定,160分频,在32MHzBusClock下,为0.2MHz。即5us

PITLD0=PITTIME-1;//16位定时器初值设定。PITTIME*0.005MS PITINTE_PINTE0=1;//定时器中断通道0中断使能 PITCFLMT_PITE=1;//定时器通道0使能 }

void main(void) {

/* put your own code here */

setbusclock(); PORTB_init(); PIT_init(); EnableInterrupts; for(;;) {

_FEED_COP(); /* feeds the dog */ } /* loop forever */

/* please make sure that you never leave main */

}

#pragma CODE_SEG __NEAR_SEG NON_BANKED //指示该程序在不分页区

void interrupt 66 PIT0(void) { count++; if(count==200) {

PORTB=~PORTB;//输出取反 count=0; }

PITTF_PTF0=1;//清中断标志位 }