上升沿_SCL怎么编写上升沿的使用示例

要实现的功能就是对输入信号的上升沿进行置位,同时也可以进行复位的功能要求。

编好的功能块图如下所示:

6bde0cc88775f9274524135d3967b28c.png

接口说明:

trigger:每当trigger有一个上升沿,则out的状态发生改变。

set:当set有一个上升沿,则out置位。

reset,当reset有一个上升沿,则out复位。

时序图如下图所示:

309ba287100342c262ba27f12ae17310.png

当然了,本功能块也可以实现分频的作用。

重点来了,首先看看接口变量:

23d7244a144a50aa3d664830843721b2.png

具体程序:

3a657cadea1246175aa627ed4b6c54c6.png

仿真:

f438675807ccb27d590b58aa61911cb4.png

程序很简单,这里其实就是应用的一个理念就是什么上升沿?

希望通过本例能让大家对上升沿的使用有个更深一点的了解。

下面是源代码,小伙伴可以自己来试试看。

// 检测 "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;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值