bascom obsługa menu

To forum jest dla wszystkich pasjonatów wiecznie młodych mikrokontrolerów '51. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
e-11
-
Posty: 12
Rejestracja: 20 wrz 2005, 20:52

bascom obsługa menu

Post autor: e-11 » 28 sty 2009, 15:18

Czy mógłby mi ktoś pomóc przy obsłudze menu w bascomie? Chodzi mi o to, że chcę zrobić obsługę menu na wyświetlaczu i przyciskami UP Down ustawiać parametry.
Naciskam przycisk menu i pojawia mi się 1 parametr następne naciśnięcie drugi parametr, trzeci i czwarty po następnych naciśnięciach. Klawiszem enter zatwierdzam parametr, który chcę zmienić i przechodzę do procedury ustawiania wartości parametru i teraz nie wiem jak napisać procedurę, aby zmieniał się parametr, który ją wywołał.

Kod: Zaznacz cały

Dim Keyup As Bit , Keydown As Bit , Key_menu As Bit , Keyenter As Bit 
Dim Menu As Byte , Keys As Byte , X As Byte 
Dim A1_l As Byte , A1_h As Byte , A2_l As Byte , A2_h As Byte , Temp As Byte 


Key_menu Alias P3.1 
Keyup Alias P3.2 
Keydown Alias P3.3 
Keyenter Alias P3.4 
 Config Lcd = 16 * 1a 


 Do 
   If Key_menu = 0 Then       'wybranie nr ekranu 1-4 przyciskiem
     Incr Menu 
      End If 
      Waitms 100 
   If Menu = 5 Then 
     Menu = 1 
       End If 
        Cls 

      Waitms 100 

 Select Case Menu                    'jeżeli zdecydujemy się na dany 
   Case 1 : Lcd "Alarm1_L" ; A1_l   'ekran wciskamy enter to skacze 
     If Keyenter = 0 Then           'do ustawiania wartości"Nastawa"
        Gosub Nastawa 
     End If 
  
Case 2 : Lcd "Alarm1_H" ; A1_h 
     If Keyenter = 0 Then Gosub Nastawa 

  Case 3 : Lcd "Alarm2_L" ; A2_l 
     If Keyenter = 0 Then Gosub Nastawa 

  Case 4 : Lcd "Alarm2_H" ; A2_h 
     If Keyenter = 0 Then Gosub Nastawa 

 End Select 



Loop 

Nastawa:                                                      
                                                              
 Do 
  If Keyup = 0 Then              'jak teraz zmienić wartość konkretnego 
                              'parametru, który wywołał tą procedure
    Incr A1_l                'aby nie pisać kilka razy tego samego 
  End If                                   'fragmentu kodu
                                               'z innym parametrem 

  If Keydown = 0 Then 
    Decr A1_l 
  End If 

  If Keyenter = 0 Then                    'wracamy z procedury dopiero
     Return                           'jak zaakceptujemy wartość Enterem 
  End If 

Loop


ODPOWIEDZ