
操作系统
小黄人软件
我手机微信18910620895
展开
-
keil RTOS RTX full 定时不准???
#pragma large#include "stc12c5a.h#include // RTX-51 Definitionssbit sound=P2^3;sbit sound1=P2^4;sbit sound2=P2^5;void ProducerTask (void) _task_ 0{ os_set_slice(1000); //1原创 2013-02-21 10:10:30 · 1135 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现12 C语言版加保护参数
/*CRTOS 实时可剥夺型内核1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.4.可运行多个任务【自定义】5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回原创 2014-05-23 13:11:21 · 1099 阅读 · 1 评论 -
51系列小型操作系统精髓 简单实现12 C语言版再优化
CRTOS 实时可剥夺型内核1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.4.可运行多个任务【自定义】5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。原创 2014-05-23 09:29:12 · 1111 阅读 · 4 评论 -
51系列小型操作系统精髓 简单实现10 C语言版优化后发布(有图)
4个任务 /*使用keil4 可运行8个任务任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。*/#include "STC12C5A.H"#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms#define MAX_TASKS 8 //任务槽最大个数.unsig原创 2014-05-22 14:54:26 · 1104 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现9 C语言版优化后发布(有图)
/*使用keil4 可运行8个任务任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来。*/#include "STC12C5A原创 2014-05-22 14:33:51 · 1238 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现8 C语言版待改进
使用keil4 ,代码Code Optimization:0 运行OK可运行8个任务Program Size: data=21.0 xdata=0 code=401 (包括2个示例变量,未优化)任务从中断处切换,在定时时间到后从定时中断中切换回来。待改进地方1.手动优化汇编程序2. 重入问题3.参数进函数和时中断的保护问题原创 2014-05-22 13:58:19 · 1226 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现11 C语言版优化后说明(有图)
CRTOS 实时可剥夺型内核1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.4.可运行多个任务【自定义】5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。原创 2014-05-22 15:38:56 · 1077 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现7 C语言版待改进
#include "STC12C5A.H"#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms#define MAX_TASKS 2 //任务槽最大个数.unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈. PC指针为16位,需2个字节task_st原创 2014-05-21 17:41:01 · 1231 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现6 C语言版待改进
#include "STC12C5A.H"#define TIMER_RELOAD() {TL0=0x00;TH0=0xC4;}//使能T/C 初始10ms#define MAX_TASKS 8 //任务槽最大个数.unsigned char idata task_stack[MAX_TASKS][2];//任务堆栈. PC指针为16位,需2个字节。unsi原创 2014-05-20 15:33:13 · 1255 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现5 执行流程
1. 初始化2. 执行完后,记录下一步地址,返回3. 接着task_test2()4. 执行完后,记录下一步地址,返回(与第2步相似)5. 接着主程序While(1);6. 定时是10Ms(18.432MHz) .定时时间到就进入定时中断执行7. 定时中断里,把各定原创 2014-05-20 13:07:10 · 1569 阅读 · 0 评论 -
单片机MCU51系列RTOS多任务超微操作系统精髓 简单实现 汇编及C语言混合 keil9.0工程源码
系统设计核心意图:使用定时器,在延时过程中运行其它的任务。工程源码:链接: https://pan.baidu.com/s/1LEV9qYmUn6SdemGz7TH6dw 提取码: iua5切换任务并记录位置,保证在时间到后能切换回来。(在任务中切换出去,在定时器中切换回来。)(时间片轮转)可以支持同时8个任务。工程就两个文件:汇编操作系统rtos_c.asm 及 C语言示例...原创 2014-05-13 10:11:26 · 2731 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现3
现在遇到的问题:1.任务不用预加载,进入一个任务,加载一个任务。没有任务时,定时器怎么处理?当只有一个任务时,怎么处理?多个任务怎么轮转或按优先级切换? 2.关于各任务定时时间,一个一个地减是否麻烦,有没有更好的方法?3.没有保护寄存,这样切换,是否对?当任务函数有多个层嵌套时,有没有问题?#include "STC12C5A.H"#define TIMER_RELOAD(原创 2014-05-16 09:04:25 · 1674 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现2
在51单片机中,不能直接修改PC,但有一种方法是可以改变PC的。函数调用里会把PC值压入堆栈中,调用结束后,会把PC值弹出到PC中。原创 2014-05-16 08:52:18 · 1249 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现4
#include #define MAX_TASKS 2 //任务槽个数.必须和实际任务数一至#define MAX_TASK_DEP 12 //最大栈深.最低不得少于2 个,保守值为12.unsigned char idata task_stack[MAX_TASKS][MAX_TASK_DEP];//任务堆栈.unsigned char idata task_sp[MA原创 2014-05-16 12:07:46 · 1275 阅读 · 0 评论 -
51系列小型操作系统精髓 简单实现12 C语言版未加保护参数
CRTOS 实时可剥夺型内核1.任务不用预加载,不用预定义。任务调用时加载,可删除(退出死循环即可)2.单位轮转查询时间由晶振和定时器初始化决定。在这里为10ms3.定时时间为【 time*单位轮转查询时间 】 ,其中time为 rtos_wait(time)中time.4.可运行多个任务【自定义】5.任务从rtos_wait()处切换,在定时时间到后从定时中断中切换回来,任务执行后,回到中断,再从中断回到主程序。原创 2014-05-26 14:33:54 · 952 阅读 · 0 评论