Board logo

标题: 关于定时器问题 [打印本页]

作者: aries_xue    时间: 2005-11-21 15:23     标题: 关于定时器问题

我想用定时器产生周期中断,在一个管脚上产生周期脉冲,但是仿真发现程序不进中断,各位大虾帮忙看下,我已经在vector里面设置了中断向量

void main(void){

DDRT=0x10;
PTT=0x00;

TSCR2  = 0x80;  //timer overflow interrupt enable
TSCR1  = 0x80;  //timer enable
TFLG2=0x00;
EnableInterrupts;
for(;;){
}
}

#pragma CODE_SEG NON_BANKED
void interrupt Int_TimerOverFlow(void)
{
   TFLG2_TOF  = 1;  //clear timer overflow flag
   PTT_PTT4=~PTT_PTT4;
}
#pragma CODE_SEG DEFAULT

[此贴子已经被作者于2005-11-21 15:23:50编辑过]


作者: MC68HC908QY4    时间: 2005-11-22 02:15

有没有设置中断允许?我用的是908.这个说明书没看过,不过都差不多.
我的程序中是在定时器中断中定义一个局部变量,如int a; 然后用a取一次控制寄存器的值就可以了.a="定时器控制寄存器";
只做参考 初学中..
作者: zangsir    时间: 2005-11-22 14:14

什么片子?
作者: aries_xue    时间: 2005-11-22 16:02

MC9S12NE64
作者: zangsir    时间: 2005-11-22 20:04

#include /* common defines and macros */

#include /* derivative information */

#pragma LINK_INFO DERIVATIVE "mc9s12c32"

unsigned char tmect,tmrti,tempdt,period,duty;

volatile void ECT_Init(void)

{

TSCR1=0x80;

TSCR2=0x80;

}

void main(void)

{ /* put your own code here */

DDRA=0b00000001;

DDRB=0b00010000;

ECT_Init();

PORTA=0;

PORTB=0;

EnableInterrupts;

for(;;)

{

   if(tmect<127)

   {

      PORTB_BIT4=0;

   } else

   {

      PORTB_BIT4=1;

    }

} /* wait forever */ }

volatile void interrupt 16 ETI_Int(void)

{

    TFLG2_TOF=1;

    tmect++;

}

 

 

我是写在主程序里的,能够运行 

[此贴子已经被作者于2005-11-22 20:04:30编辑过]


作者: 碧落星空    时间: 2005-11-23 08:27

没看出有什么区别,郁闷 。。。。
作者: strongchen    时间: 2005-11-23 16:26

看看你的中断矢量地址对不对。
作者: 碧落星空    时间: 2005-11-23 16:27

我和楼主是同事,我试了下,用你的片子确实可以运行,但使用我们的片子就不进中断,那位大虾能给解释下原因。
作者: strongchen    时间: 2005-11-23 16:43

片子坏了?换块片子试试。
作者: 碧落星空    时间: 2005-11-23 16:55

问题是仿真也不成啊
作者: strongchen    时间: 2005-11-23 17:10

仿真?你是说软件仿真?软件仿真要进定时器中断的话比较麻烦,要作许多设置,不然定时器是跑不起来的。
作者: 碧落星空    时间: 2005-11-24 09:10

哦,那具体怎么设置,还有有没有关于仿真设置的资料呢
作者: strongchen    时间: 2005-11-24 11:35

CodeWarrior内置的在线帮助文件中应该有这方面的说明。




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