找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4020|回复: 7
打印 上一主题 下一主题
收起左侧

单片机C语言求教,关于push和pop函数

[复制链接]
跳转到指定楼层
楼主

这个是STC8的一个官方写的I2C的中断函数,其中pop和push函数是什么意思?网上查找的说法是拿出和放进数据,但在这具体的程序里面还是不能明白?望大佬们不吝赐教
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:824490 发表于 2021-9-26 16:06 | 只看该作者
就是入栈和出栈。
回复

使用道具 举报

板凳
ID:624769 发表于 2021-9-26 16:21 来自触屏版 | 只看该作者
出入栈的,其实可以不写,进出中断,C语言编程的话本来就自动出入栈的。
回复

使用道具 举报

地板
ID:958976 发表于 2021-9-26 16:22 | 只看该作者
188610329 发表于 2021-9-26 16:21
出入栈的,其实可以不写,进出中断,C语言编程的话本来就自动出入栈的。

明白了  谢谢
回复

使用道具 举报

5#
ID:401564 发表于 2021-9-26 17:08 | 只看该作者
堆栈在8051的C语言中不需要学,8051用的是软件堆栈,原理你要知道
一堆其它的单片机用的是硬件堆栈,这个就要了解了,特别是那种只有4层的低端单片机,很容易就溢出了,一溢出了,程序就跑飞了
回复

使用道具 举报

6#
ID:958976 发表于 2021-9-26 17:10 | 只看该作者
Y_G_G 发表于 2021-9-26 17:08
堆栈在8051的C语言中不需要学,8051用的是软件堆栈,原理你要知道
一堆其它的单片机用的是硬件堆栈,这个就要 ...

谢谢了
回复

使用道具 举报

7#
ID:57657 发表于 2021-9-27 12:23 | 只看该作者
_push_() 与 _pop_() 函数,位于头文件 intrins.h 内。
编译后转换成PUSH POP汇编指令。
只能操作寄存器 且不能是变量、立即数。
回复

使用道具 举报

8#
ID:624769 发表于 2021-9-27 20:18 | 只看该作者
npn 发表于 2021-9-27 12:23
_push_() 与 _pop_() 函数,位于头文件 intrins.h 内。
编译后转换成PUSH POP汇编指令。
只能操作寄存器  ...

站在C语言的角度来讲, PUSH 和 POP 是可以操作变量的,只要这个变量存在于直接地址中。

PUSH  是把直接地址  推入到  SP+1后  所指向的间接地址。
POP   是把SP指向的间接地址的内容, 取出到直接地址后  SP -1。
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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