龙空技术网

用SCL语言写的入栈出栈

勇知 1694

前言:

此刻小伙伴们对“入栈出栈c语言”大约比较重视,朋友们都想要知道一些“入栈出栈c语言”的相关内容。那么小编同时在网络上网罗了一些有关“入栈出栈c语言””的相关资讯,希望兄弟们能喜欢,兄弟们快快来学习一下吧!

IF "数据".入栈按钮 THEN//入栈按钮为1时执行以下指令

#开始地址 := 66;//开始地址取决于你定义的DB块栈数据的地址。

//#开始地址,#数据长度,#循环次数都是临时变量,可以在FB的接口temp中定义。

#数据长度 := 2;//因为是WORD型变量,间隔是2.

#循环次数 := 10;//取决栈数据的数量。

这是我创建的DB块

(*入栈每次运行都是把前一个变量传送给后一个变量,就是压栈,然后再把数据传送给栈内第一个变量*)

WHILE #循环次数>1 DO

//读取数据到临时变量

#读取数据:=PEEK_WORD(area := 16#84,//代表DB

dbNumber := 2,//代表DB2

byteOffset:= (#循环次数-1)*#数据长度+#开始地址-2);//每次传送的偏移量,具体地址

//把临时数据写入对应的变量

POKE(area:=16#84,

dbNumber:=2,

byteOffset:=#循环次数*#数据长度+#开始地址-2,

value:=#读取数据);

#循环次数 := #循环次数 - 1;//循环次数每次减一

END_WHILE;

POKE(area := 16#84,

dbNumber := 2,

byteOffset := #开始地址,

value := "数据".入栈数据);//把入栈数据传给栈内第一个变量

"数据".入栈按钮 := 0;//按钮复位

END_IF;

入栈时先压栈,再传送数据,出栈正好相反,先出栈传送数据。

IF "数据".出栈按钮 THEN//出栈指令为1,执行以下指令

#循环次数_1:=1;

#数据长度 := 2;

#开始地址 := 66;

POKE(area:=16#84,

dbNumber:=2,

byteOffset:=64 ,

value:="数据".栈数据[1]);

(出栈以后把后一个变量数据传送给前一个变量数据)

WHILE #循环次数_1 < 10 DO

#读取数据_1 := PEEK_WORD(area := 16#84,

dbNumber := 2,

byteOffset :=(#循环次数_1+1) * #数据长度 + #开始地址 - 2);

IF #循环次数_1 = 1 THEN

//当第一次出栈时,把最后一个数据赋值为0,这样出栈完成后栈内变量就会都为0.

"数据".栈数据[10] := 0;

END_IF;

POKE(area := 16#84,

dbNumber := 2,

byteOffset := #循环次数_1 * #数据长度 + #开始地址 - 2,

value := #读取数据_1);

#循环次数_1 := #循环次数_1 + 1;

END_WHILE;

"数据".出栈按钮 := 0;

END_IF;

视频加载中...

这时触摸屏测试画面,仅供参考,有任何问题,请留言或私信我。

标签: #入栈出栈c语言