资源简介
由于项目的需求,不可避免的会在单片机上实现多任务处理,然而多任务之间的交互处理是令大家头疼的意见事情。处理方式有一下几种: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.em
文件 472 2014-07-26 16:47 protothreads\1\Debug\1.exe.em
文件 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个文件信息
- 上一篇:CNN学习入门-薛开宇
- 下一篇:JEECG 开发指南v3.7.pdf
相关资源
- 字库制作软件和图片取模工具
- linux多人聊天室管理系统
- 基于51单片机的超声波测距LCD1602显示
- 基于51单片机的TIM1控制蜂鸣器模拟电
- STC单片机控制MFRC522的完整资料,包括
- 电动智能小车完整论文[用过的参考文
- MFRC522原理图和程序
- qt 写的绘制串口接收到数据的实时曲
- stm32f1控制电磁阀+舵机+ADC推杆
- 单片机控制的智能台灯
- gps模块仿真52单片机+proteus模拟
- 基于热电阻的温度检测系统内含原理
- 智能车电磁4轮参考程序
- STC-ISP编程烧录软件(支持win8win10)
- STM32F103C8T6下位机PCB设计-基于惯性测量
- stm32单片机 超声波+蜂鸣器+led 代码
- 基于stm32单片机多功能计步手环
- 基于单片机的仿生四足机器人
- 单片机设计 大学生作业 有多个
- 基于AT89C51单片机的步进电机控制及驱
- STC15F2K60S2单片机例程集合
- SPC5Studio中文使用教程
- 最新STM8L101固件库
- 基于单片机的可燃气体检测及报警系
- 51单片机光电编码器测速
- 基于AT89S51单片机酒精浓度探测仪的设
- 操作系统实验多线程读者写者优先问
- Win32多线程程序设计.侯捷.超清完美版
- 基于单片机的频率脉宽的测量频率脉
- MCS-51 单片机100个汇编
评论
共有 条评论