智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 890|回复: 0
打印 上一主题 下一主题

[软件类] 定时器输出比较为啥效果不对呢

[复制链接]

1

主题

3

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
359
威望
190
贡献
117
兑换币
112
注册时间
2013-6-23
在线时间
26 小时
毕业学校
武汉理工
跳转到指定楼层
1#
发表于 2013-10-28 20:46:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include<MC9S12XS128.h>
static unsigned int a=0;

///锁相环
void PLL_Init(void)      //PLLCLK=2*OSCCLK*(SYNR+1)/(REFDV+1)
{                     //锁相环时钟=2*16*(2+1)/(1+1)=48MHz
REFDV=1;            //总线时钟=48/2=24MHz
SYNR=2;
while(!(CRGFLG&0x08));
CLKSEL=0x80;              
}

void delayms(void) {
unsigned int i;
for(i=0;i<1335;i++);
}
//定时器初值
void ECT0_init(void)
{
  TIOS=0x01;
  TSCR2=0x86;    //分频 24/64   相当于 2.67us
  TSCR1=0x80;
  TC0=37500;    //  37500*2.67us=10ms定时时间

  TIE=0x01;
  TCTL2=0x02;  
}

#pragma CODE_SEG __NEAR_SEG NON_BANKED  
//#pragma CODE_SEF __NEAR_SEG NON_BANKED
interrupt 8 void Timer0_ISR(void)
{
//  unsigned int m;
   a=a+1;
// m=TCNT;  
  //TC0=m+37500;
  TFLG1_C0F=1;
// DisableInterrupts ;


  if(a>=100)
  {

PORTB=~PORTB;
//PORTB=0xfb;
a=0;
// delayms();
  }

}
#pragma CODE_SEG DEFAULT


void main(void)
  {
  /* put your own code here */

  PLL_Init();      
  ECT0_init();

  DDRB=0xff;
  PORTB=0x00;
          EnableInterrupts;



  for(;;) {


   _FEED_COP(); /* feeds the dog */

  } /* loop forever */
  /* please make sure that you never leave main */
}


您需要登录后才可以回帖 登录 | 注册

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-9-28 00:30 , Processed in 0.098465 second(s), 36 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表