A practical alarm system requires several steady states (e.g. Set/Unset) and some
transitional states ( e.g. Setting/Un-setting) in order to achieve the overall function.
As part of these alarm sequences it was soon realised that one of the most difficult to achieve,
would be when the alarm system is Set and is counting down to alarm, after the user has entered
via the entry/exit zone.
This requires that the processor simultaneously handles the count down to alarm while
decoding key entries. At first consideration this did not seem to be a problem,
however it was soon realised that if the user pauses the countdown in order to enter
an entry code this would effectively stop the alarm from sounding.
Attempts to integrate accurate timing loops into the keyboard scanning routines proved to
be messy and unreliable. This effectively led to the use of timer derived interrupts
in order to meet the program requirements.
These timer derived interrupts would be employed in order to keep track of system
timing, while the running program would handle the keyboard scanning and decoding.
The flow diagram below illiterates the overall operation of the software .
Some of these screens are shown below:
The Boot and Main Manu Screens.
The Presets and Timers sub menus.
The Setting and Set screens.
The Alarm and Alarm Countdown screens.