找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2198|回复: 6
收起左侧

STC单片机外部中断中入栈出栈中的一些疑问

[复制链接]
ID:259017 发表于 2020-1-15 23:15 | 显示全部楼层 |阅读模式
我的疑问是这边箭头处为什么需要进栈操作呢,主程序main中又没有用到R2寄存器,还有这边为什么使用DPH呢,我觉得完全没有必要进栈操作呀,是不是这本书写错了(何宾师傅的STC开发指南)

1

1

2

2
回复

使用道具 举报

ID:94031 发表于 2020-1-16 09:35 | 显示全部楼层
这两段都是中端服务操作,就是暂停正在进行的工作执行中断服务,中断服务前要先保护现场,中断服务后要恢复现场,这是中断服务必须要做的。
回复

使用道具 举报

ID:259017 发表于 2020-1-16 12:24 | 显示全部楼层
xuyaqi 发表于 2020-1-16 09:35
这两段都是中端服务操作,就是暂停正在进行的工作执行中断服务,中断服务前要先保护现场,中断服务后要恢复 ...

兄弟,你能具体分析一下吗,为什么这边用到R2寄存器,实际上我删除进栈出栈也没有任何影响,且主程序中并灭有用到R2寄存器
回复

使用道具 举报

ID:94031 发表于 2020-1-16 13:50 | 显示全部楼层
Zidone 发表于 2020-1-16 12:24
兄弟,你能具体分析一下吗,为什么这边用到R2寄存器,实际上我删除进栈出栈也没有任何影响,且主程序中并 ...

这要看全部程序,别的地方用到R2寄存器呢。
回复

使用道具 举报

ID:401564 发表于 2020-1-16 15:09 | 显示全部楼层
没有完整的程序看不出来,就那么几十行的代码,你打不出来不是更好吗?可以练习一下指令
这书的内容实际上也不咋的,说白了就是随便说说:嗯!就是这个意思,你明白就好了!
1,累加器A在8051汇编中是到处都要用到的,书上竟然是在中断中去改变A的值
2.进入中断最先也是一定要保护的是PSW和ACC的值,因为这两个寄存器到处都有可能要用到的,中断中如果用到了,却又不保护的话,程序可能会乱的

以上说法是针对8051汇编而言的,我不会C,所以不知道如果是在C中包含汇编是不是有什么不一样的地方,如果有不对的,请指正
回复

使用道具 举报

ID:684095 发表于 2020-1-16 18:09 | 显示全部楼层
网上查询一下了解一下功能会更好
回复

使用道具 举报

ID:433166 发表于 2020-1-16 20:47 | 显示全部楼层
1.DPH和DPL是DPTR寄存器的高八位和低八位。DPTR是16位寄存器。DPH/DPL可以单独作为8位寄存器使用。
2. 本例中似乎是示教某些东西,在中断运行中,根据栈的先入后出规则:DPH和R2两个寄存器实现了数据交换。 ------------------------       正确出入方式是:     PUSH A; PUSH B;......;POP B;POP A ; RETI;
                  --------------------------------------------------------这里或许有BUG
回复

使用道具 举报

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

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表