首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

[原创][求助]s12定时器溢出中断问题

[原创][求助]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里不能连续运行
已经在Prm文件夹里的加了中断向量,VECTOR ADDRESS 0xFFDE TimerOverFlow_ISR
你的程序有这样几个问题:
1. 中断程序必须放入非分页地址;
2. 在中断程序中必须请中断标志位;
3. 你在主循环中和中断程序中同时对PORTB进行操作,会产生冲突;
海纳百川  有容乃大
谢谢,不过一点不明白,就是非分页地址的概念,怎么放入非分页地址呢
改了程序,还是不行的,严重郁闷
#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;
}
}
返回列表