- 1、本文档共3页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
飞思卡尔定时中断程序2
飞思卡尔那些事之定时中断(PIT)
前言: 上次说到因为源于对英文的恐惧,没有阅读英文DATASHEET,想当然的认为XS128单片机中的定时器模块也和DG128中定时器模块一样。结果造成了致命性的错误,最后在疯狂的熬夜中才将问题检测到。 当然,找到问题,解决起来就简单多了。后头拿起DATASHEET狂肯,终于有所收获,同时也知道了在XS128单片机中用于定时的另一个模块:PIT 定时中断 。为了测试一下定时中断的,同时也解决之前单片机一直没办法进入中断的问题,特写了一个简单的基于定时器中断的闪烁灯程序。目的: 1、学习使用XS128PIT模块。 2、测试XS128核心板的中断木块。功能描述: 通过定时中断实现500MS定时。当定时中断触发时,对IO口进行取反操作即可以实现LED500MS的闪烁。资源: 1、XS128核心板,8个LED接XS128的B口。 2、XS128的PIT模块。PIT说明: S12PIT24B4CV1是一个模数递减计数器。首先给计数寄存器设定一个初值,每经过一个总线周期,计数器进行一次减一操作,当计数器自减溢出时,触发中断。因为总线周期是已知的,即可以通过计数器自减实现定时。 在XS128PIT模块中,需要用到得是如下几个寄存器。 1 、PIT Contorl and force Lad Micro Timer Register PITCFLMT 该寄存器用于PIT模块的使能设置和工作方式设置。通常设置该寄存器中的PITE为即可,即PITCFLMT_PITE 1,使PIT使能。 2 、PIT Channel Enable Register PITCE 该寄存器用于对PIT模块中的4个通道使能进行设置。如果使用某个通道时,对对应位进行置一即可,即PITCE_PCEx 1,其中x代表通道序号,为0~3。 3 、PIT Micro Timer Load Register 0 to 1 PITMTLD0-1 该寄存器用于设置PIT模块中的8位计数器初值,以实现24位的计数。设定值为0到255范围。 4 、PIT Load Register 0 to 3 PITLD0-3 该寄存器用于设置PIT模块中的16位计数器初值,和8位计数器配合而成24位计数器。设定值范围0-65535。 5 、PIT Multiplex Register PITMUX 该寄存器对定时器通道的8位时基进行选择。因为8位计数器只有两个,所以在将8位计数器和16位计数器连接时,可以选择不同的8位时基。 当设置为0时,对应通道选择时基0;置一时,对应通道选择时基1。 如PITMUX_PMUX0 1为通道0选择时基1。 6 、PIT Interrupt Enable Register PITINTE 该寄存器为中断使能寄存器,为不同的PIT通道中断使能。设定为0时,相应通道中断禁止。置一时,相应通道使能。 如PITINTE_PINTE0 1时,PIT通道0定时中断使能,当计数器递减溢出时,申请中断。 7 、PIT Time-Out Flag Register PITTF 该寄存器为溢出标志位,当某一通道的8位计数器和16位计数器递减到0时,该位置一。给改位写1则清除该标志位。 可以通过查询该位来判断定时是否完成。CODE:#include #include #pragma LINK_INFO DERIVATIVE mc9s12xs128// //定时中断函数//定时中断0实现500MS定时//author:yangtze//time:2009/5/2// #define PITTIME??5000//设定为50MS定时unsigned int vTmpPIT 0;void pllclk void //24MHz,外部时钟为16MHz CLKSEL 0X00; PLLCTL 0xe1; SYNR 2;//PLLCLK 2*OSCCLK* SYNR + 1 / REFDV + 1 REFDV 1; PLLCTL 0X60; asm??NOP; asm??NOP; asm??NOP; while CRGFLG0X08 0 ;//时钟校正同步 CLKSEL 0X80; void initIOBoutput void //IO口初始化,B口为输出 DDRB 0XFF; PORTB 0XFF; void initPIT void //定时中断初始化函数 50MS定时中断设置 PITCFLMT_PITE 0; //定时中断通道0关 PITCE_PCE0 1;//定时器通道0使能 PITMTLD0 240-1;//8位定时器初值设定。240分频,在24MHzBusClock下,为0.1MHz。即10us. PIT
文档评论(0)