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

    文章

    1812

    浏览量

    129600
  • C语言
    +关注

    关注

    180

    文章

    7533

    浏览量

    128783
  • 触发器
    +关注

    关注

    14

    文章

    1681

    浏览量

    60406
收藏 人收藏

    评论

    相关推荐

    触发器实验

    触发器实验1)熟悉常用触发器的逻辑功能及测试方法。2)了解触发器逻辑功能的转换。三.实验内容及步骤 (1)   基本RS
    发表于 03-20 10:01

    触发器功能的模拟实验

      一、实验的目的1、掌握触发器功能的测试方法。2、掌握基本RS触发器的组成及工作原理。3、掌握集成JK触发器和D触发器的逻辑
    发表于 10-10 11:32

    什么是触发器 触发器的工作原理及作用

    ,并根据其差异采取对策。实际应用尽管触发器有很多优点,但是在实际的项目开发中,特别是OOP思想的深入,触发器的弊端也逐渐突显,主要:1、过多的触发器使得数据逻辑变得复杂2、数据操作比较隐含,不易进行调整修改3、
    发表于 12-25 17:09

    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>测试及其应用

    不同功能触发器的相互转换方法

    触发器是时序逻辑电路的基本构成单元,按功能不同可分为 RS 触发器、 JK 触发器、 D 触发器及 T
    发表于 09-30 16:03 88次下载

    触发器功能的模拟实现

    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.2w次阅读
    jk<b class='flag-5'>触发器</b><b class='flag-5'>实现</b>74ls194<b class='flag-5'>功能</b>

    D触发器原理:钟控D触发器和边沿D触发器

    在分析维持-阻塞边沿D触发器的工作原理之前,让我们先来看看 R0的复位功能 、S0的置位功能是如何实现的吧。
    的头像 发表于 10-18 11:26 2.2w次阅读
    D<b class='flag-5'>触发器</b>原理:钟控D<b class='flag-5'>触发器</b>和边沿D<b class='flag-5'>触发器</b>

    触发器使用中的几个问题

    将已有触发器转换为所需触发器功能,实际上是求转换电路,即求转换电路的函数表达式。
    的头像 发表于 03-15 16:41 2195次阅读
    <b class='flag-5'>触发器</b>使用中的几个问题

    基本rs触发器有哪三种功能 RS触发器的特征方程是什么

    基本的RS触发器有三种主要功能:   1. 储存功能(Hold):当RS触发器的R和S输入都为0时,保持当前的输出状态。输入信号不会改变Q和Q‘的值。这种状态下,RS
    的头像 发表于 08-23 16:08 1.1w次阅读

    触发器的输出是现态函数

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

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

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

    rs触发器的逻辑功能

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

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

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