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

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

[复制链接]
  • TA的每日心情
    奋斗
    13 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    26

    主题

    833

    回帖

    2116

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    开心
    2 小时前
  • 签到天数: 164 天

    [LV.7]常住居民III

    9

    主题

    310

    回帖

    3789

    积分

    荣誉版主

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

    使用道具 举报

  • TA的每日心情
    奋斗
    13 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    26

    主题

    833

    回帖

    2116

    积分

    金牌会员

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

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

    使用道具 举报

    该用户从未签到

    552

    主题

    9546

    回帖

    1万

    积分

    管理员

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


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

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9546

    回帖

    1万

    积分

    管理员

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

    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    552

    主题

    9546

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

    该用户从未签到

    552

    主题

    9546

    回帖

    1万

    积分

    管理员

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

    使用道具 举报

  • TA的每日心情
    奋斗
    13 小时前
  • 签到天数: 174 天

    [LV.7]常住居民III

    26

    主题

    833

    回帖

    2116

    积分

    金牌会员

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

    使用道具 举报

  • TA的每日心情
    擦汗
    5 小时前
  • 签到天数: 113 天

    [LV.6]常住居民II

    6

    主题

    22

    回帖

    439

    积分

    中级会员

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

    使用道具 举报

  • TA的每日心情
    开心
    4 天前
  • 签到天数: 116 天

    [LV.6]常住居民II

    25

    主题

    304

    回帖

    1053

    积分

    荣誉版主

    Cyber Hamster

    积分
    1053
    发表于 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扫描即可,可以直接接按键,使用中断周期或执行其他程序的时间来消抖,不使用延时函数消抖,简单高效
    (=・ω・=)
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-20 19:41 , Processed in 0.094314 second(s), 67 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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