打印

请教一个基本单片机问题

[复制链接]
1559|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的单片机就无中断可言。
我是这么理解的。也许理解的不对!

使用特权

评论回复
5
conwh| | 2007-7-20 06:04 | 只看该作者

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

所以一般就压入A和PSW

使用特权

评论回复
6
wtfshxkj| | 2007-7-20 07:20 | 只看该作者

正解

   2、3楼才是正解。

使用特权

评论回复
7
ayb_ice| | 2007-7-20 08:18 | 只看该作者

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

使用特权

评论回复
8
gyt| | 2007-7-20 10:08 | 只看该作者

支持conwh

使用特权

评论回复
9
soybean| | 2007-7-23 20:45 | 只看该作者

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

push是堆栈指令
pop是出栈指令

使用特权

评论回复
10
sunxflower| | 2007-7-25 16:00 | 只看该作者

看需要

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

使用特权

评论回复
11
wjy1107| | 2007-7-25 16:34 | 只看该作者

保护现场阿~

最大可能的恢复中断前的样子.

使用特权

评论回复
12
wshftyc| | 2007-7-25 20:24 | 只看该作者

应该好好看下书喽

使用特权

评论回复
13
conwh| | 2007-7-25 20:42 | 只看该作者

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

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

34

主题

69

帖子

0

粉丝