智能车制作

标题: XS128输出比较(OC)的简单例子 [打印本页]

作者: librae8226    时间: 2009-11-13 20:01
标题: XS128输出比较(OC)的简单例子
今天一下午测试XS128的定时器模块,包括IOC和PIT,感觉飞思这个系列的定时器做得用起来有些不方便,Reference Manuel里说得也不是太清楚,尤其是输出比较的用法,在论坛里逛了一大圈也没明白……后来调通了这里贴出我的代码供初学者参考。

#include <hidef.h>      /* common defines and macros */
#include <MC9S12XS128.h>     /* derivative information */

#pragma LINK_INFO DERIVATIVE "mc9s12xs128"

#pragma CODE_SEG __NEAR_SEG NON_BANKED

unsigned int counter;

void interrupt 8 Compare_ISR(void)
{
  if( counter == 50000 ) //Although enormous,PORTB flashes very fast at 16MHz
  {
    PORTB = ~PORTB; // Toggle PORTB Every 50000 times
    counter = 0;
  }
  counter += 1;
  TFLG1 = 0x01; // Clear T0 interrupt flag
}

void SetBusCLK(void) /* 16MHz */
{   
  CLKSEL = 0x00; /* disengage PLL to system */
  PLLCTL_PLLON = 1; /* turn on PLL */
  SYNR = 0x01;
  REFDV = 0x81;
  POSTDIV = 0x00;
  _asm(nop); /* BUS CLOCK=80M */
  _asm(nop);
  while( !(CRGFLG_LOCK == 1) ); /* when pll is steady ,then use it */
  CLKSEL_PLLSEL =1; /* engage PLL to system */
}

void OutputCompare_Init(void)
{
  TIE = 0x00; /* Disable all channel interrupt */
  TIOS = 0x01; /* channel 0 set to Output Compare */
  TSCR1 = 0x90; /* Enable Timer; */
                         /* Timer interrupt flag can be cleared(channel 0) */
  TSCR2 = 0x07; /* Prescale Factor = 128 */
  TC0 = 0xFF00;
  TIE = 0x01; /* Enable channel 0 interrupt */
}

void Port_Init(void)
{
  DDRB = 0xFF;
  PORTB = 0xFF;
}

void main(void)
{
  /* put your own code here */
  
  DisableInterrupts;
  
  SetBusCLK();
  Port_Init();
  OutputCompare_Init();
  
  counter = 0;
  
  EnableInterrupts;
  
  for(;;)
  {
    _FEED_COP();
  }  
  /* wait forever */
  /* please make sure that you never leave this function */
}
作者: zdhly0401    时间: 2009-11-14 10:36
回复 1# librae8226


    感谢与大家分享
作者: luson1321    时间: 2010-4-17 21:26
谢谢了
作者: huachou    时间: 2010-4-18 14:31
谢谢了  我搞了几天了
作者: huachou    时间: 2010-4-18 14:55
大概看了一下  还是有的不明白啊
作者: kechenwei    时间: 2010-4-18 15:28
看看,学学!
作者: bdc90    时间: 2011-8-26 14:28
这个就不太清楚了,还没这样用过
作者: qaabq    时间: 2011-8-29 19:52
千千
作者: woolf    时间: 2011-10-7 22:05
飞思卡尔控制完整程序
作者: 李帅李帅    时间: 2012-2-29 16:34
谢谢
作者: zp健忘    时间: 2012-4-13 19:48
呵呵……谢谢分享啊!
作者: 静静娃的秃头    时间: 2012-4-25 22:34
是什么与tc0寄存器比较

作者: qq群    时间: 2012-12-2 21:38

作者: sidly    时间: 2012-12-4 21:00
thank you
作者: ybcqujx    时间: 2012-12-9 16:35
谢谢分享,看下。
作者: 亮亮up    时间: 2012-12-27 18:08





欢迎光临 智能车制作 (http://111.231.132.190/) Powered by Discuz! X3.2