Page 312 - Embedded Microprocessor Systems Real World Design
P. 312

Else (ONOFF  was not set, OFF  time, change to ON time),
                     Set ONOFF
                     HOUR = ONHOTJR
                     MINUTE = ONMIN  (current time = ON time).
                  If  powerfail occurred, switch to normal timing only if
                  SET button  pressed.
                  If  MODE  = 0 (powerfail)
                    If  SEFLAG  (SET  PB pressed),
                     Clear SEFLAG
                     Set MODE  =  1 (normal timing).
                  If  MODE  = 1 (normal timing),
                    If  ONTUG set (ON  PB  pressed),
                     Clear ONFLAG.
                     If  Override time = 0:O (OVMIN = OVHOUR = 0),
                      (User has  selected ON  override)
                      Set VOFLAG
                      Set OVMIN to  30.
                     Else (Override time > O:O,  user has pressed ON while in override),
                      If  VOFLAG  (ON  pressed  in OFF override, cancel override),
                       Set OVMIN  = OVHOUR = 0:O (override time = 0:O)
                      Else (ON  pressed while in ON override, increment time),
                       Add  30 to override time
                       If  override time = 24:00,  set override time to 0.
                    If  OFFLAG  set (OFF PB  pressed),
                     Clear OFFLAG.
                     If  Override time = 0:O (OVMIN = OVHOTJR = 01,
                      (User has  selected OFF override)
                      Clear VOFLAG
                      Set OVMIN to 30.
                     Else (Override time > O:O,  user  has pressed  OFF while  in override),
                      If  not VOFLAG  (OFF  pressed  in ON override, cancel override),
                       Set OVMIN = OVHOUR = 0:O (Override time = 0:O)
                      Else  (OFF  pressed while in OFF override, increment time),
                       Add  30 to override time
                       If  override time = 24:00, set Override time to 0.
                    If  SEFLAG (SET  PB  pressed),
                     Set MODE  = 2 (time set)
                     Set OVMIN  = OVHOUR = 0:O (Override time = 0:O)
                     Set PRHOTJR  = ONHOTJR
                     Set PRMIN  = ONMIN  (display ON time)
                     Set SEMODE  =  1  (ON  time set).
                  If  MODE  = 2  (time set),
                    If  SEFLAG  (SET  PB  pressed, exit time set),
                     Clear SEFLAG.
                     If  SEMODE  =  1 (ON  time set),



                Appendix A                                                           293
   307   308   309   310   311   312   313   314   315   316   317