#define bSystem10Msec gTimer.Status.field.bit0
#define bSystem50Msec gTimer.Status.field.bit1
#define bSystem100Msec gTimer.Status.field.bit2
#define bSystem1Sec gTimer.Status.field.bit3
#define bTemp10Msec gTimer.Status.field.bit4
#define bTemp50Msec gTimer.Status.field.bit5
#define bTemp100Msec gTimer.Status.field.bit6
#define bTemp1Sec gTimer.Status.field.bit7
typedef enum
{
TIMER_RESET = 0,
TIMER_SET = 1,
} TimerStatus;
typedef struct
{
unsigned char bit0: 1;
unsigned char bit1: 1;
unsigned char bit2: 1;
unsigned char bit3: 1;
unsigned char bit4: 1;
unsigned char bit5: 1;
unsigned char bit6: 1;
unsigned char bit7: 1;
} Timer_Bit;
typedef union
{
unsigned char byte;
Timer_Bit field;
} Char_Field;
typedef struct
{
u8 Tick10Msec;
Char_Field Status;
} Timer_Struct;
Timer_Struct gTimer;
void SysTick_Handler(void)
{
bTemp10Msec = TIMER_SET;
++gTimer.Tick10Msec;
if (0 == (gTimer.Tick10Msec % 5))
{
bTemp50Msec = TIMER_SET;
}
if (0 == (gTimer.Tick10Msec % 10))
{
bTemp100Msec = TIMER_SET;
}
if (100 == gTimer.Tick10Msec)
{
gTimer.Tick10Msec = 0;
bTemp1Sec = TIMER_SET;
}
}
void SysTimer _Process(void)
{
#if 0
gTimer.Status.byte &= 0xF0;
if (bTemp10Msec)
{
bSystem10Msec = TIMER_SET;
}
if (bTemp50Msec)
{
bSystem50Msec = TIMER_SET;
}
if (bTemp100Msec)
{
bSystem100Msec = TIMER_SET;
}
if (bTemp1Sec)
{
bSystem1Sec = TIMER_SET;
}
gTimer.Status.byte &= 0x0F;
#endif
gTimer.Status.byte >>= 4;
}
int main(void)
{
while(1)
{
SysTimer _Process();
if(TIMER_SET == bSystem100Msec)
{
LED = !LED;
}
}
}