第一范文网 - 专业文章范例文档资料分享平台

飞思卡尔单片机编程

来源:用户分享 时间:2025/5/15 16:48:33 本文由loading 分享 下载这篇文档手机版
说明:文章内容仅供预览,部分内容可能不全,需要完整文档或者需要复制内容,请下载word后使用。下载word有问题请添加微信号:xxxxxxx或QQ:xxxxxx 处理(尽可能给您提供完整文档),感谢您的支持与谅解。

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;//清中断标志位 }

搜索更多关于: 飞思卡尔单片机编程 的文档
飞思卡尔单片机编程.doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.diyifanwen.net/c0rq7p0g3le1wxgu8jptf_11.html(转载请注明文章来源)
热门推荐
Copyright © 2012-2023 第一范文网 版权所有 免责声明 | 联系我们
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:xxxxxx 邮箱:xxxxxx@qq.com
渝ICP备2023013149号
Top