资源简介

由于项目的需求,不可避免的会在单片机上实现多任务处理,然而多任务之间的交互处理是令大家头疼的意见事情。处理方式有一下几种:1、安装UCOS之类的实时操作系统,但每次更换单片机都需要重新移植比较麻烦;2、用状态机实现,能够快速有效的实现多任务程序,但是状态机的引用导致程序看起来不完正,比较零碎,可读性比较差。3、结合UCOS和状态机思想,对状态机进行改良,得到了Protothreads的微型系统,代码开源,只有几十行代码就可以实现

资源截图

代码片段和文件信息

// 1.cpp : Defines the entry point for the console application.
//
//#include 
//#include 

#include 
#include “stdafx.h“

#include “pt_type.h“
#include “pt_config.h“
#include “pt.h“
#include “pt_ex.h“
#include “pt_timer.h“
#include “pt-sem.h“
#include “lc.h“

#include 

extern void SIGNAL();


PT_TMR_Create(tmr1);
PT_TMR_Create(tmr2);
PT_TMR_Create(tmr3);
PT_TMR_Create(tmr4);

PT_TSK_Create(protothread1);
PT_TSK_Create(protothread2);
PT_TSK_Create(protothread3);
PT_TSK_Create(protothread4);

void MyTicket()
{
int jkab;
//putchar(‘\a‘);
Sleep(1);
    SIGNAL();
}

PT_THREAD(protothread1(struct pt *pt))
{
  PT_BEGIN(pt);
  while(1) 
  {   
      PT_TimerSet(&tmr1 3000);
      PT_WAIT_UNTIL(pt PT_TimerExpired(&tmr1));
  printf(“Hello World 1!\n“);
  }
  PT_END(pt);
}

PT_THREAD(protothread2(struct pt *pt))
{
  PT_BEGIN(pt);
  while(1) 
  {
      PT_TimerSet(&tmr2 2000);
      PT_WAIT_UNTIL(pt PT_TimerExpired(&tmr2));
  printf(“Hello World 2!\n“);
  }
  PT_END(pt);
}

PT_THREAD(protothread3(struct pt *pt))
{
  PT_BEGIN(pt);
  while(1) 
  {
      PT_TimerSet(&tmr3 200);
      PT_WAIT_UNTIL(pt PT_TimerExpired(&tmr3));
  printf(“Hello World 3!\n“);
  }
  PT_END(pt);
}

PT_THREAD(protothread4(struct pt *pt))
{
  PT_BEGIN(pt);
  while(1) 
  {
      PT_TimerSet(&tmr4 400);
      PT_WAIT_UNTIL(pt PT_TimerExpired(&tmr4));
  printf(“Hello World 4!\n“);
  }
  PT_END(pt);
}


int main(int argc char* argv[])
{
printf(“Hello World!\n“);

int i=0;

    PT_INIT(&PT_TCB(protothread1));
    PT_INIT(&PT_TCB(protothread2));
    PT_INIT(&PT_TCB(protothread3));
    PT_INIT(&PT_TCB(protothread4)); 
    
    while(1) {
if (i<2) MyTicket();
else{
i=0;
protothread1(&PT_TCB(protothread1));
protothread2(&PT_TCB(protothread2));
protothread3(&PT_TCB(protothread3));
protothread4(&PT_TCB(protothread4));
}  
i++;
}
return 0;
}


 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2014-07-22 11:40  protothreads\
     目录           0  2014-07-26 17:02  protothreads\1\
     文件        2028  2014-07-26 17:02  protothreads\1\1.cpp
     文件        4310  2010-05-19 11:35  protothreads\1\1.dsp
     文件         525  2010-05-19 09:55  protothreads\1\1.dsw
     文件     8408064  2014-08-18 14:12  protothreads\1\1.ncb
     文件       48640  2010-05-19 17:56  protothreads\1\1.opt
     文件         238  2010-05-19 13:20  protothreads\1\1.plg
     文件         867  2014-08-14 17:15  protothreads\1\1.sln
     文件       11264  2014-08-18 14:12  protothreads\1\1.suo
     文件        6247  2014-07-26 16:45  protothreads\1\1.vcproj
     文件        1427  2014-08-18 14:12  protothreads\1\1.vcproj.DY5A4OBOCPYFOX7.Administrator.user
     目录           0  2014-07-26 16:48  protothreads\1\Debug\
     文件      432128  2014-07-26 16:48  protothreads\1\Debug\1.exe
     文件         406  2014-07-26 16:47  protothreads\1\Debug\1.exe.embed.manifest
     文件         472  2014-07-26 16:47  protothreads\1\Debug\1.exe.embed.manifest.res
     文件         381  2014-07-26 16:48  protothreads\1\Debug\1.exe.intermediate.manifest
     文件     1009340  2014-07-26 16:48  protothreads\1\Debug\1.ilk
     文件       11662  2014-07-26 16:48  protothreads\1\Debug\1.obj
     文件     2031616  2014-07-26 16:45  protothreads\1\Debug\1.pch
     文件     2051072  2014-07-26 16:48  protothreads\1\Debug\1.pdb
     文件        6424  2014-07-26 16:48  protothreads\1\Debug\BuildLog.htm
     文件       10692  2014-07-26 16:45  protothreads\1\Debug\StdAfx.obj
     文件          67  2014-07-26 16:48  protothreads\1\Debug\mt.dep
     文件        3952  2014-07-26 16:45  protothreads\1\Debug\pt_ticks.obj
     文件      191488  2014-07-26 16:48  protothreads\1\Debug\vc90.idb
     文件      126976  2014-07-26 16:48  protothreads\1\Debug\vc90.pdb
     文件        1178  2010-05-19 09:55  protothreads\1\ReadMe.txt
     目录           0  2014-07-18 13:25  protothreads\1\Release\
     文件       32768  2010-05-19 12:13  protothreads\1\Release\1.exe
     文件         288  2010-05-19 09:55  protothreads\1\StdAfx.cpp
............此处省略89个文件信息

评论

共有 条评论