标题: 关于51单片机多任务的疑惑? [打印本页]

作者: 4758866    时间: 2024-1-7 16:52
标题: 关于51单片机多任务的疑惑?
比如一个模块的使用,要时序,读写数据的时候需要延时后才能操作,这个等待时间不能用delay了吗?多个模块都需要这种延时怎么办?如果一个模块1MS执行一次,另一个10MS执行一次,10MS的模块等待期间可以执行1MS的,执行完了到了10ms模块怎么接着刚才10MS模块的下一步?同时1MS的时间也到了,这样会冲突吗?另外这样原来调试好的模块全部要改?

作者: 3485203305    时间: 2024-1-7 20:01
一般运用定时器来进行时序操作,在进行定时操作时,谁的优先级高就先进行高优先级的中断,你试试用定时器来做定时操作就知道了
作者: 3485203305    时间: 2024-1-7 20:05
你试试用中断来进行延时再进行中断程序,这样通过定时器的优先级就解决了哪个程序先运行哪个程序后运行的问题了
作者: 3485203305    时间: 2024-1-7 20:06
你试试用中断来进行延时再进行中断程序,这样通过定时器的优先级就解决了哪个程序先运行哪个程序后运行的问题了
作者: 3485203305    时间: 2024-1-7 20:07
你试试用中断来进行延时再进行中断程序,这样通过定时器的优先级就解决了哪个程序先运行哪个程序后运行的问题了
作者: 3485203305    时间: 2024-1-7 20:07
你试试用中断来进行延时再进行中断程序,这样通过定时器的优先级就解决了哪个程序先运行哪个程序后运行的问题了
作者: mtt661    时间: 2024-1-7 20:15
定时器啊,到时间执行某个东西
作者: Hephaestus    时间: 2024-1-8 00:42
在定时中断里面把要执行的任务排个队。
作者: IdeaMing    时间: 2024-1-8 09:15
只要是有中断的程序,你都不能保证绝对的实时。实时只是相对一个调度周期。讲的是反应速度快。如果一个任务优先级高,那其他任务就得让道。所以高优先级任务一个要快速处理,一个要频度低。
作者: qidiao007    时间: 2024-1-8 11:16
模块的延时非常短的  都是微秒级别的 对整个程序影响不大
作者: Hephaestus    时间: 2024-1-8 12:24
qidiao007 发表于 2024-1-8 11:16
模块的延时非常短的  都是微秒级别的 对整个程序影响不大

那是你见过的模块太少了。
作者: 4758866    时间: 2024-1-8 12:44
我看了一下RXT51的操作系统,是用了操作系统的延时,MS级的就用系统延时,us级的就用delay,不知道这样理解对不对?
作者: lksbbs    时间: 2024-1-8 16:16
可以做一个系统运行时间变量嘛,定时器让这个变量增加x,具体增加多少取决于定时器跑了多久,
后面查询这个时间变量,到了就运行某程序,在某程序运行完毕后,再把运行用掉的时间加入系统运行时间变量,这样时间就是绝对的。。
作者: 4758866    时间: 2024-1-8 21:45
lksbbs 发表于 2024-1-8 16:16
可以做一个系统运行时间变量嘛,定时器让这个变量增加x,具体增加多少取决于定时器跑了多久,
后面查询这 ...

这个难度有点大,我先看下那个操作系统,试一下




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1