要实现的功能就是对输入信号的上升沿进行置位,同时也可以进行复位的功能要求。
编好的功能块图如下所示:
接口说明:
trigger:每当trigger有一个上升沿,则out的状态发生改变。
set:当set有一个上升沿,则out置位。
reset,当reset有一个上升沿,则out复位。
时序图如下图所示:
当然了,本功能块也可以实现分频的作用。
重点来了,首先看看接口变量:
具体程序:
仿真:
程序很简单,这里其实就是应用的一个理念就是什么上升沿?
希望通过本例能让大家对上升沿的使用有个更深一点的了解。
下面是源代码,小伙伴可以自己来试试看。
// 检测 "trigger"的上升沿
IF #trigger AND NOT #statTriggerOld THEN
#statTriggerRis := TRUE;
ELSE
#statTriggerRis := FALSE;
END_IF;
#statTriggerOld := #trigger;
// 检测 "set"的上升沿
IF #set AND NOT #statSetOld THEN
#statSetRis := TRUE;
ELSE
#statSetRis := FALSE;
END_IF;
#statSetOld := #set;
// 检测 "reset"的上升沿
IF #reset AND NOT #statResetOld THEN
#statResetRis := TRUE;
ELSE
#statResetRis := FALSE;
END_IF;
#statResetOld := #reset;
// 触发器信号
IF #statTriggerRis AND NOT #statOut THEN
#statOut := TRUE;
ELSIF #statTriggerRis AND #statOut THEN
#statOut := FALSE;
END_IF;
// out(set or reset)
IF #statTriggerRis THEN
#out := #statOut;
END_IF;
IF #statSetRis THEN
#out := TRUE;
END_IF;
IF #statResetRis THEN
#out := FALSE;
END_IF;