logo elektroda
logo elektroda
X
logo elektroda
REKLAMA
REKLAMA
Adblock/uBlockOrigin/AdGuard mogą powodować znikanie niektórych postów z powodu nowej reguły.

[atmega8][bascom] instrukcja - procedura użytkownika

tomwlo 23 Gru 2008 12:08 1892 5
REKLAMA
  • #1 5893897
    tomwlo
    Poziom 10  
    Witam

    W trakcie prac nad projekcikiem, używam 5 przycisków, które obsługuję procedurą opisaną poniżej. Strzegę się w ten sposób przed kilkukrotnym zliczeniem tego samego przyciśnięcia przez program.

    
    If Sw_prawy_help = 1 Then
              If Pind.5 = 0 Then
                        If V_menu > 5 Then
                                  V_menu = 1
                             Else : V_menu = V_menu + 1
                        End If
                        Sw_prawy_help = 0
                        Klik = 1
                        Wyjscie_z_menu = 1
              End If
         Else
              If Pind.5 = 1 Then
                   Sw_prawy_help = 1
              End If
    End If
    


    Problem polega na tym, iż abyb obsłużyć cały kod, muszę użyć tej procedury około 20 razy, co powoduje iż "kod rośnie" (w różnych miejscach menu ten sam przycisk wykonuje inne czynności).


    Zabawę z Bascom AVR rozpoczynam, cośtam-cośtam :) juz potrafię, ale intryguje mnie możliwość napisania biblioteki/procedury/funkcji która pozwalałaby zmieścić kod

    
    If Sw_prawy_help = 1 Then
              If Pind.5 = 0 Then
                        FUNKCJA
                        Sw_prawy_help = 0
              End If
         Else
              If Pind.5 = 1 Then
                   Sw_prawy_help = 1
              End If
    End If
    


    i wykonywałaby w razie spełnienia wewnętrznych warunków coś nazwanego FUNKACJA.

    Nie wiem czy dobrze się wyraziłem, najlepiej gdyby dało się coś takiego napisać w BASCOMIE, podobno można w ASM (ale tego języka nie znam).

    Pozdrawiem i z góry dziękuje za pomoc.

    Tomek
  • REKLAMA
  • #2 5893942
    dawid512
    Poziom 32  
    W Bascomie można pisać funkcje bez wykorzystania asm. Poczytaj w helpie o FUNCTION.
  • REKLAMA
  • #3 5893977
    tomwlo
    Poziom 10  
    witam,

    czytałem i czytam, ale nie bardzo potrafie sobie to poukładać, umię zrobić funkcję własną (np matematyczną jak w przykładzie), ale nie potrafię napisać czegoś w stylu:

    Procedura (spełnie warunki) to Funkcja

    Pozdrawiam.
  • REKLAMA
  • #4 5894464
    zumek
    Poziom 39  
    tomwlo napisał:
    , co powoduje iż "kod rośnie" (w różnych miejscach menu ten sam przycisk wykonuje inne czynności)...

    Najprostszym wyjściem z sytuacji , jest użycie jednej funkcji/procedury z parametrem.
    Np.
    
    Declare Sub Procedura(Byval Parametr As Byte)
    '...
    Gosub Procedura(0)
    '...
    Gosub Procedura(1)
    '... itd
    Sub Procedura()
    If Sw_prawy_help = 1 Then
              If Pind.5 = 0 Then
                        On Parametr Gosub Etykieta0,Etykieta1,Etykieta2 'itd
                        Sw_prawy_help = 0
              End If
         Else
              If Pind.5 = 1 Then
                   Sw_prawy_help = 1
              End If
    End If
    End Sub
    '...
    Etykieta0:
       'wykonaj
    Return
    

    Czy to jest jasne :?:
  • REKLAMA
  • #5 5905962
    tomwlo
    Poziom 10  
    Witam

    Trochę mnie nie było, Święta. Ale Twój pomysł wygląda nieźle. Muszę go przetestować, to potrwa troszkę, ale jak zadziała to będzie super :)

    Pozdrawiam
    TOmek
  • #6 6082333
    tomwlo
    Poziom 10  
    Ok, Witam ponownie.

    Problem z instrukcją parametryczną w BASCOMIE opanowany, działa nieźle.

    Nowe pytanie, czy ktoś ma pojęcie jak przekonwertować liczbę zapisaną w formacie BCD (dwucyfrową) na dwie liczby w systemie dziesiętnym i to wszystko w języku ASSEMBLER.

    Całość ma działać jako biblioteka do BASCOMA. wiem że w bascomie sa instrukcje MAKEDEC i MAKEBCD, ale jak to samo zrobić w assemblerze?

    Pozdrawiam.
REKLAMA