📄 main.c
字号:
/*******************************************************************************
* Module : main.c
*
* Purpose : First bit of 'C' code that executes after startup (see boot.asm).
; Starts up the operating system, uC/OS.
*
* Language : 'c'
*
* Written : Kirby W. Cartwright, The Vanner Power Group, 06/29/98
*
* Modified :
*
* Project : Vanner Power Group Modular Controller Project PX-02.
*
* Copyright : (C) copyright 1998 by Vanner, Inc. All Rights Reserved.
*
* Notes :
*
* Unit Tested:
*
*******************************************************************************/
#define LEDS 0x000C /* LEDs Register
#include <ioports.h>
#include <time.h> */
#include "includes.h"
extern void KickDog(void);
OS_STK Task0[OS_TASK_IDLE_STK_SIZE];
OS_STK Task1[OS_TASK_IDLE_STK_SIZE];
OS_STK Task2[OS_TASK_IDLE_STK_SIZE];
OS_STK Task3[OS_TASK_IDLE_STK_SIZE];
static void TimeOfDayTask0(void *);
static void TimeOfDayTask1(void *);
static void TimeOfDayTask2(void *);
/*******************************************************************************
*
* Routine : main
*
* Purpose : Initialize further hardware, start multitasking.
*
* Inputs : None (void).
*
* Globals : None.
*
* Outputs (Returns):
* None (void).
*
* Note(s) :
*
*******************************************************************************/
void main(void)
{
int i;
extern void ConfigureWatchDog(void);
ConfigureWatchDog();
OSInit();
OSTaskCreate(TimeOfDayTask0,(void *)&i,(void *)&Task0[OS_TASK_IDLE_STK_SIZE], 10);
OSTaskCreate(TimeOfDayTask1,(void *)&i,(void *)&Task1[OS_TASK_IDLE_STK_SIZE], 30);
OSTaskCreate(TimeOfDayTask2,(void *)&i,(void *)&Task2[OS_TASK_IDLE_STK_SIZE], 1);
OSStart(); /* Start multitasking */
}
/*******************************************************************************
*
* Routine : void abort(void)
*
* Purpose : Satisfy a link requirement.
*
* Inputs : None (void).
*
* Globals : None.
*
* Outputs (Returns):
* None (void).
*
* Note(s) : Should never get here. Should add code to annunciate if we
* ever do.
*
*******************************************************************************/
/*void abort(void)
{
while (1);
}*/
/*******************************************************************************
*
* Routine : void interrupt DefaultISR(void)
*
* Purpose : Supply a default ISR for unused vectors.
*
* Inputs : None (void).
*
* Globals : None.
*
* Outputs (Returns):
* None (void).
*
* Note(s) : Should add code to annunciate if we ever get here.
*
*******************************************************************************/
void interrupt DefaultISR(void)
{
}
/*******************************************************************************
*
* Task : void TimeOfDayTask(void *j);
*
* Purpose : Time of day task.
*
* Inputs : Pointer to context? Pointer to time/date structure.
*
* Globals : None.
*
* Outputs (Returns):
* None (void). Should never return.
*
* Note(s) : Should add code to go update global time and date structures.
* Y2K compliant.
* Should add code to initialize from hardware RTC on power-up.
* The actual interrupt rate is 15625/256=61.03515625 Hz.
*
*******************************************************************************/
void TimeOfDayTask0(void *j)
{
/* volatile INT8U LEDTick=0;*/
asm(" LDP #0E8H");
asm(" LACC 4");
asm(" OR #040H");
asm(" SACL 4");
while (1)
{
asm(" .bss B,1,1");
asm(" LDP #0111H");
asm(" SPLK #0FFFH,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
asm(" RPT #255");
asm(" NOP");
asm(" RPT #255");
asm(" NOP");
asm(" SPLK #0H,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
OSTimeDly(OS_TICKS_PER_SEC);
}
}
/*******************************************************************************
*
* Task : void TimeOfDayTask(void *j);
*
* Purpose : Time of day task.
*
* Inputs : Pointer to context? Pointer to time/date structure.
*
* Globals : None.
*
* Outputs (Returns):
* None (void). Should never return.
*
* Note(s) : Should add code to go update global time and date structures.
* Y2K compliant.
* Should add code to initialize from hardware RTC on power-up.
* The actual interrupt rate is 15625/256=61.03515625 Hz.
*
*******************************************************************************/
void TimeOfDayTask1(void *j)
{
/* volatile INT8U LEDTick=0;*/
while (1)
{
/* asm(" .bss B,1,1");*/
asm(" LDP #0111H");
asm(" SPLK #0FFFH,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
asm(" RPT #255");
asm(" NOP");
asm(" RPT #255");
asm(" NOP");
asm(" SPLK #0H,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
OSTimeDly(2*OS_TICKS_PER_SEC);
}
}
/*******************************************************************************
*
* Task : void TimeOfDayTask(void *j);
*
* Purpose : Time of day task.
*
* Inputs : Pointer to context? Pointer to time/date structure.
*
* Globals : None.
*
* Outputs (Returns):
* None (void). Should never return.
*
* Note(s) : Should add code to go update global time and date structures.
* Y2K compliant.
* Should add code to initialize from hardware RTC on power-up.
* The actual interrupt rate is 15625/256=61.03515625 Hz.
*
*******************************************************************************/
void TimeOfDayTask2(void *j)
{
/* volatile INT8U LEDTick=0;*/
while (1)
{
/* asm(" .bss B,1,1");*/
asm(" LDP #0111H");
asm(" SPLK #0FFFH,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
asm(" RPT #255");
asm(" NOP");
asm(" RPT #255");
asm(" NOP");
asm(" SPLK #0H,B");
asm(" OUT B,0000H");
asm(" OUT B,0004H");
OSTimeDly(0.5*OS_TICKS_PER_SEC);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -