请教一个基本单片机问题

[复制链接]
3111|12
 楼主| forsuccess 发表于 2007-7-19 21:58 | 显示全部楼层 |阅读模式
51单片机中,PUSH ,POP一般用于 中断时保存 程序状态的。
那么:
1、中断来时,一定要 
   PUSH 
   POP
   这样直接写行吗?如果行,表示保存什么东西呢?
2、常常看到这样写的
   PUSH PSW
   PUSH ACC
   ...
   POP PSW
   POW ACC
   难道中断来时只需要保存这两个寄存器值就可以了么?其它的都不要保存么?这两个寄存器能包含所有需要保存的内容么?

望赐教,先对热心回复各位表示谢意了。
twr8001 发表于 2007-7-19 22:17 | 显示全部楼层

一般来说只要保存中断程序中可能改变的寄存器的值

conwh 发表于 2007-7-20 01:23 | 显示全部楼层

保存主程序和相关程序的常用寄存器的内容

diannaoza 发表于 2007-7-20 05:41 | 显示全部楼层

中断

1、中断来时,一定要 
   PUSH 
   POP
这个你不用写,只要你的堆栈够大。
有中断时自动把程序指针压入。中断完自动压出指针,要不然没有push,pop的单片机就无中断可言。
我是这么理解的。也许理解的不对!
conwh 发表于 2007-7-20 06:04 | 显示全部楼层

指针是自动压入的,可专用寄存器的内容不是自动压入的

所以一般就压入A和PSW
wtfshxkj 发表于 2007-7-20 07:20 | 显示全部楼层

正解

   2、3楼才是正解。
ayb_ice 发表于 2007-7-20 08:18 | 显示全部楼层

在中断可能被改变的寄存器都要保存....

gyt 发表于 2007-7-20 10:08 | 显示全部楼层

支持conwh

soybean 发表于 2007-7-23 20:45 | 显示全部楼层

只要保护你要保护的数据就可以了

push是堆栈指令
pop是出栈指令
sunxflower 发表于 2007-7-25 16:00 | 显示全部楼层

看需要

push 和pop是把数据暂存起来。打个比方,你有一个杯子贴着标签A,原来呢里面装着红酒,现在你要用这个杯子喝二锅头,那就先把红酒倒到一个叫“栈”的容器里(此动作PUSH也),当喝完二锅头时再把“栈”里面的红酒倒到杯子A里面(也就是POP--出栈了)。
wjy1107 发表于 2007-7-25 16:34 | 显示全部楼层

保护现场阿~

最大可能的恢复中断前的样子.
wshftyc 发表于 2007-7-25 20:24 | 显示全部楼层

应该好好看下书喽

conwh 发表于 2007-7-25 20:42 | 显示全部楼层

保护现场PUSH是基本的,另外的就是使用专业的RS0、RS1

您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

70

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部