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

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

[复制链接]
  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

积分
3444
发表于 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电平与上一次不一致时表示遇到了边沿,此时可以通过电平状态确定是上升沿或下降沿。
回复 支持 反对

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

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

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

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


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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:常住居民III
  • 打卡总天数:145
  • 最近打卡:2025-08-01 10:06:57

762

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:以坛为家III
  • 打卡总天数:610
  • 最近打卡:2025-08-01 12:26:36
已绑定手机

54

主题

1875

回帖

3444

积分

论坛元老

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:275
  • 最近打卡:2025-07-23 00:51:58

7

主题

29

回帖

996

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:514
  • 最近打卡:2025-08-01 07:33:38
已绑定手机

87

主题

5787

回帖

1万

积分

超级版主

DebugLab

积分
10390
发表于 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-8-1 17:20 , Processed in 0.139785 second(s), 104 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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