#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个字节。

unsigned char idata task_time[MAX_TASKS]; //定时时间

unsigned char task_id=0; //当前活动任务号





void rtos_wait(unsigned char time)

{





//保存当前任务时间

task_time[task_id]=time;





//保存当前断点 并把SP=SP-2,任务切换到下一任务;

task_stack[task_id][1] =*((unsigned char *)(SP));

SP--;

task_stack[task_id][0] =*((unsigned char *)(SP));

SP--;







//任务号

if(++task_id == MAX_TASKS)

task_id = 0;

}

unsigned char a=0;

unsigned char b=0;

void task_test()

{

while(1)

{

a++;

rtos_wait(100);
//运行完后,记录下一步地址,返回

a++;





}

}

void task_test2()

{

while(1)

{

b++;

rtos_wait(10);
//运行完后,记录下一步地址,返回

b++;

}

}

void Timer0Init() //@18.432MHz

{

AUXR &= 0x7F;
//定时器时钟12T模式

TMOD &= 0xF0;
//设置定时器模式

TMOD |= 0x01;
//设置定时器模式

TL0 = 0x00;
//设置定时初值

TH0 =0xC4;
//设置定时初值 10ms

TF0 = 0;
//清除TF0标志

TR0 = 1;
//定时器0開始计时





ET0=1;

EA=1;

}

void main()

{

Timer0Init();

task_test();

task_test2();

while(1);

}

void rwcl() //任务时间是否到,任务时间到 实时切换回

{

//从把定时时间减1 ,找看哪个任务到
,任务时间到 实时切换回

unsigned char i;

for(i=0;i<MAX_TASKS;i++)

{

if(task_time[i])

{

task_time[i]--;

if(task_time[i]==0)

SP=task_stack[i]+1;


}

}

}

void tm0_isr() interrupt 1 using 1

{

  //定时时间重载

TIMER_RELOAD();





rwcl();
//任务时间是否到,任务时间到 实时切换回

}

51系列小型操作系统精髓 简单实现6 C语言版待改进的更多相关文章

  1. 简单的51单片机多任务操作系统(C51)

    在网上看到这段代码,所以自己尝试了,可以跑起来,但是没有精确的定时功能,仅仅是任务的调度而已. 数组中是11,而不是12.这里写错了... /* 简单的多任务操作系统 其实只有个任务调度切换,把说它是 ...

  2. 用Qt写软件系列三:一个简单的系统工具(上)

    导言 继上篇<用Qt写软件系列二:QIECookieViewer>之后,有一段时间没有更新博客了.这次要写的是一个简单的系统工具,需求来自一个内部项目.功能其实很简单,就是查看当前当前系统 ...

  3. [Ruby on Rails系列]6、一个简单的暗语生成器与解释器(上)

    [0]Ruby on Rails 系列回顾 [Ruby on Rails系列]1.开发环境准备:Vmware和Linux的安装 [Ruby on Rails系列]2.开发环境准备:Ruby on Ra ...

  4. 《zw版·Halcon-delphi系列原创教程》简单的令人发指,只有10行代码的车牌识别脚本

    <zw版·Halcon-delphi系列原创教程>简单的令人发指,只有10行代码的车牌识别脚本 简单的令人发指,只有10行代码的车牌识别脚本      人脸识别.车牌识别是opencv当中 ...

  5. VS调试在Win7(vista系列)操作系统下 HttpListener拒绝访问解决办法

    一. VS调试在Win7(vista系列)操作系统下 HttpListener无法绑定多个 指定IP.端口问题 来自:http://www.cnblogs.com/ryhan/p/4195693.ht ...

  6. 在51系列中data,idata,xdata,pdata的区别

    在51系列中data,idata,xdata,pdata的区别: data:固定指前面0x00-0x7f的128个RAM,可以用acc直接读写的,速度最快,生成的代码 也最小. idata:固定指前面 ...

  7. <<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步(1)

    <<操作系统精髓与设计原理>>读书笔记(一) 并发性:互斥与同步 并发问题是所有问题的基础,也是操作系统设计的基础.并发包括很多设计问题,其中有进程间通信,资源共享与竞争,多个 ...

  8. scrapy爬虫学习系列二:scrapy简单爬虫样例学习

    系列文章列表: scrapy爬虫学习系列一:scrapy爬虫环境的准备:      http://www.cnblogs.com/zhaojiedi1992/p/zhaojiedi_python_00 ...

  9. 51系列xdata、idata、data的用法

    从数据存储类型来说,8051系列有片内.片外程序存储器,片内.片外数据存储器,片内程序存储器还分直接寻址区和间接寻址类型,分别对应code.data.xdata.idata以及根据51系列特点而设定的 ...

随机推荐

  1. 通过 Microsoft iSCSI Software Target 提供存储服务

    软件下载地址: Microsoft iSCSI Software Target 3.3 下载完后成解压软件包如下: 安装官方的描述Target 端也就是服务端 只支持Windows Server 20 ...

  2. android闹钟实现原理

    闹钟的原理可用下面我自己画的一幅图来概括:(不对的地方,尽管吐槽) 我们来看看新建闹钟到闹钟响铃的步骤:    1.新建一个闹钟: ? 1 2 3 4 5 6 7 8 9 10 11 12 13 14 ...

  3. 度量空间(metric space)

    一个度量空间(metric space)由一个有序对(ordered pair)(M,d) 表示,其中 M 是一种集合,d 是定义在 M 上的一种度量,是如下的一种函数映射: d:M×M→R 且对于任 ...

  4. [Angular2 Animation] Delay and Ease Angular 2 Animations

    By default, transitions will appear linearly over time, but proper animations have a bit more custom ...

  5. [Angular2 Router] Resolving route data in Angular 2

    From Article: RESOLVING ROUTE DATA IN ANGULAR 2 Github If you know Anuglar UI router, you must know ...

  6. 《今天你买到票了吗?——从铁道部12306.cn站点漫谈电子商务站点的“海量事务快速处理”系统》

    <今天你买到票了吗?--从铁道部12306.cn站点漫谈电子商务站点的"海量事务快速处理"系统> 首发地址: http://bbs.hpx-party.org/thre ...

  7. 解决gvim 8.1中zip插件打开zip文件内容时,而文件路径带有空格的问题。

    解决gvim 8.1中zip插件打开zip文件内容时,而文件路径带有空格的问题. 现象是只能打开一次,第二次打开就显示为空了. 通过 lcd切换工作目录.使得命令行操作中不再有带空格的路径 vim81 ...

  8. 【57.14%】【codeforces 722B】Verse Pattern

    time limit per test1 second memory limit per test256 megabytes inputstandard input outputstandard ou ...

  9. fortran 函数的调用标准

    Fortran函数的调用标准在编译时使用iface声明.如iface:default.表示採用的是default标准. fortran的调用标准有 [1] default: Tells the com ...

  10. Android RadioGroup的RadioButton 选择改变字体颜色和背景颜色

    RadioGroup <RadioGroup android:id="@+id/client_charge_radiogroup" android:layout_width= ...