标题: 中断执行指令在哪? [打印本页]
作者: ky3453079 时间: 2006-12-14 17:25 标题: 中断执行指令在哪?
12系列芯片的中断执行指令的压栈跟出栈语句在哪里可以看到?
CW3.1的编译器里面的关于中断执行的汇编语句,好象没有压栈跟出栈的指令?
作者: seuafu2005 时间: 2006-12-14 17:32
执行中断的时候会自动进行压栈的操作,在返回的时候执行RTI指令也会有出栈的操作
具体可以查看CPU12RM。pdf文件中的SWI和RTI指令
作者: ky3453079 时间: 2006-12-15 09:53
SWI不是软件中断么?那如果是硬件中断也是自动压栈的,不需要某个指令来进行压栈?压栈时间多长呢?
出栈是RTI指令执行的。跟RTI执行时间相关
作者: strongchen 时间: 2006-12-15 10:55
中断时的压栈和出栈是自动执行的,不需要用户指令。不同中断的相应流程可能稍有不同,具体请参见《S12CPUV2.pdf》的第323页:Exception Processing Flow。
作者: ky3453079 时间: 2006-12-15 12:01
324页中画出了中断的流程,那按1.0到9.1这条路线走,总共执行了多少时间?
还有个问题:
采用分页机制情况下,把外部的RAM弄到页00-30这边,之后我把一个数组(全局变量)定义在页1中,好象在主程序中,无法对这个数组直接赋值。
如果我想把数据放到外部RAM,在程序中可以直接对这个数据的变量进行直接修改么?用赋值语句?
作者: strongchen 时间: 2006-12-15 16:35
基本上就是9个指令周期。如果采用25M的总线频率,那么中断响应时间为360nS。
不太清楚你的第2个问题的具体情况。能把project贴出来吗?
作者: ky3453079 时间: 2006-12-18 09:05
里面有句数据赋不过去,我想那样赋值不知道要怎么弄?
作者: ky3453079 时间: 2006-12-18 09:18
http://bbs.eccn.com/uploadImages/SRAM.rar
[此贴子已经被作者于2006-12-18 9:18:59编辑过]
作者: strongchen 时间: 2006-12-18 15:36
我看过你的project了,编译能够通过,只是有一些警告。你说的数据赋不过去是这一句吗:
uint Addr = 0x118000;
你可以参考这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104072&ID=104072
作者: strongchen 时间: 2006-12-18 15:42
还有这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104163&ID=104163
作者: ky3453079 时间: 2006-12-18 15:53
G_R12K_ADC1F16H_BufferArea[0] = 1;
我赋不过去的是这句。
原来要在定义数据段中加上__PPAGE_SEG如:
#pragma DATA_SEG __PPAGE_SEG DATA_PAGE_01
这样才可以直接赋值!!
作者: ky3453079 时间: 2006-12-18 15:54
还有我在另外1个帖子上问的问题,改中断矢量指向RAM(0x1000)
是不是在.prm中添加VECTOR 22 0x1000这句就行了?
作者: strongchen 时间: 2006-12-18 15:55
是的。
作者: ky3453079 时间: 2006-12-18 16:01
OK!谢谢斑竹
欢迎光临 电子技术论坛_中国专业的电子工程师学习交流社区-中电网技术论坛 (http://bbs.eccn.com/) |
Powered by Discuz! 7.0.0 |