Page 313 - Embedded Microprocessor Systems Real World Design
P. 313
ONHOUR = PRHOUR
ONMIN = PRMIN (Store displayed time as ON time)
MODE = 1.
Else (SEMODE = 0, OFF time set),
OFFHOTJR = PRHOTJR
OFFMIN = PRMIN (OFF time = displayed time)
Mode = 1.
If ONFLAG (ON PB pressed while in time set mode),
Clear ONFLAGt.
If SEMODE = 1 (ON pressed in ON time set, increment display time),
Add 30 to displayed time.
If time = 24:00, set displayed time to 0:30.
Else (SEMODE = 0, ON pressed in OFF set, save OFF time),
OFFHOTJR = PRHOTJR
OFFMIN = PRMIN (OFF time = displayed time)
SEMODE = 1
PRHOUR = ONHOUR
PRMIN = ONMIN (displayed time = ON time).
If OFTLAG (OFF PB pressed while in time set mode),
Clear OF'FLAG.
If SEMODE = 0 (OFF pressed in OFF time set, increment display time),
Add 30 to displayed time.
If time = 24:00, set displayed time to 0:30.
Else (SEMODE = 1, OFF pressed in ON set, save ON time),
ONHOUR = PRHOUR
ONMIN = PRMIN (ON time = displayed time)
SEMODE = 0
PRHOUR = OFFHOUR
PRMIN = OF'FMIN (displayed time = OFF time).
End of background loop.
Timer lnterrupt Logic
Trigger watchdog timer.
Increment HUND.
If HUND = 125 (1/2sec rollover), toggle BLFLACf.
If HCTND = 250 (1 see rollover>,
HUND=O
Increment SECOND.
If SECOND = 60,
SECOND = 0.
DECR time <MINUTE, HOUR)
If time = O:O, set TFLAcf.
If override time > O:O, decrement override time.
294 Appendix A