📄 taskscheduler.h
字号:
// *********************************************************************************** //
//
// Filename : TaskScheduler.h
// Title : TaskScheduler
// Author : Fung Tin Ching & fym
// Created Date : 2007.12.19
// Description : This source file is simple Task Scheduler.
// Version : 1.0
//
// Copyright (c) 2006, All rights reserved.
// *********************************************************************************** //
#ifndef _TASKSCHEDULER_H
#define _TASKSCHEDULER_H
#include "Global.h"
// ================================================================================================================= //
// ========================= Constant Define ========================= //
// ================================================================================================================= //
//--------------
// Task Schedule
#define TASK_PERIOD 0.003
#define TIMER2_PERIOD (u16)(0xFFFF - (TASK_PERIOD*(F_CPU/12)) )
// ================================================================================================================= //
// ========================= Variables ========================= //
// ================================================================================================================= //
static u08 task_index=0; // task scheduler index
volatile bit Flag_task_scheduler_enable=1;
volatile u08 timer_tick=0; // a reference value that indicate the time, it can be used for time delay purpose
volatile u08 lcd_display_count=0;
// ================================================================================================================= //
// ========================= Function Body ========================= //
// ================================================================================================================= //
void init_timer2(void)
{
T2MOD &= 0xFC;
T2CON = 0x00; // Clear Timer 2 control bits
RCAP2L = low_byte( TIMER2_PERIOD ); // Copy the Lower byte to RCAP2L
RCAP2H = high_byte( TIMER2_PERIOD ); // Copy the Higher byte to RCAP2H
T2CON |= 0x04; // Timer 2 set up in 16-bit auto-reload, time are depenent on RCAP2H and RCAP2L
ET2=1; // Enable Timer 2 Interrupt
PT2=0; // Set the Timer2 Interrupt Priority become Lowest (** must lower than Timer 0)
}
// ----------------------------------------
// Timer 2 interrupt service routine
// ----------------------------------------
void T2_int(void) interrupt TF2_VECTOR using 3
{
TF2 = 0;
timer_tick++; // Increase the time reference
if (Flag_task_scheduler_enable)
{
updateSwitch(); // about 0.5ms
updateFloorSensor(); //
switch(++task_index)
{
case 1: // 0.5 ms
CH0=get_ADC_onewire(0);
break;
case 2: // 0.5 ms
CH1=get_ADC_onewire(1);
break;
case 3:
if (lcd_display_count==0)
{
lcd_home(LCD_LINE1); // 2.2 ms
lcd_print_str(lcd_line1); //
} else if (lcd_display_count==1)
{
lcd_home(LCD_LINE2);
lcd_print_str(lcd_line2);
}
lcd_display_count++;
if (lcd_display_count>10)
lcd_display_count=0;
break;
case 4:
u08toBitpattern(lcd_sen1, 1, sensor_front_ledon);
break;
case 5:
u08toBitpattern(lcd_sen2, 1, sensor_back_ledon);
break;
case 6:
u08toStr(lcd_sen1,13,CH0);
break;
case 7:
u08toStr(lcd_sen2,13,CH1);
break;
case 8:
// ----------------------------------------
// TODO
// Add your coding here
// ----------------------------------------
default:
task_index=0;
}
}
}
#endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -