作者 | 主题 |
---|---|
手机用户20190429403175 游民 经验值: 63 发帖数: 3 精华帖: 0 |
楼主 2021-02-21 14:55:34
主题:分享西门子堆栈的问题 想实现西门子的堆栈功能,即收到某一位信号上升沿时,将某一具体值放入堆栈中,同时将堆栈中最顶层的数据拿出来存入另一个存储器,实现先进后出的循环排队输出功能,求各位大神帮忙!! 最佳答案 这个用SCL语言实现起来比较简单。主要是把思路理清楚。 在论坛上看见有人提问,有个大神这样回答他的提问,但是我看了一下,我不能理解,看不明白,scl语言我是看的懂得,但是这个我看不懂别人这样写的意图,求大神一起交流和分享下 |
yming 至圣 经验值: 126308 发帖数: 21931 精华帖: 822 |
1楼 2021-02-21 16:05:07
主题:回复:分享西门子堆栈的问题 这是自己写的先进先出FiFo(不是堆栈后进先出哦)。很直观的呀。 TOP是被“顶出”的,数组元素 0的数据。 如果是8个数据,按序数据是放在元素 0-7中的。 不这么写,还能怎么写? 实际上,堆栈不用这么写的。 堆栈直接用指针,放入指针+1,取出指针-1,直到取光 指针=0;
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|
yming 至圣 经验值: 126308 发帖数: 21931 精华帖: 822 |
3楼 2021-02-21 20:25:27
主题:回复:分享西门子堆栈的问题 堆栈也好,FIFO也好,实际上是不要用楼主图片那种写法的! 那种写法是直观性的、给初学者作表述用的。 真实,高效的写法只是操作指针(Index),没有移动数据一说,也没有清除旧数据一说。 自己写一个吧。 写一个FB,既可以用于先进先出,也可以用于后进先出。同时,还有指针指向数据中的MAX,MIN。全部用指针操作。 练练手!
学而时习之,不亦说乎?温故而知新,不亦乐乎?
|