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
   308   309   310   311   312   313   314   315   316   317   318