找回密码
 立即注册
查看: 2721|回复: 19

请教一下各位大佬,PLC的沿信号检测是怎么实现的?

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-30 07:53:30
已绑定手机

50

主题

1825

回帖

3204

积分

论坛元老

积分
3204
发表于 2024-2-9 16:24:51 | 显示全部楼层 |阅读模式
如题,用函数表达的话如何实现上升沿,下降沿的检测,请各位大佬指点指点?
回复

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:328
  • 最近打卡:2025-03-09 19:40:01

9

主题

328

回帖

4501

积分

荣誉版主

积分
4501
发表于 2024-2-9 21:30:34 | 显示全部楼层
STC的IO中断可以设置为沿触发和电平触发,硬件上可以通过触发器或锁存器实现。
如果您想使用软件实现可以考虑设置一个变量记录IO电平,当读取到的IO电平与上一次不一致时表示遇到了边沿,此时可以通过电平状态确定是上升沿或下降沿。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-30 07:53:30
已绑定手机

50

主题

1825

回帖

3204

积分

论坛元老

积分
3204
发表于 2024-2-9 21:46:06 | 显示全部楼层
kk*** 发表于 2024-2-9 21:30
STC的IO中断可以设置为沿触发和电平触发,硬件上可以通过触发器或锁存器实现。
如果您想使用软件实现可以考 ...

谢谢,我考虑下,新年快乐!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:113
  • 最近打卡:2025-06-30 09:26:17

741

主题

1万

回帖

1万

积分

管理员

积分
17259
发表于 2024-2-9 21:49:16 | 显示全部楼层
STC15/STC8/STC32的 INT0/INT1 都支持 边沿变化中断
STC8/STC32的 PWM 都支持 边沿变化中断
STC12/STC15的 CCP 都支持 边沿变化中断


边沿变化中断:上升沿 或 下降沿 都会支持中断
===进了中断服务程序,软件读对应的I/O口
        上升沿
        下降沿

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:113
  • 最近打卡:2025-06-30 09:26:17

741

主题

1万

回帖

1万

积分

管理员

积分
17259
发表于 2024-2-9 21:51:24 | 显示全部楼层
另外现在 STC8H8K64U的D版本,支持所有的I/O都支持中断
截图202402092150511391.jpg
截图202402092151203728.jpg

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:113
  • 最近打卡:2025-06-30 09:26:17

741

主题

1万

回帖

1万

积分

管理员

积分
17259
发表于 2024-2-9 21:51:56 | 显示全部楼层
截图202402092151516778.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:113
  • 最近打卡:2025-06-30 09:26:17

741

主题

1万

回帖

1万

积分

管理员

积分
17259
发表于 2024-2-9 21:52:21 | 显示全部楼层
截图202402092152182465.jpg
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:578
  • 最近打卡:2025-06-30 07:53:30
已绑定手机

50

主题

1825

回帖

3204

积分

论坛元老

积分
3204
发表于 2024-2-9 22:45:49 | 显示全部楼层
祝坛友们新年快乐,万事顺遂!
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:273
  • 最近打卡:2025-06-20 00:35:25

7

主题

29

回帖

988

积分

高级会员

积分
988
发表于 2024-2-9 23:41:43 | 显示全部楼层
回复

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:482
  • 最近打卡:2025-06-30 09:00:25
已绑定手机

81

主题

5229

回帖

9357

积分

超级版主

DebugLab

积分
9357
发表于 2024-2-10 15:02:48 | 显示全部楼层
本帖最后由 DebugLab 于 2024-2-10 15:08 编辑

优先使用硬件方式,见4、5、6楼。
软件方式如下:
  1. #define KEY Pxx
  2. void scan_key(void)
  3. {
  4.         static bit key_flag;
  5.         
  6.         if(KEY==0)
  7.         {
  8.                 if(key_flag==1)
  9.                 {
  10.                         key_flag=0;
  11.                         //下降沿
  12.                 }
  13.         }
  14.         else
  15.         {
  16.                 if(key_flag==0)
  17.                 {
  18.                         key_flag=1;
  19.                         //上升沿
  20.                 }
  21.         }
  22. }
复制代码
放在主循环或定时器中断里以10~1000Hz扫描即可,可以直接接按键,使用中断周期或执行其他程序的时间来消抖,不使用延时函数消抖,简单高效
DebugLab
回复 支持 反对

使用道具 举报 送花

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

QQ|手机版|小黑屋|深圳国芯人工智能有限公司 ( 粤ICP备2022108929号-2 )

GMT+8, 2025-6-30 20:44 , Processed in 0.133839 second(s), 98 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

快速回复 返回顶部 返回列表