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

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

[复制链接]
  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

积分
2544
发表于 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
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

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

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

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


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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

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

回复 支持 反对

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:偶尔看看III
  • 打卡总天数:55
  • 最近打卡:2025-05-02 08:32:59

718

主题

1万

回帖

1万

积分

管理员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:519
  • 最近打卡:2025-05-02 07:55:51
已绑定手机

46

主题

1694

回帖

2544

积分

金牌会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家I
  • 打卡总天数:262
  • 最近打卡:2025-04-22 00:00:25

7

主题

29

回帖

936

积分

高级会员

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

使用道具 举报 送花

  • 打卡等级:以坛为家II
  • 打卡总天数:425
  • 最近打卡:2025-05-03 00:09:43
已绑定手机

77

主题

4850

回帖

8388

积分

超级版主

DebugLab

积分
8388
发表于 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-5-3 01:03 , Processed in 0.314274 second(s), 106 queries .

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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