Board logo

标题: 关于飞思卡尔单片机的输入不捉功能 [打印本页]

作者: suhao199003050    时间: 2009-10-26 17:58     标题: 关于飞思卡尔单片机的输入不捉功能

#include <hidef.h>      /* common defines and macros */
#include <mc9s12dg256.h>     /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg256b"
void interrupt 8 ic0_int (void);
void SET_PLL(void);
void delay(void);
//利用输入捕捉功能做一个外部中断
int a=0,b=0,c=0;
void ic_init(void)
{
   
    TSCR2=0X07;        //采用128分频
    TSCR1=0X90;       //定时器使能控制  及标志位自动清零
    TIE_C0I=1;        //设置 零通道为输入捕捉
    TCTL4_EDG0A=1;    //采用了的上升沿均促发
    TIOS_IOS0=0;      //设置相应的位为输入捕捉   
  
}
void SET_PLL(void)
{
    PLLCTL=0XF1;
    SYNR=2;
    REFDV=1;
    while(CRGFLG_LOCK!=1);
    CLKSEL_PLLSEL=1;           
}
void delay(void)
{
   int i,j;
   for(i=0;i<2000;i++)
     for(j=0;j<200;j++);
     
}
void main(void)
{
    EnableInterrupts;
    SET_PLL();
    DDRA=0XFF;       //设置A口为输出
    PORTA=0X00;      //初始值为零  */
    DDRB=0XFF;       //设置B口为输出
    PORTB=0XF0;      //初始值为高电
    ic_init();  
                                             
    while(1)
    {                                       
      b++;
      delay();
      PORTB_BIT0=1;
      delay();
      PORTB_BIT0=0;
     
    }
}

#pragma CODE_SEG NON_BANKED                                                            
void interrupt 8 ic0_int(void)    //中断服务程序
{  

   DisableInterrupts;
    TFLG1_C0F=1;
    a++;
    PORTB=~PORTB;
    delay();                             
    delay();
    //c=1;
    EnableInterrupts;
    return  ;     
}   

各位前辈,本人是一个初学者,写了一个输入捕捉函数,但却发现单片机进入中断之后出不来了,且不断循环中断函数。上面是我的程序,请各位高手指教!!
  (我用的单片机型号是MC9S12DG256, 编程软件是5.0的)  ~~  谢谢!!
作者: whc1223    时间: 2009-11-19 11:27

return  ;   ?
作者: daixiaoke    时间: 2009-11-24 20:36

其他的不说,但说main()函数中第一句使能中断不应该这么早。一般放到初始化函数后执行,即ic_init();  之后。




欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) Powered by Discuz! 7.0.0