?? simple_eos.c
字號:
/*------------------------------------------------------------------*-
Simple_EOS.c(v1.00)
---------------------------------------------------------------------
Main file for Simple Embedded Operating System (sEOS) for 8051
Demonstrate version with dummy task X()
-*------------------------------------------------------------------*/
#include "Main.H"
#include "Simple_EOS.H"
//Header for dummy task
#include "X.H"
/*------------------------------------------------------------------*-
sEOS_ISR()
Invoked periodically by Timer 2 overflow :
see sEOS_Init_Timer2() for details
-*-----------------------------------------------------------------*/
void sEOS_ISR() interrupt INTERRUPT_Timer_2_Overflow
{
//Must manually reset the T2 flag
TF2 = 0 ;
//========USER CODE - Begin ===================================
//Call dummy task here
X();
//========USER CODE - END ======================================
}
/*------------------------------------------------------------------*-
sEOS_Init_Timer2()
Sets up Timer 2 to drive the simple EOS
Parameter gives tick interval in MILLISECONDS
Max tick interval is ~60 ms (12 MHZ oscillator)
Note: Precise tick intervals are only possible with certain oscillator/tick interval
combination .If timing is important ,you should check the timing calculation manually
-*-------------------------------------------------------------------*/
void sEOS_Init_Timer2(const tByte TICK_MS){
tLong Inc;
tWord Reload_16 ;
tByte Reload_08H ,Reload_08L ;
//Timer 2 is configured as a 16 bit timer
//which is automatically reloaded when it overflows
T2CON = 0x04 ; //Load Timer2 control register
//Number of timer increments required (max 65536)
Inc = ((tLong)TICK_MS * (OSC_FREQ /1000) ) / (tLong)OSC_PER_INST ;
//16 BIT reload value
Reload_16 = (tWord)(65536UL - Inc);
//8 bit reload values (High & Low )
Reload_08H = (tByte)(Reload_16 / 256);
Reload_08L = (tByte)(Reload_16 % 256);
//Used for manually checking timing (in simulator)
P2 = Reload_08H;
P3 = Reload_08L;
TH2 = Reload_08H ; //Load T2 high byte
RCAP2H = Reload_08H; //Load T2 reload capt,reg,high byte
TL2 = Reload_08L ;
RCAP2L = Reload_08L ;
//Timer2 interrupt is enabled ,and ISR will be called
//whenever the timer overflow
ET2 = 1 ;
//Start Timer 2 running ;
TR2 = 1;
EA = 1 ; //Globally enable interrupts
}
/*-----------------------------------------------------------------*-
sEOS_Go_To_Sleep()
This operation system enters 'idle mode' between clock ticks to save power
,The next clock tick will return the processor to the normal operating stats
-*-----------------------------------------------------------------*/
void sEOS_Go_To_Sleep(void){
PCON |= 0x01 ; //Enter idle mode(generic 8051 version)
}
/*----------------------------------------------------------------*-
------------------END OF FILE --------------------------------------
-*------------------------------------------------------------------*/
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -