关于电平触发和边沿触发的不同

记得以前上大学时,老师讲到下降沿触发时,怎么也分不清下降沿触发与低电平触发有什么区别,乍看,它们似乎是一样的,比如键盘扫描程序扫描键盘是否按下:

某事件设为低电平触发【采用周期时间扫描方式查询触发条件是否成立】,初始化时为高电平即事件未触发,当电平突然改变为低电平,之后扫描程序执行到了这里扫描,则发现变为低电平故执行触发;

某事件设为下降沿触发【采用周期时间扫描方式查询触发条件是否成立】,初始化时为高电平即事件未触发,当电平突然改变为低电平,之后扫描程序执行到了这里扫描,则发现变为低电平故执行触发;

看上面结果是不是一样的!

但是,大家千万别忘了一个重要的东西,那就是时间是一直在走的,不会永远定格在某一刻,特别是单片机、计算机,它们只要没给它们指令让他们停止,那么它们就一直在运行,同样键盘扫描程序也一直在周期性地扫描键盘!当下一个扫描周期到了时,你就会发现它们两种触发方式所导致的结果完全是不一样的。

同样拿键盘扫描做实例,比如一个简单的键盘扫描程序设计,它实现一个键盘对应一个指示灯,当键盘按下一次时(假设按键按下时送人低电平、松开时送入高电平)对应的指示灯状态改变一次,即如果原来是熄灭的,当键盘第一次按下时将使它点亮,当键盘再次按下时它将熄灭,再按下时点亮,再按下时熄灭如此循环。这里我们采用键盘周期性扫描的方法查询按键是否按下:

1、在第1次扫描到键盘按下时,结果如前面我们说的一样,不论是低电平触发还是下降沿触发结果都会触发事件,这里触发时即指示灯点亮。然后程序继续运行……

2、当程序继续运行到第2次扫描键盘时按键还没放开,结果就不一样了。

低电平触发:触发条件依然为低电平,即触发条件成立,那么执行事件,即指示灯状态改变,此时指示灯由亮变灭;

下降沿触发:触发条件依然为低电平,与下降沿触发条件不成立,那么不执行事件,即指示灯维持原来的亮的状态。

3、当程序继续运行到第3次扫描键盘时按键还没放开,结果:

低电平触发:触发条件依然为低电平,即触发条件成立,那么执行事件,即指示灯状态改变,此时指示灯由灭变亮;

下降沿触发:触发条件依然为低电平,与下降沿触发条件不成立,那么不执行事件,即指示灯维持原来的亮的状态。

以上就是最典型的低电平触发与下降沿触发的区别,希望大家能从上面的例子里理解、掌握低电平触发和下降沿触发,并在实际学习和工作中能够灵活运用合适的触发方式。

时间: 2024-11-05 20:41:36

关于电平触发和边沿触发的不同的相关文章

边沿触发和电平触发的区别

边沿触发和电平触发的区别 当然不一样了电平触发是在高或低电平保持的时间内触发,而边沿触发是由高到低或由低到高这一瞬间触发追问:我总觉得都是在电平为某一值是而触发的.那边沿触发到底解决了电平触发哪点没有解决的问题呢?追答:边沿触发一般时间短,边沿触发一般时间都是us级的,响应要快的,而电平触发只须是高和低就可以了,没时间要求,比如10s 时间内总是低电平,那么它也是触发的,比如中断计时或计数,最好用边沿触发,用电平触发误差会很大,电平触发一般用于简单报警,开关一类(时间要求不高的)分类:电平触发,

epoll

https://segmentfault.com/a/1190000003063859http://man7.org/linux/man-pages/man7/epoll.7.html EPOLLIN事件内核中的socket接收缓冲区 为空 低电平内核中的socket接收缓冲区 不为空 高电平 EPOLLOUT事件内核中的socket发送缓冲区 为空 高电平内核中的socket发送缓冲区 不为空 低电平 LT 电平触发高电平触发 ET 边沿触发低电平 -> 高电平 触发高电平 -> 低电平 触

select, poll, epoll区别详解(一)

1 select函数 int select(int nfds, fd_set *readfds, fd_set *writefds, fd_set *exceptfds, struct timeval *timeout); 1.1 参数说明 第一个参数nfds为fdset集合中最大描述符值加1,fdset是一个位数组,其大小限制为__FD_SETSIZE(1024),位数组的每一位代表其对应的描述符是否需要被检查. 第二三四个参数表示需要关注读.写.错误事件的文件描述符位数组,这些参数既是输入参

OR1200处理器的可编程中断控制器PIC分析

以下内容摘自<步步惊芯--软核处理器内部设计分析>一书 16.3可编程中断控制器PIC分析 16.3.1 PIC介绍 可编程中断控制器Programmable Interrupt Controller(PIC)用来响应各种中断事件,如:键盘事件.串口数据到达等,PIC收集所有的中断,并通知CPU中断到达,后者转入到中断处理例程进行处理.OR1200最多支持32个中断.其功能实现主要依靠两个特殊寄存器:中断屏蔽寄存器PICMR.中断状态寄存器PICSR.通过PICMR可以设置是否屏蔽某些中断,通

SylixOS中GIC通用中断控制器(一)——GIC简介

1. GIC简介 操作系统中,中断是很重要的组成部分.有了中断系统才可以不用一直轮询(polling)是否有事件发生,系统效率才得以提高.一般在系统中,中断控制分为三个部分:模块.中断控制器和处理器.其中模块通常由寄存器控制是否使能中断和中断触发条件等:中断控制器可以管理中断的优先级等,而处理器则由寄存器设置用来响应中断. 1.1 GIC结构 作为 ARM 系统中通用中断控制器的是 GIC(Generic Interrupt Controller),目前有四个版本,V1-V4(V2最多支持8个A

epoll详解

欢迎转载,转载请注明原文地址:http://blog.csdn.net/majianfei1023/article/details/45772269 一.基本概念: 1.epoll是什么: epoll是Linux内核为处理大批量文件描述符而作了改进的poll,是Linux下多路复用IO接口select/poll的增强版本,它能显著提高程序在大量并发连接中只有少量活跃的情况下的系统CPU利用率.另一点原因就是获取事件的时候,它无须遍历整个被侦听的描述符集,只要遍历那些被内核IO事件异步唤醒而加入就

linux驱动之中断处理过程C程序部分

当发生中断之后,linux系统在汇编阶段经过一系列跳转,最终跳转到asm_do_irq()函数,开始C程序阶段的处理.在汇编阶段,程序已经计算出发生中断的中断号irq,这个关键参数最终传递给asm_do_irq().linux驱动中断处理C程序部分,主要涉及linux中断系统数据结构的初始化和C程序的具体执行跳转. 一.中断处理数据结构 linux内核将所有的中断统一编号,使用一个irq_desc[NR_IRQS]的结构体数组来描述这些中断:每个数组项对应着一个中断源(可能是一个中断,也可能是一

Linux中select poll和epoll的区别

在Linux Socket服务器短编程时,为了处理大量客户的连接请求,需要使用非阻塞I/O和复用,select.poll和epoll是Linux API提供的I/O复用方式,自从Linux 2.6中加入了epoll之后,在高性能服务器领域得到广泛的应用,现在比较出名的nginx就是使用epoll来实现I/O复用支持高并发,目前在高并 发的场景下,nginx越来越收到欢迎.这里有个文章参考.Nginx成为全球Top1000网站最受欢迎的Web服务器. 据 w3techs 7月 3 日的统计数据表明

0729------Linux网络编程----------使用 select 、poll 和 epoll 模型 编写客户端程序

1.select 模型 1.1 select 函数原型如下,其中 nfds 表示的描述符的最大值加1(因为这里是左闭右开区间),中间三个参数分别表示要监听的不同类型描述符的集合,timeout用来表示轮询的时间间隔,这里用NULL表示无限等待. 1.2 使用 select函数编写客户端程序的一般步骤: a)初始化参数,包括初始化监听集合read_set并添加fd,以及初始化监听的最大描述符 maxfd 和select的返回值 nready: b)将read_set 赋值给 ready_set,因