智能车制作

标题: 捕捉中断问题 [打印本页]

作者: fanfankaka123    时间: 2011-2-19 10:41
标题: 捕捉中断问题
程序如下:
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#include<mc9s12xs128.h>

#define uint unsigned int
#define uchar unsigned char

//锁相环倍频至80MHz  总线频率为40MHz
//fPLLCLK=2*fOSCCLK*(SYNR+1)/(REFDV+1)
void PLL_init(void)
{   
  CLKSEL=0X00;        //disengage PLL to system
  PLLCTL_PLLON=1;     //turn on PLL
  SYNR =0xc0 | 0x04;  //SYNR=4                       
  REFDV=0x80 | 0x01;  //REFDV=1
  POSTDIV=0x00;       //pllclock=2*osc*(1+SYNR)/(1+REFDV); 2*16*5/2=80M
  _asm(nop);          //BUS CLOCK=pllclock/2
  _asm(nop);
  while(!(CRGFLG_LOCK==1));    //when pll is steady ,then use it;
  CLKSEL_PLLSEL =1;            //engage PLL to system;
}

//延时10us以上函数
void Delay1()
{
  uchar a,b,c;
  for(a=0;a<1;a++)
    for(b=0;b<1;b++)
      for(c=0;c<8;c++);
}  
//延时250ms
void Delay2()
{
  uchar a,b,c;
  for(a=0;a<250;a++)
    for(b=0;b<3;b++)
      for(c=0;c<220;c++);
}  
void A1output()
{
DDRA_DDRA1=1;//A0口设为输出
PORTA_PA1=1;
Delay1(); //延时10us以上
PORTA_PA1=0;
}
//--------------------定时器0初始化------------------//
void Time0_Init()
{
    TIOS=0x00;  //通道0输入捕捉
    TCTL4=0x03; //上升下降沿均捕捉
    TSCR2=0X05; //32分频 总线频率40M
    TIE=0x01;   //通道0开中断
    TSCR1_TEN=1;//启动定时器
}

void main(void)
{
  /* put your own code here */
      PLL_init();                           
      Time0_Init();
      
      DDRB=0xff;
      PORTB=0xff;
      
      for(;;) {
        _FEED_COP(); /* feeds the dog */
        EnableInterrupts;
        A1output();
        Delay2();
      }
}
//定时器通道0输入捕捉中断
#pragma CODE_SEG NON_BANKED            
void interrupt 8 Timer0_interrupt()
{
  DisableInterrupts;
  PORTB=~PORTB;
  TFLG1_C0F=1;      //清中断标志位
}
A1脚用杜邦线接至T0脚,如果响应中断的话灯应该一闪一闪的,可是灯一直是灭的,就是说没有进入中断,求大侠指导。谢谢。
作者: fanfankaka123    时间: 2011-2-19 16:14
知道结果了,闪的太快的原因,从而看不出来。
作者: 海军10291147    时间: 2012-2-12 17:19
肯定不是闪得太快,太快就会一直亮
作者: 欤緈諨侑染    时间: 2012-2-13 14:46
为什么还有个 DisableInterrupts;





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