EDA365欢迎您登录!
您需要 登录 才可以下载或查看,没有帐号?注册
x
关于PIC单片机的中断现场保护问题
1 h' L8 ]2 z3 F* @8 V* W7 |
- O1 o# Y# n, Y K, V. J! S: }9 f1 g
在进入中断服务子程序期间,只有返回地址PC的数值被自动压入堆栈,其他的一些寄存器的内容就得按照程序的需要由我们自己想办法了。PIC单片机汇编语言没有象51系列单片机那样的PUSH POP指令,所以我们要用一段程序来实现类似的功能。 因为是用一段程序来实现现场的保护,这样就可能影响到W和STATUS寄存器,所以我们要在保护现场的时候先把这两个寄存器给保护了。这些现场保护不是将数据保存在芯片的堆栈中。而是将其放到RAM中进行保存。个人认为将这些数据保存在与体选址无关的RAM中,也就是说PIC一般有四个体,无论目前在哪个体里改变其RAM的数据,都可以映射到其他体中,本人认为这样在程序上比较方便,避免了一些弊端和麻烦。我也是刚接触PIC,如果有说的不对的地方,还请大家提出,我们共同探讨。先谢了:) 下面引用一段厂家提供的中断现场保护的样例程序:将W,STATUS,和PCLATH寄存器内的内容保存到临时备分寄存器中 . B; f" F. \: O z6 Q2 @
|