0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

触发器功能函数实现

冬至子 来源:麦芽二糖 作者:麦芽二糖 2023-10-23 16:54 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

一、

触发器很多时候是很有用的,CAN总线或者串口周期发送一个信号,这个信号作为一个判断条件,当这个信号为有效信号时只需要执行一遍用户程序。

这里用触发器就会很好处理,有效信号为高电平那么做一个上升沿触发函数,有效信号为低电平那么做一个下降沿触发函数。

二、触发器功能实现

1、首先定义一个结构体

typedef struct _trig
{
    bool input;
    bool output;
    bool lastInput;
}trig_t;

C语言本身是没有bool类型的,我们可以自己定义一个或者使用#include 添加这个库。

2、上升沿函数

bool R_Trig(trig_t* trig)
{
    if((trig- >input==true) && (trig- >lastInput==false)) {
        trig- >output = true;
    } else {
        trig- >output = false;
    }
    trig- >lastInput = trig- >input;


    return trig- >output;
}

3、下降沿函数

bool F_Trig(trig_t* trig)
{
    if((trig- >input==false) && (trig- >lastInput==true)) {
        trig- >output = true;
    } else {
        trig- >output = false;
    }
    trig- >lastInput = trig- >input;


    return trig- >output;
}

4、使用例程

上升沿:

trig_t R = {0}; /* 定义一个结构体 R */
bool userVar = false; /* 定义一个用于接收总线信号的变量 */
int main()
{
  R.input = userVar;
  if( R_Trig(&R)) {
    /* 只执行一遍的用户代码 */
  }
  return 0;
}

下降沿:

trig_t F = {
            .input = true;
            .laseInput = true;
            }; /* 定义一个结构体 R */
bool userVar = true; /* 定义一个用于接收总线信号的变量 */
int main()
{
  F.input = userVar;
  if( F_Trig(&F)) {
    /* 只执行一遍的用户代码 */
  }
  return 0;
}
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • CAN总线
    +关注

    关注

    145

    文章

    2020

    浏览量

    134696
  • C语言
    +关注

    关注

    183

    文章

    7642

    浏览量

    144632
  • 触发器
    +关注

    关注

    14

    文章

    2051

    浏览量

    63048
收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    D触发器/J-K触发器功能测试及其应用

    D触发器功能测试74LS74型双D触发器芯片引脚图,D触发器功能测试的引脚连线图,D触发器
    发表于 02-14 15:27 0次下载
    D<b class='flag-5'>触发器</b>/J-K<b class='flag-5'>触发器</b>的<b class='flag-5'>功能</b>测试及其应用

    D触发器

    D触发器 同步式D触发器逻辑电路图 D触发器功能
    发表于 10-20 09:57 2797次阅读
    D<b class='flag-5'>触发器</b>

    基本触发器功能的描述

    描述触发器的逻辑功能,通常采用下面三种方法:1.状态转移真值表为了表明触发器在输入信号作用下,
    发表于 08-13 09:21 6692次阅读
    基本<b class='flag-5'>触发器</b><b class='flag-5'>功能</b>的描述

    触发器功能的模拟实现

    1、掌握触发器功能的测试方法。 2、掌握基本RS触发器的组成及工作原理。 3、掌握集成JK触发器和D触发器的逻辑
    发表于 07-10 14:39 18次下载

    基于CPLD的触发器功能的模拟实现

    实验内容 将基本RS触发器,同步RS触发器,集成J-K触发器,D触发器同时集成一个CPLD芯片中模拟其功能,并研究其相互转换的方法。 实验的
    发表于 12-05 09:33 13次下载
    基于CPLD的<b class='flag-5'>触发器</b><b class='flag-5'>功能</b>的模拟<b class='flag-5'>实现</b>

    jk触发器实现74ls194功能

    JK触发器是数字电路触发器中的一种基本电路单元。本文以jk触发器为中心,主要介绍了JK触发器工作特性以及jk触发器是如何
    发表于 12-22 16:09 2.5w次阅读
    jk<b class='flag-5'>触发器</b><b class='flag-5'>实现</b>74ls194<b class='flag-5'>功能</b>

    触发器的输出是现态函数

    触发器的输出是现态函数 触发器是数字电路中的一种重要元件,它们通常被用于存储和装载二进制数据,也可以用于控制和同步各种数字电路。在许多数字电路应用中,触发器的输出通常被用作输入信号来
    的头像 发表于 08-24 15:50 1581次阅读

    触发器激励函数和输出函数解析

    触发器激励函数和输出函数解析  触发器是数字电路中的一种重要的组合逻辑电路,其可以达到存储、延时、计数等功能
    的头像 发表于 08-24 15:50 4445次阅读

    rs触发器的逻辑功能

    RS触发器是数字电路中最简单的一种触发器,其由两个互相反向的电平触发器组成。RS触发器的逻辑功能非常重要,它可以用于存储1位二进制数据,并能
    的头像 发表于 11-17 16:01 7367次阅读

    RS触发器实现原理 rs触发器具有什么功能

    RS触发器是一种基本的数字逻辑电路,它由两个互补的反馈连接组成。RS触发器可以用作其他高级逻辑电路的构建模块,如计数、移位寄存和内存单元等。本文将详细介绍RS
    的头像 发表于 01-17 14:24 5727次阅读

    如何用jk触发器构成t触发器?t触发器逻辑功能有哪些

    触发器,其输入信号作用于触发器触发器将根据输入信号进行状态切换。本文将详细介绍如何使用JK触发器构成T触发器,并介绍T
    的头像 发表于 02-06 14:11 1.2w次阅读

    t触发器与d触发器的区别和联系

    )。 1. 触发器的基本概念 触发器是一种具有记忆功能的电路,它可以存储一位二进制信息。在数字电路中,触发器通常由两个稳定的工作状态组成,即0状态和1状态。
    的头像 发表于 08-11 09:37 6464次阅读

    t触发器变为d触发器的条件

    是一种具有记忆功能的数字电路元件,可以存储一位二进制信息。它通常由逻辑门、触发器存储元件和反馈回路组成。触发器的输出状态取决于输入信号和当前状态。 1.2 触发器的分类
    的头像 发表于 08-22 10:33 3551次阅读

    基本rs触发器有哪三种功能 基本rs触发器触发方式是什么

    变为高电平。当输入信号R为高电平时,触发器的输出Q将被置为高电平,无论输入信号S的状态如何。这种功能通常用于将触发器的状态设置为特定的初始状态。 置位功能
    的头像 发表于 08-22 15:17 3811次阅读

    怎么用jk触发器变成t触发器

    将JK触发器变成T触发器,主要涉及到对JK触发器的输入端口进行适当的连接和配置,以实现T触发器的逻辑功能
    的头像 发表于 08-28 09:41 5699次阅读