标题:
在汇编中是怎样实现中断的?
[打印本页]
作者:
aoxue525
时间:
2006-3-20 19:45
标题:
在汇编中是怎样实现中断的?
在汇编中是怎样实现中断的?
是怎样进入中断的?
在codewarrior2.0下是这样设置的?
作者:
seuafu2005
时间:
2006-3-21 10:32
如果用Codewarrior写的话就和C语言比较类似,在prm文件中写中断向量中的函数地址,程序中正常编写函数即可
作者:
lingdukongjian
时间:
2006-3-21 15:17
可我写了
还是进不去
为什么?
我的程序是:
#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 //我添加的
请问我为什么出错了
编译能通过
可进不去中断
作者:
strongchen
时间:
2006-3-23 10:55
中断号“7”对吗?仔细检查一下_RTI_ISR对应的地址到底是什么?
作者:
lingdukongjian
时间:
2006-3-23 13:44
是7呀
我想问知道,这个实时时钟是怎么开启的?
作者:
jiazhenhua
时间:
2006-4-4 09:59
RTI实时时钟是干什么用的啊,不懂。。。
作者:
BORNJIANG
时间:
2006-4-7 12:55
利用ORG 指令定义中断入口地址,然后跳转到中断服务程序
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/)
Powered by Discuz! 7.0.0