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

中断执行指令在哪?

中断执行指令在哪?

12系列芯片的中断执行指令的压栈跟出栈语句在哪里可以看到?


CW3.1的编译器里面的关于中断执行的汇编语句,好象没有压栈跟出栈的指令?


 

迷途的羔羊!
执行中断的时候会自动进行压栈的操作,在返回的时候执行RTI指令也会有出栈的操作
具体可以查看CPU12RM。pdf文件中的SWI和RTI指令
SWI不是软件中断么?那如果是硬件中断也是自动压栈的,不需要某个指令来进行压栈?压栈时间多长呢?
出栈是RTI指令执行的。跟RTI执行时间相关
迷途的羔羊!
中断时的压栈和出栈是自动执行的,不需要用户指令。不同中断的相应流程可能稍有不同,具体请参见《S12CPUV2.pdf》的第323页:Exception Processing Flow。
海纳百川  有容乃大
324页中画出了中断的流程,那按1.0到9.1这条路线走,总共执行了多少时间?
还有个问题:
采用分页机制情况下,把外部的RAM弄到页00-30这边,之后我把一个数组(全局变量)定义在页1中,好象在主程序中,无法对这个数组直接赋值。
如果我想把数据放到外部RAM,在程序中可以直接对这个数据的变量进行直接修改么?用赋值语句?
迷途的羔羊!
基本上就是9个指令周期。如果采用25M的总线频率,那么中断响应时间为360nS。

不太清楚你的第2个问题的具体情况。能把project贴出来吗?
海纳百川  有容乃大
里面有句数据赋不过去,我想那样赋值不知道要怎么弄?
迷途的羔羊!
http://bbs.eccn.com/uploadImages/SRAM.rar

[此贴子已经被作者于2006-12-18 9:18:59编辑过]

迷途的羔羊!
我看过你的project了,编译能够通过,只是有一些警告。你说的数据赋不过去是这一句吗:
uint Addr = 0x118000;
你可以参考这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104072&ID=104072
海纳百川  有容乃大
还有这个帖子:
http://bbs.eccn.com/dispbbs.asp?boardID=3&RootID=104163&ID=104163
海纳百川  有容乃大
G_R12K_ADC1F16H_BufferArea[0] = 1;
我赋不过去的是这句。
原来要在定义数据段中加上__PPAGE_SEG如:
#pragma DATA_SEG __PPAGE_SEG DATA_PAGE_01
这样才可以直接赋值!!
迷途的羔羊!
还有我在另外1个帖子上问的问题,改中断矢量指向RAM(0x1000)
是不是在.prm中添加VECTOR 22 0x1000这句就行了?
迷途的羔羊!
是的。
海纳百川  有容乃大
OK!谢谢斑竹
迷途的羔羊!
返回列表