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

在汇编中是怎样实现中断的?

在汇编中是怎样实现中断的?

在汇编中是怎样实现中断的?
是怎样进入中断的?


在codewarrior2.0下是这样设置的?

如果用Codewarrior写的话就和C语言比较类似,在prm文件中写中断向量中的函数地址,程序中正常编写函数即可
可我写了
还是进不去
为什么?
我的程序是:
#include
#include

/* PORTB definitions */
#define PORTB (*((volatile unsigned char*)(0x0001)))
#define DDRB (*((volatile unsigned char*)(0x0003)))
#define RTICTL (*((volatile unsigned char*)(0x0014)))
#define RTIFLG (*((volatile unsigned char*)(0x0015)))

/* RTI definitions */


/*----------------中断服务程序------------------ */
#pragma CODE_SEG NON_BANKED
interrupt void _RTI_ISR(void){
RTICTL=0x07; //屏蔽中断

RTIFLG=0x80; //清中断标志
PORTB=~PORTB; //输出取反
RTICTL=0x87; //使能中断

}

#pragma CODE_SEG DEFAULT

/*----------------主函数-------------------------*/
void main(void) {
DDRB=0xff; //B口输出
PORTB=0x55;

//RTIFLG=0x80; //分频比是RTR2-RTR0:111 延时65.536MS
RTICTL=0x87; //使能实时中断并清中断

EnableInterrupts; //使能总中断


while(1);
}
/*--------------主函数结束-----------------------*/
我在。PRM文件里设置如下:
NAMES END

SECTIONS
MY_RAM = READ_WRITE 0x2000 TO 0x3FFF;
MY_ROM = READ_ONLY 0xC000 TO 0xFEFF;


PLACEMENT
DEFAULT_ROM INTO MY_ROM;
DEFAULT_RAM INTO MY_RAM;
END

STACKSIZE 0x600

VECTOR 0 _Startup /* set reset vector on _Startup */

VECTOR 7 _RTI_ISR //我添加的
请问我为什么出错了
编译能通过
可进不去中断
中心还有一个装备精良的科研实验室。有由教授、副教授、工程师及多名博士、硕士研究生组成的实力卓著的MCU与DSP应用开发队伍
中断号“7”对吗?仔细检查一下_RTI_ISR对应的地址到底是什么?
海纳百川  有容乃大
是7呀
我想问知道,这个实时时钟是怎么开启的?
中心还有一个装备精良的科研实验室。有由教授、副教授、工程师及多名博士、硕士研究生组成的实力卓著的MCU与DSP应用开发队伍
RTI实时时钟是干什么用的啊,不懂。。。
lazy crazy
利用ORG 指令定义中断入口地址,然后跳转到中断服务程序
返回列表