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

📄 taskscheduler.h

📁 机器人部分C语言编码 c语言 供大家参考学习
💻 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 + -