上程序!
main.zip
(1.77 KB)
简单地介绍一下, 这个调度器保存了 ACC, B, PSW, R0, R4, R7 6个寄存器, 如果需要保存更多任务使用到的寄存器,例如 dptr, 可以在Registers 里添加,并在 interrupt 里手工 push/pop 相应的寄存器, 使用 _push_/_pop 或直接嵌入汇编。这里没有应用优先级, 如果想添加, FindNextTask 就是为此准备的,在这个函数实施优先级算法改变 taskIndex 就可以控制任务调度, 返回 -1 则回到主任务。
既然顶到了50楼,那么我把 dos 下的 任务调度器发一遍, 做了一点小小的改进: 可以设置定时器的时间; Registers 结构中增加了任务结束返回的地址, 这样不用再使用 ExitTask 结束任务; Sleep 改为使用毫秒。
os.zip
(2.29 KB)
我对于 8051 下使用 os 的态度一如既往, 不赞成, 因为太消耗宝贵的 8051 资源, 但作为学习目的, 我认为是有必要的, 毕竟很多人只了解 8051, 这可以作为一个基本的起点。 |