前言:
此刻小伙伴们对“入栈出栈c语言”大约比较重视,朋友们都想要知道一些“入栈出栈c语言”的相关内容。那么小编同时在网络上网罗了一些有关“入栈出栈c语言””的相关资讯,希望兄弟们能喜欢,兄弟们快快来学习一下吧!IF "数据".入栈按钮 THEN//入栈按钮为1时执行以下指令
#开始地址 := 66;//开始地址取决于你定义的DB块栈数据的地址。
//#开始地址,#数据长度,#循环次数都是临时变量,可以在FB的接口temp中定义。
#数据长度 := 2;//因为是WORD型变量,间隔是2.
#循环次数 := 10;//取决栈数据的数量。
(*入栈每次运行都是把前一个变量传送给后一个变量,就是压栈,然后再把数据传送给栈内第一个变量*)
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语言