恭喜,你发布的帖子
发布于 2025-03-24 16:51:01
15楼
确实是你说的那样,数组清零的值不会前移,所以我写了个出栈后数组移位程序,判断出栈队列数大于1时,且第一个队列数是0的时候,队列数组前移,但是发现个问题,后面的都还好,只要队列数等于2的时候,就有点问题,可能是我程序写的不对
多测试了几次其实不会自动前移也无所谓, 当数组满了,会自动填充到前面出栈为0的
空数组里面
其实与其强行用这个不咋好用的FIFO,不如自己写一个自己专属的FIFO,逻辑非常简单,我后面自己写了一个玩玩,公司电脑有水印,就不截图了,建议你自己写一个FIFO然后建一个料仓的UDT,把问题分解一下,就非常简单了。
Input
Data in Bool
Data out Bool
Output
First out data Int
InOut
Variant Variant
Static
P_Data in R_TRIG
P_Data out R_TRIG
Serial SInt
i SInt
Table Array[0..99] of Int
Temp
RET1 Int
RET2 Int
#"P_Data in"(CLK:=#"Data in");
IF #"P_Data in".Q THEN
VariantGet(SRC:=#Variant,
DST=>#Table[#Serial]);
#Serial += 1;
END_IF;
#"P_Data out"(CLK:=#"Data out");
IF #"P_Data out".Q AND #Serial>0 THEN
#"First out data" := #Table[0];
FOR #i := 0 TO #Serial DO
#Table[#i] := #Table[#i + 1];
END_FOR;
#Serial -= 1;
END_IF;
请填写推广理由:
分享
只看
楼主