梁工
发表于 2024-2-4 16:20:45
jwd 发表于 2024-2-4 16:02
类似plc里面的定时器,当某个条件满足时才开始启动软定时器,当条件断开后软定时器需要复位,计数值需要 ...
自己的地盘自己说了算,源码在手上,你想怎么玩都可以。
“某个条件满足”,那就加条件判断,满足条件再启动,条件消逝就写0.到某个定时器值就再用另一个定时器配合。MCU编程远比PLC灵活得多。
甚至,你可以使用PLC的方式,比如用10ms扫描流程,模拟一个PLC流程。
天源电子
发表于 2024-2-4 22:11:53
梁工 发表于 2023-5-11 15:37
软件定时器,我就用一个timer0,1ms中断,就可以做N多定时器,我一般用倒计时,为0则定时到。
有人对结构体 ...
u8xdata TimerFlag; //软件定时器标志, 0: 无事件发生,1:定时到
这个标志位只有0和1,用unsigned char TimerFlag数组,会不会太浪费内存,因为只用到1位,
有什么办法能更省一点内存吗,把8位都利用上。比如用bit,程序代码要怎么改呢。
天源电子
发表于 2024-2-5 16:00:07
梁工 发表于 2023-5-11 15:37
软件定时器,我就用一个timer0,1ms中断,就可以做N多定时器,我一般用倒计时,为0则定时到。
有人对结构体 ...
用结构体写软件定时器怎么写呢
梁工
发表于 2024-2-5 16:33:44
天源电子 发表于 2024-2-4 22:11
u8xdata TimerFlag; //软件定时器标志, 0: 无事件发生,1:定时到
这个标志位只有0和1 ...
使用bit不能用数组,如果你单独使用变量而不使用数组,则用bit更好。
梁工
发表于 2024-2-5 17:15:48
天源电子 发表于 2024-2-5 16:00
用结构体写软件定时器怎么写呢
#define SoftTimerNum 32; //软件定时器个数
typedef struct
{
u8 TimerFlag; // 软件定时器标志, 0: 无事件发生,1:定时到
u16Timer; // 软件定时器倒计时
}SoftTimerDefine;
SoftTimerDefine xdata SoftTimer; //定义软件定时器
后面的操作跟数组类似,只是用结构体操作代替即可。
天源电子
发表于 2024-3-10 04:17:03
你好,你能把这个程序能简化一下吗,有点复杂,没看懂代码里的思路。
dnajx
发表于 2024-3-10 11:33:41
看着很好,运用起来不是那么简单吧。我自己尝试一下,回头再请教各位{:4_174:}
xiangzichen
发表于 2024-3-10 12:48:10
软定时器最好用一个定时器做,数组计数,这样比较节省资源,
小飞侠
发表于 2024-3-11 09:44:47
简单说就是硬件标准定时1ms,,启动定时器就是把软件计数器写入需要的时间,每次中断软件计数器减1,减到0后定时时间到,
冷月烟
发表于 2024-3-11 10:42:07
不错,好东西{:5_332:}