标题:
为什么输出比较中断只进一次,以后就进不了??
[打印本页]
作者:
vincent85
时间:
2008-2-28 15:51
标题:
为什么输出比较中断只进一次,以后就进不了??
为什么输出比较中断只进一次,以后就进不了??
#include
/* common defines and macros */
#include
/* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"
void main(void) {
DisableInterrupts;
DDRB=0xff;
PORTB=0xff;
TIOS=0x80;
TC7=64000;
TSCR2=0x0f;
TFLG1_C7F=1;
TIE=0x80;
TSCR1_TEN= 1;
for(;;) {EnableInterrupts;} /* wait forever */
/* please make sure that you never leave this function */
}
void interrupt Timer0(void){
TFLG1_C7F=1;
waittime++;
if(waittime==2) {
waittime=0;
PORTB =0xf0;
}
PORTB =0x0f;
}
作者:
haoying725
时间:
2008-2-29 11:30
TFLG1_C7F 在中断程序要对它清零 (俺也是初学者,不知道说的对不对)
作者:
strongchen
时间:
2008-2-29 12:03
你怎么知道输出比较中断只进一次,以后就进不了了?
作者:
vincent85
时间:
2008-2-29 12:13
第一次进中断时看PORTB =0x0f;
第二进中断时看PORTB =0xf0;但是小灯没有按设置的那样亮。
作者:
strongchen
时间:
2008-2-29 12:54
可是你的程序并不是这样控制的。仔细检查一下。
作者:
vincent85
时间:
2008-2-29 13:34
怎么不是啊?版主指教一下行吗?
作者:
strongchen
时间:
2008-2-29 13:37
照你的程序,每次进中断后最后都会执行PORTB =0x0f;。
作者:
vincent85
时间:
2008-2-29 14:22
是哦,谢谢!
还想问一下是不是TC7=TCNT=64000时进第一次中断,然后自由计数器TCNT从64000计到FFFF溢出到0000,再到TC7=TCNT=64000时进第二次中断。如果是——那岂不是进第一中断的时间跟第二次的时间不同,达不到准确定时。
作者:
strongchen
时间:
2008-2-29 15:08
你不是设置了TCRE=1吗,这样每次TC7=TCNT时,TCNT都会清零。
作者:
vincent85
时间:
2008-2-29 15:45
真的很感谢版主!!
我看到有的书对TCRE是这样定义的:TCRE=1 当OC7比较成功时复位计数器。是不是只有通道7有这功能,那其他通道有没有这样的功能?
作者:
strongchen
时间:
2008-2-29 16:05
是的,只有通道7有这个功能。
作者:
伊独侠客
时间:
2008-3-21 21:22
你可以将waittime设为全局变量这样你在调试的时候就可以看到中断的 次数了!
我刚用你的程序按照我的方法试验过了,可以看到中断的次数
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0