;Sample menu system for washing machine ;This is an example program from the onboard LCD documentation ;Define keys iLeftArrow iEQU 12 ;top button on MMi99 iRightArrow iEQU 11 iAccept iEQU 10 iReject iEQU 9 ;Define memory locations. ;These are in the PermStore area HotWash mEQU 6 WashTime mEQU 7 PreWash mEQU 8 ;These are anywhere: ScratchMem mEQU 9 ;Temporary storage ;Initialise: Check if Permanent memory is valid, ; force defaults if not PermRecall GoIfZ DataOK SetMem WashTime,10 ;Default SetMem PreWash,T ;Default SetMem HotWash,T ;Default PermStore PermStore DataOK OBLCD_Type 2 ******** Menu system *************************** ;State 0 is easy: one message then wait for Y SetMenu0 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Y for menu" Menu0 InputK iAccept GoIfT SetMenu1 GoTo Menu0 ;==============State 1======================== SetMenu1 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Wash type: " GoSub QryChange ;display "Change?" Menu1ShowType OBLCD_SetCur 0,11 Recall HotWash GoIfT Menu1Hot Menu1Cold ; 0123456789012345 OBLCD_Text "Cold " GoTo Menu1KeyIn Menu1Hot ; 0123456789012345 OBLCD_Text "Hot " ;Wait for a key Menu1KeyIn InputK iLeftArrow GoIfT Menu1Left InputK iRightArrow GoIfT Menu1Right InputK iAccept GoIfT Menu1Accept InputK iReject GoIfT Menu1Reject GoTo Menu1KeyIn ;Keep trying Menu1Left GoTo SetMenu3 Menu1Right GoTo SetMenu2 Menu1Accept Recall HotWash GoIfT SetMenu5 GoTo SetMenu4 Menu1Reject GoTo SetMenu0 ;===========State 2======================== SetMenu2 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Wash time: " GoSub QryChange ;display "Change?" Menu2ShowTime OBLCD_SetCur 0,11 Recall WashTime OBLCD_UDecDispXVW OBLCD_Text "m " Menu2KeyIn InputK iLeftArrow GoIfT Menu2Left InputK iRightArrow GoIfT Menu2Right InputK iAccept GoIfT Menu2Accept InputK iReject GoIfT Menu2Reject GoTo Menu2KeyIn Menu2Left GoTo SetMenu1 Menu2Right GoTo SetMenu3 Menu2Accept GoTo SetMenu6 Menu2Reject GoTo SetMenu0 ;===========State 3======================== SetMenu3 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Pre-wash: " OBLCD_SetCur 1,0 OBLCD_Text "Y or N to change" Menu3Show OBLCD_SetCur 0,11 Recall PreWash GoIfT Menu3PWYes Menu3PWNo OBLCD_Text "No " GoTo Menu3KeyIn Menu3PWYes OBLCD_Text "Yes" Menu3KeyIn InputK iLeftArrow GoIfT Menu3Left InputK iRightArrow GoIfT Menu3Right InputK iAccept GoIfT Menu3Accept InputK iReject GoIfT Menu3Reject GoTo Menu3KeyIn Menu3Left GoTo SetMenu2 Menu3Right GoTo SetMenu1 Menu3Accept SetMem PreWash,T PermStore GoTo Menu3Show Menu3Reject SetMem PreWash,F PermStore GoTo Menu3Show ;======= State 4 ======================= SetMenu4 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Hot wash" Menu4KeyIn InputK iLeftArrow GoIfT Menu4Left InputK iRightArrow GoIfT Menu4Right InputK iAccept GoIfT Menu4Accept InputK iReject GoIfT Menu4Reject GoTo Menu4KeyIn Menu4Left GoTo SetMenu5 Menu4Right GoTo SetMenu5 Menu4Accept SetMem HotWash,T PermStore Menu4Reject GoTo SetMenu2 ;======= State 5 ======================= SetMenu5 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Cold wash" Menu5KeyIn InputK iLeftArrow GoIfT Menu5Left InputK iRightArrow GoIfT Menu5Right InputK iAccept GoIfT Menu5Accept InputK iReject GoIfT Menu5Reject GoTo Menu5KeyIn Menu5Left GoTo SetMenu4 Menu5Right GoTo SetMenu4 Menu5Accept SetMem HotWash,F PermStore Menu5Reject GoTo SetMenu2 ;===========State 6======================== SetMenu6 OBLCD_Cls ; 0123456789012345 OBLCD_Text "Change wash time" Recall WashTime Menu6Show Store ScratchMem OBLCD_SetCur 1,6 Recall ScratchMem OBLCD_UDecDispXVW OBLCD_Text "m " Menu6KeyIn InputK iLeftArrow GoIfT Menu6Left InputK iRightArrow GoIfT Menu6Right InputK iAccept GoIfT Menu6Accept InputK iReject GoIfT Menu6Reject GoTo Menu6KeyIn Menu6Left Recall ScratchMem Push GoIfXGE 25,Menu6KeyIn IncX GoTo Menu6Show Menu6Right Recall ScratchMem Push GoIfXLE 5,Menu6KeyIn DecX GoTo Menu6Show Menu6Accept Recall ScratchMem Store WashTime PermStore Menu6Reject GoTo SetMenu3 ;=============================================== ;Subroutine to display "Change?" (clears to EOL) QryChange OBLCD_SetCur 1,0 ; 0123456789012345 OBLCD_Text "Change? " Return ;============ End of program ================