Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

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

tomwlo 23 Gru 2008 12:08 1697 5
  • #1 23 Gru 2008 12:08
    tomwlo
    Poziom 9  

    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.

    Code:

    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

    Code:

    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

    0 5
  • #2 23 Gru 2008 12:19
    dawid512
    Poziom 32  

    W Bascomie można pisać funkcje bez wykorzystania asm. Poczytaj w helpie o FUNCTION.

    0
  • #3 23 Gru 2008 12:29
    tomwlo
    Poziom 9  

    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.

    0
  • #4 23 Gru 2008 14:23
    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.
    Code:

    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 :?:

    0
  • #5 26 Gru 2008 20:45
    tomwlo
    Poziom 9  

    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

    0
  • #6 31 Sty 2009 17:45
    tomwlo
    Poziom 9  

    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.

    0