找回密码
 立即注册
楼主: 好好***

我也来分享一个我使用的软定时器

[复制链接]

该用户从未签到

46

主题

2932

回帖

6611

积分

超级版主

积分
6611
发表于 2024-2-4 16:20:45 | 显示全部楼层
jwd 发表于 2024-2-4 16:02
类似plc里面的定时器,当某个条件满足时才开始启动软定时器,当条件断开后软定时器需要复位,计数值需要 ...

自己的地盘自己说了算,源码在手上,你想怎么玩都可以。
“某个条件满足”,那就加条件判断,满足条件再启动,条件消逝就写0.到某个定时器值就再用另一个定时器配合。MCU编程远比PLC灵活得多。
甚至,你可以使用PLC的方式,比如用10ms扫描流程,模拟一个PLC流程。
回复 支持 反对 送花

使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-11 16:24
  • 签到天数: 52 天

    [LV.5]常住居民I

    13

    主题

    42

    回帖

    331

    积分

    中级会员

    积分
    331
    发表于 2024-2-4 22:11:53 | 显示全部楼层
    梁工 发表于 2023-5-11 15:37
    软件定时器,我就用一个timer0,1ms中断,就可以做N多定时器,我一般用倒计时,为0则定时到。
    有人对结构体 ...

    u8  xdata TimerFlag[SoftTimerNum];   //软件定时器标志, 0: 无事件发生,  1:定时到
    这个标志位只有0和1,用unsigned char TimerFlag数组,会不会太浪费内存,因为只用到1位,
    有什么办法能更省一点内存吗,把8位都利用上。比如用bit,程序代码要怎么改呢。

    点评

    使用bit不能用数组,如果你单独使用变量而不使用数组,则用bit更好。  详情 回复 发表于 2024-2-5 16:33
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-11 16:24
  • 签到天数: 52 天

    [LV.5]常住居民I

    13

    主题

    42

    回帖

    331

    积分

    中级会员

    积分
    331
    发表于 2024-2-5 16:00:07 | 显示全部楼层
    梁工 发表于 2023-5-11 15:37
    软件定时器,我就用一个timer0,1ms中断,就可以做N多定时器,我一般用倒计时,为0则定时到。
    有人对结构体 ...

    用结构体写软件定时器怎么写呢

    点评

    #define SoftTimerNum 32; //软件定时器个数 typedef struct { u8 TimerFlag; // 软件定时器标志, 0: 无事件发生, 1:定时到 u16 Timer; // 软件定时器倒计时 }SoftTimerDefine; SoftTi  详情 回复 发表于 2024-2-5 17:15
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2932

    回帖

    6611

    积分

    超级版主

    积分
    6611
    发表于 2024-2-5 16:33:44 | 显示全部楼层
    天源电子 发表于 2024-2-4 22:11
    u8  xdata TimerFlag[SoftTimerNum];   //软件定时器标志, 0: 无事件发生,  1:定时到
    这个标志位只有0和1 ...

    使用bit不能用数组,如果你单独使用变量而不使用数组,则用bit更好。
    回复 支持 反对 送花

    使用道具 举报

    该用户从未签到

    46

    主题

    2932

    回帖

    6611

    积分

    超级版主

    积分
    6611
    发表于 2024-2-5 17:15:48 | 显示全部楼层
    天源电子 发表于 2024-2-5 16:00
    用结构体写软件定时器怎么写呢

    #define SoftTimerNum   32;   //软件定时器个数
    typedef        struct
    {
         u8          TimerFlag;   // 软件定时器标志, 0: 无事件发生,  1:定时到
         u16  Timer;       // 软件定时器倒计时
    }SoftTimerDefine;

    SoftTimerDefine xdata SoftTimer[SoftTimerNum];   //定义软件定时器

    后面的操作跟数组类似,只是用结构体操作代替即可。

    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    奋斗
    2024-4-11 16:24
  • 签到天数: 52 天

    [LV.5]常住居民I

    13

    主题

    42

    回帖

    331

    积分

    中级会员

    积分
    331
    发表于 2024-3-10 04:17:03 | 显示全部楼层
    你好,你能把这个程序能简化一下吗,有点复杂,没看懂代码里的思路。
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.6]常住居民II

    4

    主题

    89

    回帖

    468

    积分

    中级会员

    积分
    468
    发表于 2024-3-10 11:33:41 | 显示全部楼层
    看着很好,运用起来不是那么简单吧。我自己尝试一下,回头再请教各位
     
    经常看看,偶尔玩玩——不过都是简单的,难的我也不会呀
     
    回复 支持 反对 送花

    使用道具 举报

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

    [LV.6]常住居民II

    11

    主题

    385

    回帖

    1123

    积分

    金牌会员

    积分
    1123
    发表于 2024-3-10 12:48:10 | 显示全部楼层
    软定时器最好用一个定时器做,数组计数,这样比较节省资源,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    昨天 02:02
  • 签到天数: 68 天

    [LV.6]常住居民II

    4

    主题

    414

    回帖

    1122

    积分

    金牌会员

    积分
    1122
    发表于 2024-3-11 09:44:47 | 显示全部楼层
    简单说就是硬件标准定时1ms,,启动定时器就是把软件计数器写入需要的时间,每次中断软件计数器减1,减到0后定时时间到,
    回复 支持 反对 送花

    使用道具 举报

  • TA的每日心情
    慵懒
    5 天前
  • 签到天数: 93 天

    [LV.6]常住居民II

    0

    主题

    77

    回帖

    186

    积分

    注册会员

    积分
    186
    发表于 2024-3-11 10:42:07 | 显示全部楼层
    不错,好东西
    回复 支持 反对 送花

    使用道具 举报

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

    本版积分规则

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

    GMT+8, 2024-5-3 16:42 , Processed in 0.073350 second(s), 68 queries .

    Powered by Discuz! X3.5

    © 2001-2024 Discuz! Team.

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