Availability | All terminals |
Description |
This function (re)sets the system timer to a specified value. This timer continuously
increments every timer tick and doesn't have to be started and it also doesn't stop like a
timeout timer. This timer makes it possible to create multiple timed processes that run "simultaneously" in an application. |
Syntax | void SetSystemTime( unsigned long time); |
Arguments |
unsigned long timeThe system timer is (re)set to this value.The duration of one timer tick is 20ms. For example, 1 second takes 50 timer ticks. The system timer has a range of 0 to 4294967295, which means the timer can run for about 1000 days, before it resets to zero. |
Returns | None |
Remarks |
The current value of the system timer can be read with the GetSystemTime() function. Resetting the system timer doesn't affect the time or date of the operating system in any way. When only 1 timer is needed in your application, it's better to use the StartTimer() function. |
Example |
#include <stdio.h> #include "lib.h" #define HIGH_DELAY 13 * 5 //Note that these are prime numbers #define MEDIUM_DELAY 23 * 5 #define LOW_DELAY 37 * 5 void main( void ) { unsigned long current_time; unsigned long next_high_time; unsigned long next_medium_time; unsigned long next_low_time; SetSystemTime(0); //Reset system timer to zero next_high_time = HIGH_DELAY; next_medium_time = MEDIUM_DELAY; next_low_time = LOW_DELAY; printf("\n3 independent\ntimers using\nGetSystemTime"); for(;;) { current_time = GetSystemTime(); if(current_time>=next_low_time) { Sound( TSTANDARD, VSTANDARD, SLOW, 0); GoodReadLed(RED,10); next_low_time += LOW_DELAY; } if(current_time>=next_medium_time) { Sound( TSTANDARD, VSTANDARD, SMEDIUM, 0); GoodReadLed(ORANGE,10); next_medium_time += MEDIUM_DELAY; } if(current_time>=next_high_time) { Sound( TSTANDARD, VSTANDARD, SHIGH, 0); GoodReadLed(GREEN,10); next_high_time += HIGH_DELAY; } Idle(); } } |