Board logo

标题: [求助]输入捕捉问题 [打印本页]

作者: fantaman    时间: 2006-10-11 16:37     标题: [求助]输入捕捉问题

  我做了 一个MC9S12D64的输入捕捉程序,想实现输入下降沿脉冲捕捉.下降沿脉冲通过按键实现.定义全局变量num用来记录脉冲的次数.程序如下


int num;
 /*****************IC中断处理程序***************/
#pragma CODE_SEG NON_BANKED
void interrupt 8 ECT_ISR(void)
{
  num=num+1;
}
#pragma CODE_SEG DEFAULT
 
/********************IC初始化*********************/
static void IC_init(void)
{       
  TIOS = 0x00;        // 设置为IC
  DLYCT=0X03;         // 延迟1024个P时钟
  TCTL4 = 0x02;       // 下降沿捕获
  OC7M  =0X00;        // 屏蔽位无效
  TSCR1 = 0X90;         // 定时器使能,标志位快速清除
  TSCR2 = 0x0f;         // 定时器溢出中断禁止
                        // TCRES清零,定时器自动运行
                        // 定时器分频系数为128
  TIE = 0x01;           // IC0允许中断
 
}
/********************主程序*********************/
void main(void)
{
  IC_init(); 
  EnableInterrupts; 


  for(;;)  {} 
}


  调试程序的时候我在中断程序中设置断点,按下按键后程序能够正常进入中断,实现num正常加1,然后我把断点去掉,全速运行,再按下一次按键后停止程序,观察num变量,发现num变量的值竟然达到上万以上。
  我分析是按键产生的抖动使得中断重复发生,但是我已经设置了输入延时,为什么中断次数还这么多?ECT的延时功能该如何设置?
  望版主指点!


 


作者: strongchen    时间: 2006-10-11 17:39

你可以先试试加上大的电容滤波,从硬件上改善波形后,情况有什么变化。




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