简单的多任务操作系统

 简单的多任务操作系统

 

#include<reg52.h>
char i;
#define txk_num 3
#define stk_deep 12
unsigned char txk_id;
unsigned int txk_sp[txk_num];
unsigned char txk_stack[txk_num][stk_deep];
void txk_switch()
{
txk_sp[txk_id]=SP;                                             保存了运行状态
if(txk_id==(txk_num-1))txk_id=0;
else txk_id++;
SP=txk_sp[txk_id];
}
void txk_load(unsigned int txk_name,unsigned char txk_channel)
{
txk_stack[txk_channel][0]=(unsigned int)txk_name&0x00ff;
txk_stack[txk_channel][1]=(unsigned int)txk_name>>8;
txk_sp[txk_channel]=txk_stack[txk_channel]+1;
}
void os_go(unsigned char first_txk_id)
{
txk_id=first_txk_id;SP=txk_stack[first_txk_id]+1;
}
void task1()
{
while(1)
{
i++;
txk_switch();
i++;
i++;
i++;}
}
void task2()
{
while(1)
{
i++;
txk_switch();
i++;
i++;
i++;}
}
void task3()
{
while(1)
{
i++;
txk_switch();
i++;
i++;
i++;}
}
void main()
{
  txk_load(task1,0);
  txk_load(task2,1);
  txk_load(task3,2);
  os_go(0);
}

http://blog.163.com/yonglin1018@126/blog/getBlog.do?bid=fks_087067082085082074082083085075072087086075093080095064082

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值