Board logo

标题: [原创][求助]s12定时器溢出中断问题 [打印本页]

作者: shiyufei5291    时间: 2007-10-21 20:55     标题: [原创][求助]s12定时器溢出中断问题

本人刚接触s12,想做个定时器中断溢出实验,不知为什么不进入中断服务程序,希望有高手指点一二,谢谢
程序如下
#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"


void TimerOverFlow_ISR(void){
PORTB=~PORTB;
}

void main(void){
TSCR1=0x80;
TSCR2=0x80;
TFLG2=0x80;
DDRB=0xFF;

asm{
nop
};
for (;;)
{

PORTB=0xff;
EnableInterrupts;
}
}

用的是BDM仿真,另外,在True-Time Simulator里不能连续运行
作者: shiyufei5291    时间: 2007-10-21 20:57

已经在Prm文件夹里的加了中断向量,VECTOR ADDRESS 0xFFDE TimerOverFlow_ISR
作者: strongchen    时间: 2007-10-22 09:59

你的程序有这样几个问题:
1. 中断程序必须放入非分页地址;
2. 在中断程序中必须请中断标志位;
3. 你在主循环中和中断程序中同时对PORTB进行操作,会产生冲突;
作者: shiyufei5291    时间: 2007-10-22 23:16

谢谢,不过一点不明白,就是非分页地址的概念,怎么放入非分页地址呢
作者: shiyufei5291    时间: 2007-10-22 23:40

改了程序,还是不行的,严重郁闷
#include /* common defines and macros */
#include /* derivative information */
#pragma LINK_INFO DERIVATIVE "mc9s12dg128b"

#pragma CODE_SEG NON_BANKED
void TimerOverFlow_ISR(void){
TFLG2=0x80;
PORTB=~PORTB;
}
#pragma CODE_SEG DEFAULT

void main(void){
TSCR1=0x80;
TSCR2=0x80;
TFLG2=0x80;
DDRB=0xFF;
PORTB=0xff;
asm{
nop
};
for (;;)
{

EnableInterrupts;
}
}




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