⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 main.c

📁 Real Time Operating System for Hi-Tech C compiler.
💻 C
字号:
/************************************************************ 
Copyright (C) 1995-2002 Pumpkin, Inc. and its
Licensor(s). Freely distributable.

$Source: C:\\RCS\\d\\salvo\\tut\\tu5\\main.c,v $
$Author: aek $
$Revision: 3.7 $
$Date: 2003-06-13 17:05:12-07 $

Source for tutorial programs.

************************************************************/

#include "main.h"
#include "salvo.h"

#define TASK_COUNT_P      OSTCBP(1) /* task #1        */
#define TASK_SHOW_P       OSTCBP(2) /*  ""  #2        */
#define TASK_BLINK_P      OSTCBP(3) /*  ""  #3        */
#define PRIO_COUNT        10        /* task priorities*/
#define PRIO_SHOW         10        /*  ""            */
#define PRIO_BLINK        2         /*  ""            */
#define BINSEM_UPDATE_PORT_P OSECBP(1) /* binSem #1   */

unsigned int counter;

_OSLabel(TaskCount1)
_OSLabel(TaskShow1)
_OSLabel(TaskBlink1)

void TaskCount( void )
{
    for (;;) {
        counter++;
        
        if ( !(counter & 0x01FF) )
            OSSignalBinSem(BINSEM_UPDATE_PORT_P);
    
        OS_Yield(TaskCount1);
    }
}

void TaskShow( void )
{
    for (;;) {
        OS_WaitBinSem(BINSEM_UPDATE_PORT_P, OSNO_TIMEOUT, TaskShow1);
        
        PORT = (PORT & ~0xFE) | ((counter >> 8) & 0xFE); 
    }
}

void TaskBlink( void )
{
    InitPORT();
    
    for (;;) {
        PORT ^= 0x01;
        
        OS_Delay(50, TaskBlink1);
    }
}

void main( void )
{
    Init();
    
    OSInit();
    
    OSCreateTask(TaskCount, TASK_COUNT_P, PRIO_COUNT);
    OSCreateTask(TaskShow,  TASK_SHOW_P,  PRIO_SHOW);
    OSCreateTask(TaskBlink, TASK_BLINK_P, PRIO_BLINK);
    
    OSCreateBinSem(BINSEM_UPDATE_PORT_P, 0);
    
    counter = 0;

    OSEi(); 
    
    for (;;)
        OSSched();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -