找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索

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

查看数: 4044 | 评论数: 7 | 收藏 1
关灯 | 提示:支持键盘翻页<-左 右->
    组图打开中,请稍候......
发布时间: 2021-9-26 15:22

正文摘要:

这个是STC8的一个官方写的I2C的中断函数,其中pop和push函数是什么意思?网上查找的说法是拿出和放进数据,但在这具体的程序里面还是不能明白?望大佬们不吝赐教

回复

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。
ID:57657 发表于 2021-9-27 12:23
_push_() 与 _pop_() 函数,位于头文件 intrins.h 内。
编译后转换成PUSH POP汇编指令。
只能操作寄存器 且不能是变量、立即数。
ID:958976 发表于 2021-9-26 17:10
Y_G_G 发表于 2021-9-26 17:08
堆栈在8051的C语言中不需要学,8051用的是软件堆栈,原理你要知道
一堆其它的单片机用的是硬件堆栈,这个就要 ...

谢谢了
ID:401564 发表于 2021-9-26 17:08
堆栈在8051的C语言中不需要学,8051用的是软件堆栈,原理你要知道
一堆其它的单片机用的是硬件堆栈,这个就要了解了,特别是那种只有4层的低端单片机,很容易就溢出了,一溢出了,程序就跑飞了
ID:958976 发表于 2021-9-26 16:22
188610329 发表于 2021-9-26 16:21
出入栈的,其实可以不写,进出中断,C语言编程的话本来就自动出入栈的。

明白了  谢谢
ID:624769 发表于 2021-9-26 16:21
出入栈的,其实可以不写,进出中断,C语言编程的话本来就自动出入栈的。
ID:824490 发表于 2021-9-26 16:06
就是入栈和出栈。

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

Powered by 单片机教程网

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