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

skrócenie programu w bascom avr

05 Mar 2008 11:30 1631 17
  • Poziom 14  
    Witam
    Mam taki programik który zapisuje do pamięci eeprom dane. Jedna paczka zawiera pięć zmiennych. Takich paczek mam na razie 20 i dosyć mocno zwalnia mi program nie mówiąc o wielkości pliku w mikrokontrolerze. Może znacie jakieś kruczki aby to skrócić.
    Pozdrawiam

    dim a1 as eram byte i tak dalej z a2 a3
    dim b1 as eram byte i tak dalej z b2 b3
    dim c1 as eram byte i tak dalej z c2 c3
    d1
    e1

    if jesteś w ekranie 1 i jest naciśnięty przycisk to przepisz dane do pierwszej paczki

    a1=zmienna 1
    b1= zmienna 2
    c1=zmienna 3
    d1= zmienna 4
    e1= zmienna 5

    jeśli jesteś w ekranie 2 to przepisz dane do
    a2, b2, c2, d2, e2

    i tak dalej do 20-ej paczki.
    Jeśli chcę odczytać dane z komórek eeprom to zależność if then muszę powtórzyć następne 20 razy.

    Dziękuję za wszystkie sugestie.
  • Poziom 38  
    Nie mam pojęcia, o co koledze chodzi, może napisze kolega kawałek prawdziwego kodu, a wtedy możemy myśleć dalej...
  • Poziom 31  
    spróbuj włączyć optymalizację kodu w options/output
  • Specjalista - Mikrokontrolery
    nalezaloby wykonac 3 kroki
    1. napisac program porzadnie
    2. jesli krok 1 zawiedzie, nauczyc sie C
    3. jesli krok 2 zawiedzie (malo prawdopodobne), nauczyc sie assemblera, albo przemyslec, czy to w ogole jest wykonalne.

    0x41 0x56 0x45!!
  • Spec od GSM
    To chyba jest taka pseudo tablica...
  • Poziom 15  
    Żeby przyspieszyć ten program wcale nie trzeba od razu C, można i w Bascomie, przede wszystkim zrezygnuj ze zmiennych typu ERAM, na dane do zapisu w EEPROMie zrób bufor w RAMie a następnie napisz własne procedury zapisu do EEPROMa, uruchom przerwania od tegoż EEPROMa i w przerwaniu przekazuj do zapisu kolejne bajty. Wtedy program nie musi czekać na długi zapis do pamięci tylko przekazuje dane i idzie robić coś innego.
  • Poziom 39  
    marekos napisał:
    Żeby przyspieszyć ten program...

    Postodawca chce skrócić kod , a nie przyspieszyć jego wykonanie :)

    Np.
    Code:


    Dim Teep(100) As Eram Byte

    Declare Sub Ram2eeprom()

    Dim Tablica(5) As Byte
    Dim Z1 As Byte At Tablica(1) Overlay
    Dim Z2 As Byte At Tablica(2) Overlay
    Dim Z3 As Byte At Tablica(3) Overlay
    Dim Z4 As Byte At Tablica(4) Overlay
    Dim Z5 As Byte At Tablica(5) Overlay

    Dim Ekran As Byte

    Ekran = 7

    Do
       Z1=5
       Call Ram2eeprom
    Loop



    Sub Ram2eeprom()
    Local Pointer As Byte , Xx As Byte
    ' ***** dla ekran od 1 do 20 ******
    'Pointer = Ekran - 1
    'Pointer = Pointer * 5
    '***** dla ekran od 0 do 19 *******
    Pointer = Ekran * 5
    Incr Pointer
    For Xx = 1 To 5
       Teep(pointer) = Tablica(xx)
       Incr Pointer
    Next

    End Sub

    I tak na marginesie: "Umiejętność programowania , nie ma nic wspólnego z narzędziami(środowiskami,kompilatorami) jakich ktoś używa"
    Quod erat demonstrandum ;)

    Piotrek
  • Poziom 18  
    A akurat z tym zdaniem się nie zgodzę - środowisko ma ogromne znaczenie do ćwiczenia umiejętności programowania :)
  • Poziom 39  
    MarasK napisał:
    A akurat z tym zdaniem się nie zgodzę - środowisko ma ogromne znaczenie do ćwiczenia umiejętności programowania :)

    To może inaczej: Jeśli ktoś nie potrafi zbudować algorytmu w Bascomie , to nie zrobi tego również w C , czy assemblerze i dotyczy to równiez odwrotnej kolejności (asm,C,Bascom).
    Np.
    Jeśli ktoś ma problemy w Bascom(jak w temacie) , to w C napisze
    Code:

    If(ekran==2)
       {
       a1=zmienna1;
       //...
       a50=zmienna50;
       }

    a w asm zapewne
    Code:

       cpi ekran,2
       brne skip_next
       
       lds r16,zmienna1
       sts a1,r16
       ;...
       lds r16,zmienna50
       sts a50,r16
       ret
    skip_next:
       ;...


    Piotrek
  • Poziom 42  
    Zumek napisał:
    Code:
    Dim Teep(100) As Eram Byte 
    

    Declare Sub Ram2eeprom()

    Dim Tablica(5) As Byte
    Dim Z1 As Byte At Tablica(1) Overlay
    Dim Z2 As Byte At Tablica(2) Overlay
    Dim Z3 As Byte At Tablica(3) Overlay
    Dim Z4 As Byte At Tablica(4) Overlay
    Dim Z5 As Byte At Tablica(5) Overlay


    .... kurka, że też z miesiąc temu nie napisałes takiego przykładu na elektrodzie Zumek ;) .... "weź się częściej udzielaj" - bo śledzę twoje posty, a szczególnie ostatnio w temacie Bascom'a ;) .... a jak na lekarstwo ich ostatnio jakby

    pozdrówka (fakt widać, że już "trochę" dłubiesz w tych prockach)
  • Poziom 14  
    Witam.
    Dzięki za wskazówki. Można wrzucić operacje do podprogramu i przypuszczam że trochę program przyspieszy, lecz przede wszystkim pomagitie wy mnie w skróceniu tego co załączam poniżej. Muszę korzystać z nieulotnej pamięci gdyż są to informacje z których korzystam przy następnym uruchomieniu urządzenia.
    Oj długi ci on.

    Dim Aa1 As Eram Byte 'rodzaj cyklu
    Dim Aa2 As Eram Byte 'rodzaj cyklu
    Dim Aa3 As Eram Byte 'rodzaj cyklu
    Dim Aa4 As Eram Byte 'rodzaj cyklu
    Dim Aa5 As Eram Byte 'rodzaj cyklu
    Dim Aa6 As Eram Byte 'rodzaj cyklu
    Dim Aa7 As Eram Byte 'rodzaj cyklu
    Dim Aa8 As Eram Byte 'rodzaj cyklu
    Dim Aa9 As Eram Byte 'rodzaj cyklu
    Dim Aa10 As Eram Byte 'rodzaj cyklu
    Dim Aa11 As Eram Byte 'rodzaj cyklu
    Dim Aa12 As Eram Byte 'rodzaj cyklu
    Dim Aa13 As Eram Byte 'rodzaj cyklu
    Dim Aa14 As Eram Byte 'rodzaj cyklu
    Dim Aa15 As Eram Byte 'rodzaj cyklu
    Dim Aa16 As Eram Byte 'rodzaj cyklu
    Dim Aa17 As Eram Byte 'rodzaj cyklu
    Dim Aa18 As Eram Byte 'rodzaj cyklu
    Dim Aa19 As Eram Byte 'rodzaj cyklu
    Dim Aa20 As Eram Byte 'rodzaj cyklu

    Dim Bb1 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb2 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb3 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb4 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb5 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb6 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb7 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb8 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb9 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb10 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb11 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb12 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb13 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb14 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb15 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb16 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb17 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb18 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb19 As Eram Byte 'rodzaj pomiaru temperatury
    Dim Bb20 As Eram Byte 'rodzaj pomiaru temperatury

    Dim Cc1 As Eram Byte 'temperatura pieca
    Dim Cc2 As Eram Byte 'temperatura pieca
    Dim Cc3 As Eram Byte 'temperatura pieca
    Dim Cc4 As Eram Byte 'temperatura pieca
    Dim Cc5 As Eram Byte 'temperatura pieca
    Dim Cc6 As Eram Byte 'temperatura pieca
    Dim Cc7 As Eram Byte 'temperatura pieca
    Dim Cc8 As Eram Byte 'temperatura pieca
    Dim Cc9 As Eram Byte 'temperatura pieca
    Dim Cc10 As Eram Byte 'temperatura pieca
    Dim Cc11 As Eram Byte 'temperatura pieca
    Dim Cc12 As Eram Byte 'temperatura pieca
    Dim Cc13 As Eram Byte 'temperatura pieca
    Dim Cc14 As Eram Byte 'temperatura pieca
    Dim Cc15 As Eram Byte 'temperatura pieca
    Dim Cc16 As Eram Byte 'temperatura pieca
    Dim Cc17 As Eram Byte 'temperatura pieca
    Dim Cc18 As Eram Byte 'temperatura pieca
    Dim Cc19 As Eram Byte 'temperatura pieca
    Dim Cc20 As Eram Byte 'temperatura pieca


    Dim Dd1 As Eram Byte 'temperatura bagnetu
    Dim Dd2 As Eram Byte 'temperatura bagnetu
    Dim Dd3 As Eram Byte 'temperatura bagnetu
    Dim Dd4 As Eram Byte 'temperatura bagnetu
    Dim Dd5 As Eram Byte 'temperatura bagnetu
    Dim Dd6 As Eram Byte 'temperatura bagnetu
    Dim Dd7 As Eram Byte 'temperatura bagnetu
    Dim Dd8 As Eram Byte 'temperatura bagnetu
    Dim Dd9 As Eram Byte 'temperatura bagnetu
    Dim Dd10 As Eram Byte 'temperatura bagnetu
    Dim Dd11 As Eram Byte 'temperatura bagnetu
    Dim Dd12 As Eram Byte 'temperatura bagnetu
    Dim Dd13 As Eram Byte 'temperatura bagnetu
    Dim Dd14 As Eram Byte 'temperatura bagnetu
    Dim Dd15 As Eram Byte 'temperatura bagnetu
    Dim Dd16 As Eram Byte 'temperatura bagnetu
    Dim Dd17 As Eram Byte 'temperatura bagnetu
    Dim Dd18 As Eram Byte 'temperatura bagnetu
    Dim Dd19 As Eram Byte 'temperatura bagnetu
    Dim Dd20 As Eram Byte 'temperatura bagnetu


    Dim Ee1 As Eram Byte 'czas trwania cyklu
    Dim Ee2 As Eram Byte 'czas trwania cyklu
    Dim Ee3 As Eram Byte 'czas trwania cyklu
    Dim Ee4 As Eram Byte 'czas trwania cyklu
    Dim Ee5 As Eram Byte 'czas trwania cyklu
    Dim Ee6 As Eram Byte 'czas trwania cyklu
    Dim Ee7 As Eram Byte 'czas trwania cyklu
    Dim Ee8 As Eram Byte 'czas trwania cyklu
    Dim Ee9 As Eram Byte 'czas trwania cyklu
    Dim Ee10 As Eram Byte 'czas trwania cyklu
    Dim Ee11 As Eram Byte 'czas trwania cyklu
    Dim Ee12 As Eram Byte 'czas trwania cyklu
    Dim Ee13 As Eram Byte 'czas trwania cyklu
    Dim Ee14 As Eram Byte 'czas trwania cyklu
    Dim Ee15 As Eram Byte 'czas trwania cyklu
    Dim Ee16 As Eram Byte 'czas trwania cyklu
    Dim Ee17 As Eram Byte 'czas trwania cyklu
    Dim Ee18 As Eram Byte 'czas trwania cyklu
    Dim Ee19 As Eram Byte 'czas trwania cyklu
    Dim Ee20 As Eram Byte 'czas trwania cyklu

    If Menulista = 1 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa1 = Slowo1
    Bb1 = Temperatura
    Cc1 = Temperaturabagnet
    Dd1 = Czas
    Ee1 = Slowo2
    Menulista = 0
    End If
    If Menulista = 1 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa1
    Temperatura = Bb1
    Temperaturabagnet = Cc1
    Czas = Dd1
    Slowo2 = Ee1
    Menulista = 0
    End If

    If Menulista = 2 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa2 = Slowo1
    Bb2 = Temperatura
    Cc2 = Temperaturabagnet
    Dd2 = Czas
    Ee2 = Slowo2
    Menulista = 0
    End If
    If Menulista = 2 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa2
    Temperatura = Bb2
    Temperaturabagnet = Cc2
    Czas = Dd2
    Slowo2 = Ee2
    Menulista = 0
    End If

    If Menulista = 3 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa3 = Slowo1
    Bb3 = Temperatura
    Cc3 = Temperaturabagnet
    Dd3 = Czas
    Ee3 = Slowo2
    Menulista = 0
    End If
    If Menulista = 3 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa3
    Temperatura = Bb3
    Temperaturabagnet = Cc3
    Czas = Dd3
    Slowo2 = Ee3
    Menulista = 0
    End If

    If Menulista = 3 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa3 = Slowo1
    Bb3 = Temperatura
    Cc3 = Temperaturabagnet
    Dd3 = Czas
    Ee3 = Slowo2
    Menulista = 0
    End If
    If Menulista = 3 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa3
    Temperatura = Bb3
    Temperaturabagnet = Cc3
    Czas = Dd3
    Slowo2 = Ee3
    Menulista = 0
    End If

    If Menulista = 4 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa4 = Slowo1
    Bb4 = Temperatura
    Cc4 = Temperaturabagnet
    Dd4 = Czas
    Ee4 = Slowo2
    Menulista = 0
    End If
    If Menulista = 4 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa4
    Temperatura = Bb4
    Temperaturabagnet = Cc4
    Czas = Dd4
    Slowo2 = Ee4
    Menulista = 0
    End If

    If Menulista = 5 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa5 = Slowo1
    Bb5 = Temperatura
    Cc5 = Temperaturabagnet
    Dd5 = Czas
    Ee5 = Slowo2
    Menulista = 0
    End If
    If Menulista = 5 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa5
    Temperatura = Bb5
    Temperaturabagnet = Cc5
    Czas = Dd5
    Slowo2 = Ee5
    Menulista = 0
    End If

    If Menulista = 6 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa6 = Slowo1
    Bb6 = Temperatura
    Cc6 = Temperaturabagnet
    Dd6 = Czas
    Ee6 = Slowo2
    Menulista = 0
    End If
    If Menulista = 6 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa6
    Temperatura = Bb6
    Temperaturabagnet = Cc6
    Czas = Dd6
    Slowo2 = Ee6
    Menulista = 0
    End If

    If Menulista = 7 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa7 = Slowo1
    Bb7 = Temperatura
    Cc7 = Temperaturabagnet
    Dd7 = Czas
    Ee7 = Slowo2
    Menulista = 0
    End If
    If Menulista = 7 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa7
    Temperatura = Bb7
    Temperaturabagnet = Cc7
    Czas = Dd7
    Slowo2 = Ee7
    Menulista = 0
    End If

    If Menulista = 8 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa8 = Slowo1
    Bb8 = Temperatura
    Cc8 = Temperaturabagnet
    Dd8 = Czas
    Ee8 = Slowo2
    Menulista = 0
    End If
    If Menulista = 8 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa8
    Temperatura = Bb8
    Temperaturabagnet = Cc8
    Czas = Dd8
    Slowo2 = Ee8
    Menulista = 0
    End If

    If Menulista = 9 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa9 = Slowo1
    Bb9 = Temperatura
    Cc9 = Temperaturabagnet
    Dd9 = Czas
    Ee9 = Slowo2
    Menulista = 0
    End If
    If Menulista = 9 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa9
    Temperatura = Bb9
    Temperaturabagnet = Cc9
    Czas = Dd9
    Slowo2 = Ee9
    Menulista = 0
    End If

    If Menulista = 10 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa10 = Slowo1
    Bb10 = Temperatura
    Cc10 = Temperaturabagnet
    Dd10 = Czas
    Ee10 = Slowo2
    Menulista = 0
    End If
    If Menulista = 10 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa10
    Temperatura = Bb10
    Temperaturabagnet = Cc10
    Czas = Dd10
    Slowo2 = Ee10
    Menulista = 0
    End If

    If Menulista = 11 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa11 = Slowo1
    Bb11 = Temperatura
    Cc11 = Temperaturabagnet
    Dd11 = Czas
    Ee11 = Slowo2
    Menulista = 0
    End If
    If Menulista = 11 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa11
    Temperatura = Bb11
    Temperaturabagnet = Cc11
    Czas = Dd11
    Slowo2 = Ee11
    Menulista = 0
    End If

    If Menulista = 12 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa12 = Slowo1
    Bb12 = Temperatura
    Cc12 = Temperaturabagnet
    Dd12 = Czas
    Ee12 = Slowo2
    Menulista = 0
    End If
    If Menulista = 12 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa12
    Temperatura = Bb12
    Temperaturabagnet = Cc12
    Czas = Dd12
    Slowo2 = Ee12
    Menulista = 0
    End If

    If Menulista = 13 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa13 = Slowo1
    Bb13 = Temperatura
    Cc13 = Temperaturabagnet
    Dd13 = Czas
    Ee13 = Slowo2
    Menulista = 0
    End If
    If Menulista = 13 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa13
    Temperatura = Bb13
    Temperaturabagnet = Cc13
    Czas = Dd13
    Slowo2 = Ee13
    Menulista = 0
    End If

    If Menulista = 14 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa14 = Slowo1
    Bb14 = Temperatura
    Cc14 = Temperaturabagnet
    Dd14 = Czas
    Ee14 = Slowo2
    Menulista = 0
    End If
    If Menulista = 14 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa14
    Temperatura = Bb14
    Temperaturabagnet = Cc14
    Czas = Dd14
    Slowo2 = Ee14
    Menulista = 0
    End If

    If Menulista = 15 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa15 = Slowo1
    Bb15 = Temperatura
    Cc15 = Temperaturabagnet
    Dd15 = Czas
    Ee15 = Slowo2
    Menulista = 0
    End If
    If Menulista = 15 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa15
    Temperatura = Bb15
    Temperaturabagnet = Cc15
    Czas = Dd15
    Slowo2 = Ee15
    Menulista = 0
    End If

    If Menulista = 16 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa16 = Slowo1
    Bb16 = Temperatura
    Cc16 = Temperaturabagnet
    Dd16 = Czas
    Ee16 = Slowo2
    Menulista = 0
    End If
    If Menulista = 16 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa16
    Temperatura = Bb16
    Temperaturabagnet = Cc16
    Czas = Dd16
    Slowo2 = Ee16
    Menulista = 0
    End If

    If Menulista = 17 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa17 = Slowo1
    Bb17 = Temperatura
    Cc17 = Temperaturabagnet
    Dd17 = Czas
    Ee17 = Slowo2
    Menulista = 0
    End If
    If Menulista = 17 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa17
    Temperatura = Bb17
    Temperaturabagnet = Cc17
    Czas = Dd17
    Slowo2 = Ee17
    Menulista = 0
    End If

    If Menulista = 18 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa18 = Slowo1
    Bb18 = Temperatura
    Cc18 = Temperaturabagnet
    Dd18 = Czas
    Ee18 = Slowo2
    Menulista = 0
    End If
    If Menulista = 18 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa18
    Temperatura = Bb18
    Temperaturabagnet = Cc18
    Czas = Dd18
    Slowo2 = Ee18
    Menulista = 0
    End If

    If Menulista = 19 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa19 = Slowo1
    Bb19 = Temperatura
    Cc19 = Temperaturabagnet
    Dd19 = Czas
    Ee19 = Slowo2
    Menulista = 0
    End If
    If Menulista = 19 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa19
    Temperatura = Bb19
    Temperaturabagnet = Cc19
    Czas = Dd19
    Slowo2 = Ee19
    Menulista = 0
    End If

    If Menulista = 20 And Pind.3 = 0 And Xx > 10 Then 'zapis z ram do pamięci EEPROM
    Aa20 = Slowo1
    Bb20 = Temperatura
    Cc20 = Temperaturabagnet
    Dd20 = Czas
    Ee20 = Slowo2
    Menulista = 0
    End If
    If Menulista = 20 And Pinb.4 = 0 And Yy > 5 Then 'odczyt z pamięci do ram
    Slowo1 = Aa20
    Temperatura = Bb20
    Temperaturabagnet = Cc20
    Czas = Dd20
    Slowo2 = Ee20
    Menulista = 0
    End If

    Pozdrawiam.
    Ps. Zmienna xx, lub yy powodują tylko aby przycisk dłużej i świadomie przytrzymać chcąc zaprogramować lub odczytać z pamięci.
  • Poziom 39  
    Roman Szemik napisał:
    ...Oj długi ci on.

    8-O 8-O 8-O
    Myślę że tyle wystarczy ;)
    Code:

    Dim Menulista As Byte , Xx As Byte , Yy As Byte , Slowo1 As Byte , Temperatura As Byte , Temperaturabagnet As Byte , Czas As Byte , Slowo2 As Byte

    Dim Aa(20) As Eram Byte
    Dim Bb(20) As Eram Byte
    Dim Cc(20) As Eram Byte
    Dim Dd(20) As Eram Byte
    Dim Ee(20) As Eram Byte

    Declare Sub Zrob_to_co_trza(byval Nr_menu As Byte)

    '...
    Call Zrob_to_co_trza(menulista)
    '...



    Sub Zrob_to_co_trza(byval Nr_menu As Byte)

    If Pind.3 = 0 And Xx > 10 Then
       Aa(nr_menu) = Slowo1
       Bb(nr_menu) = Temperatura
       Cc(nr_menu) = Temperaturabagnet
       Dd(nr_menu) = Czas
       Ee(nr_menu) = Slowo2
       Menulista = 0
    End If
    If Pinb.4 = 0 And Yy > 5 Then
       Slowo1 = Aa(nr_menu)
       Temperatura = Bb(nr_menu)
       Temperaturabagnet = Cc(nr_menu)
       Czas = Dd(nr_menu)
       Slowo2 = Ee(nr_menu)
       Menulista = 0
    End If

    End Sub

    A Ty co , książkę piszesz :?:

    Piotrek
  • Poziom 14  
    Witam.

    Wielkie dzięki za pomysł. Nie omieszkam go wypróbować w praktyce.
    A swoją drogą to liczba zmiennych w nawiasie (20) jest u kolegi wynikiem doświadczenia czy dogłębnego przeczytania helpa. Ja starałem się szukać pomysłu w helpie i jakoś nie natrafiłem na natchnienie. Może są jakieś podręczniki które w prosty sposób podają takie właśnie ciekawe przykłady.
    Pozdrawiam.
  • Poziom 39  
    Roman Szemik napisał:
    ...A swoją drogą to liczba zmiennych w nawiasie (20) ...

    To nie jest liczba zmiennych , tylko ilość elementów w tablicy, choć na upartego można by przyjąć , że jest to liczba zmiennych w ... zmiennej ;)
    Roman Szemik napisał:
    ...jest u kolegi wynikiem doświadczenia czy dogłębnego przeczytania helpa.

    Raczej dogłębnego zapoznania się , z Twoim listingiem :)
    Roman Szemik napisał:

    Ja starałem się szukać pomysłu w helpie i jakoś nie natrafiłem na natchnienie. Może są jakieś podręczniki które w prosty sposób podają takie właśnie ciekawe przykłady.
    Pozdrawiam.

    Trudno na to odpowiedzieć , bo gotowej recepty nie ma :(
    Jak w każdej dziedzinie , potrzebna jest jakaś tam wiedza , którą można zdobyć + doświadczenie + przeogromna ciekawość , pasja i nieustępliwość.Szczypta talentu też nie zawadzi :D

    Piotrek
  • Poziom 14  
    Witam.
    Ostatnie zdanie zabrzmiało jak przepis kulinarny dla ludzi skazanych na sukces.

    Nawiązując do sugestii kolegi wrzuciłem linijki do programiku i na nieszczęście nawet wyświetlacz lcd przestał wyświetlać, a tylko mruga pierwsza linijka. Zastanawiam się co nie tak zrobiłem. Czy linijki tego programu mają być w środku pętli do loop, czy coś ma być na początku przed pętlą? Ja próbowałem różnych miejsc i chyba sam się zapętliłem.
    Natomiast moja twórczość książkowa poprawnie zapisuje i odczytuje dane z/do ram i eeprom.
    Pozdrawiam.
  • Pomocny post
    Poziom 39  
    Roman Szemik napisał:
    ...Nawiązując do sugestii kolegi wrzuciłem linijki do programiku i na nieszczęście nawet wyświetlacz lcd przestał wyświetlać, a tylko mruga pierwsza linijka.

    Nie no , jasnowidzem to nie jestem :D Poza tym , to tylko "pomysł na ..." , a nie gotowiec.Pokaż(załącznik) cały kod , to może cosik się zaradzi :D

    Piotrek
  • Poziom 14  
    Witam ponownie.
    Jako że nigdy nie korzystałem z deklaracji sub to nie mam doświadczenia czy zapis początkowy ma być przed pętlą do loop czy wszystko razem ma być w pętli. Dlatego też proszę o pomocne słowo pisane.
    W helpie znalazłem coś na ten temat lecz nie olśniło mnie miejsce w którym ma to być wpisane.
    Jeśli będę miał pewność co do miejsca lokalizacji to spróbuję krok po kroku też coś wydedukować.

    Pozdrawiam.
  • Poziom 14  
    Veni Vidi Vici - przeczytałem, pomyślałem, wykonałem

    Dzięki za pomoc. Trochę zmieniłem pomysł, lecz cała esencja zmiennych tablicowych zasługuje na trzy allahy w twoją stronę.

    Wstawiam kod dla potomnych.
    Pozdrawiam.


    Dim Menulista As Byte , Xx As Byte , Yy As Byte , Slowo1 As Byte , Temperatura As Byte , Temperaturabagnet As Byte , Czas As Byte , Slowo2 As Byte

    Dim Aa(20) As Eram Byte
    Dim Bb(20) As Eram Byte
    Dim Cc(20) As Eram Byte
    Dim Dd(20) As Eram Byte
    Dim Ee(20) As Eram Byte


    do

    If Pind.3 = 0 And Xx > 10 Then
    gosub programowanie
    end if

    If Pinb.4 = 0 And Yy > 5 Then
    gosub odczyt
    end if

    loop

    programowanie:
    Aa(Menulista) = Slowo1
    Bb(Menulista) = Temperatura
    Cc(Menulista) = Temperaturabagnet
    Dd(Menulista) = Czas
    Ee(Menulista) = Slowo2
    Menulista = 0
    return

    odczyt:
    Slowo1 = Aa(Menulista)
    Temperatura = Bb(Menulista)
    Temperaturabagnet = Cc(Menulista)
    Czas = Dd(Menulista)
    Slowo2 = Ee(Menulista)
    Menulista = 0
    return