Elektroda.pl
Elektroda.pl
X
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

Błąd label not found BASCOM

grzegorz.d3 31 Jan 2011 22:31 2612 2
  • #1
    grzegorz.d3
    Level 14  
    Witam
    Mam taki programik troszke posklejany ale wyskakuje błąd co robie nie tak .
    label not found [_ENDIFO   ]

    $regfile = "m8def.dat"                                      'Atmega8
    $crystal = 8000000                                          'Kwarc 8MHz
    
    
    Config Lcd = 16 * 2
    Config Lcdpin = Pin , Db4 = Portc.2 , Db5 = Portc.1 , Db6 = Portc.0 , Db7 = Portb.5 , E = Portc.3 , Rs = Portc.4
    
    '************************************* I2C **************************************************************
    
    Config Sda = Portd.4
    Config Scl = Portd.3                                        'Złącze I2C - każda z lini podciągnięta do zasilania
    
    Config I2cdelay = 100
    '************************************* Przyciski ********************************************************
    
    Config Pind.0 = Input                                       'Zmniejsz / Lewo / Tempmax i min
    Config Pind.1 = Input                                       'Zatwierdź / menu
    Config Pind.2 = Input                                       'Zwiększ / Prawo / LCD OFF i ON
    Config Pind.0 = Input                                       'pin wejscia zapłonu
    Config Pind.1 = Input                                       'pin wejscia swiateł
    
    Config Debounce = 10
    '************************************** 1 wire **********************************************************
    Config 1wire = Portc.5                                      'Złącze do obsługi  DS18b20 podciągnięte do zasilania przy pomocy rezystora 4k7
    '************************* Obsługa Timera do Sterowania podświetlaniem **********************************
    
    Config Timer1 = Pwm , Pwm = 8 , Compare A Pwm = Clear Down , Compare B Pwm = Disconnect , Prescale = 1       'pinb.1 jest od podświetlania LCD
    
    S1 Alias Pind.0                                             'Zmniejsz / Lewo
    S2 Alias Pind.1                                             'Zatwierdź / menu
    S3 Alias Pind.2                                             'Zwiększ / Prawo
    Zaplon Alias Pind.0
    Swiatla Alias Pind.1
    Reset Zaplon                                                'ustawienie stanu niskiego
    Reset Swiatla                                               'ustawienie stanu niskiego
    
    Declare Sub Wyslij                                          'Zapisuje wartości na PCF8583
    Declare Sub Pokaz_czas                                      'Odczytuje wartości z PC88583 oraz z czujników temperatury
    
    Deflcdchar 0 , 32 , 10 , 21 , 17 , 10 , 4 , 32 , 32         ' Znak serca
    Deflcdchar 1 , 8 , 20 , 8 , 32 , 4 , 14 , 21 , 4            ' strzałka w góre
    Deflcdchar 2 , 8 , 20 , 8 , 32 , 4 , 21 , 14 , 4            ' strzałka w dół
    Deflcdchar 3 , 4 , 5 , 7 , 7 , 15 , 25 , 9 , 15             ' Dom lewy
    Deflcdchar 4 , 32 , 16 , 24 , 28 , 30 , 19 , 18 , 18        ' dom prawy
    Deflcdchar 5 , 4 , 14 , 27 , 14 , 4 , 1 , 7 , 32            ' Słońce lewe  - zmienia sie z księżycem
    Deflcdchar 6 , 32 , 32 , 32 , 14 , 31 , 30 , 28 , 32        ' Słońce prawe
    Deflcdchar 7 , 6 , 8 , 8 , 6 , 32 , 1 , 7 , 32              ' Księżyć lewy - zmienia się ze słońcem
    Deflcdchar 1 , 32 , 32 , 14 , 1 , 15 , 17 , 15 , 1          ' literka "ą"
    Deflcdchar 2 , 8 , 10 , 12 , 24 , 8 , 9 , 6 , 32            'literka "ł"
    Deflcdchar 3 , 4 , 21 , 21 , 21 , 14 , 31 , 17 , 31         'znak swiateł
    Declare Sub Poczatek
    
    
    '**************************************** Menu **********************************************************
    Dim Menutext As String * 13                                 'Tekst menu. Maksymalnie 13 znaków
    Dim J As Byte
    
    Dim Menutext2 As String * 3                                 'Tekst menu2. Maksymalnie 3 znaków
    Dim K As Byte
    Dim Ii As Byte
    Dim Jj As Byte
    Dim Kk As Byte
    Dim Ll As Byte
    
    '**************************************dodane******************************************************************
    Poczatek:
    Cls
    Ii = 9
    Jj = 2
    Do
    
    If Swiatla = 1 Then                                         'jesli swiatła włączone to pokazuje znak na wyswietlaczu swiateł
    Locate 1 , 8 : Lcd Chr(3)                                   'na pozycji 8 w wierszu pirwszym
    Else                                                        'jeslui nie to
    Locate 1 , 8 : Lcd " "                                      'wygaszenie znaku swiateł czyli spacja aby wygasic znak swiateł
    End If                                                      'bez nie potrzebnego uzywania cls czyszczenia ekranu, :nie mrugal wyswietlacz
    
    
    If Zaplon = 1 Then                                          'jesli właczony jest zapłon to przechodzi do petli i wyswietla napis włącz siatła
    
    Cls
    
    Do
    Ii = 9                                                      'początkowa wratosc pozycji na wyswietlaczu
    Jj = 2                                                      'początkowa wratosc pozycji na wyswietlaczu
    
    For Kk = 1 To 7                                             'petla wykonywana 7 razy  napis w przesuwany w lewo
      Ii = Ii - 1                                               'zmniejszanie wartości  I o 1
      If Ii < 2 Then Ii = 2
      Cls
      Locate 1 , Ii : Lcd " w" ; Chr(2) ; Chr(1) ; "cz"
      Locate 2 , Ii : Lcd "swiat" ; Chr(2) ; "a"
      Waitms 50
      If Swiatla = 1 Then                                       'jesli swiatła włączone to wyjscie z petli
      Cls
      Locate 1 , 3 : Lcd "swiat" ; Chr(2) ; "a ok"
      Locate 2 , 6 : Lcd "jazda"
      Wait 2
      Call Poczatek
      End If
    Next Ll                                                     ' do petli L
    
    
    For Ll = 1 To 7                                             'petla wykonywana 7 razy  napis w przesuwany w prawo
      Jj = J + 1                                                'zwiekszanie wartości  J o 1
      If J > 9 Then J = 9
      Cls
      Locate 1 , J : Lcd " w" ; Chr(2) ; Chr(1) ; "cz"
      Locate 2 , J : Lcd "swiat" ; Chr(2) ; "a"
      Waitms 50
      If Swiatla = 1 Then                                       'jesli swiatła włączone to wyjscie z petli
      Cls
      Locate 1 , 3 : Lcd "swiat" ; Chr(2) ; "a ok"
      Locate 2 , 6 : Lcd "jazda"
      Wait 2
      Call Poczatek
      End If
    Next
    Loop
    
    End If
    
    Loop
    '*************************************koniec*******************************************************************
    Dim S As Byte                                               'deklaracja sekund
    Dim M As Byte                                               'deklaracja minut
    Dim H As Byte                                               'deklaracja godzin
    Dim Day As Byte                                             'deklaracja dni
    Dim Month As Byte                                           'deklaracja miesiecy
    Dim Rok As Byte                                             'deklaracja roku
    
    Dim Poprzedni_miesiac As Byte                               'dodatkowa zmienna
    
    Dim A As Byte                                               'Zmienna od przesuwania ekranu startowego
    Dim W As Byte                                               'Zmienna informująca o ilości czujników DS18b20
    
    Dim Dsid1(8) As Byte                                        'deklaracja obsługi czujników DS18b20
    Dim Dsid2(8) As Byte
    Dim I1 As Integer , Ss As String * 6
    Dim I2 As Integer
    
    
    Dim P As Byte                                               'Moc świecenia podświetlania LCD w %
    Dim Pp As Byte                                              'Przechowuje wartość PWM
    
    Dim C As Byte                                               'Przechowuje wartość PWM przy uruchamianiu układu
    
    Set Portd.0
    Set Portd.1
    Set Portd.2
    
    '****************************** wartosci poczatkowe **************************************
    S = 0
    M = 0
    H = 0
    Day = 1
    Month = 1
    Readeeprom Rok , 2                                          'Czyta zaposaną wartość roku z 2 komórki pamięci EEPROM
    
    '*************************************** Ekran startowy *************************************************************
    Cls
    Cursor Off
    
    For C = 0 To 150
    Pwm1a = C                                                   'Rozjaśnianie LCD od 0 do 100 (50% PWM)
    Waitms 4
    Next C
    
    Locate 1 , 17
    Lcd ">> Duch <<"
    Locate 2 , 20
    Lcd "2008"
    
    For A = 1 To 13
    Shiftlcd Left
    Waitms 30                                                   'Schowanie tekstu
    Next A
    
    Wait 2
    
    For A = 1 To 13
    Shiftlcd Left
    Waitms 30                                                   'Schowanie tekstu
    Next A
    
    For C = 150 To 0 Step -1
    Pwm1a = C                                                   'Ściemnienie LCD od 100 do 0
    Waitms 4
    Next C
    
    Waitms 500
    Cls
    
    Locate 1 , 1
    Lcd Chr(0) ; " Zegar serce " ; Chr(0)                       'Tekst tytułowy na LCD
    
    Gosub Rozjasnianie                                          'Idzie do procedury rozjaśniania wyświetlacza
    
    Wait 2
    
    Cls
    
                                                          'koniec pętli głównej programu
    '*************************************** 1 wire ********************************************************
    
    W = 1wirecount()                                            'Informuje ile czujników jest podpiętych do układu (pojawia się tylko podczas włączania urządzenia)
    Locate 1 , 1
    Lcd "Ilosc czujnikow:"
    Waitms 500
    Locate 2 , 8
    Lcd W                                                       'Wyświetla ilość czujników
    
    Wait 3
    
    Dsid1(1) = 1wsearchfirst()                                  'Znajdź pierwszy czujnik podpięty do portu
    Dsid2(1) = 1wsearchnext()                                   'Znajdź następny czujnik podpięty do portu
    
    
    '*************************************** Pętla główna **************************************************
    '************************************* od tego miejsca w dół **********************************
    
    Pocz:
    Cls
    
    Do
    
    
    J = 4
    
    K = 1
    
    Call Pokaz_czas                                             'Pokazuje czas i temperature
    
    Debounce Pind.0 , 0 , Maxmin
    Debounce Pind.1 , 0 , Menu                                  'Naciskając S2 wchodzimy do menu
    Debounce Pind.2 , 0 , Display_off
    
    
    Loop
    
    End
    
    '********************************************************************************************************
    Sub Wyslij                                                  'Podprogram do wysyłania danych do pcf-a
    
    S = Makebcd(s)
    M = Makebcd(m)
    H = Makebcd(h)                                              'Zamiana wartości dziesiętnych na kod BCD
    Day = Makebcd(day)
    Month = Makebcd(month)
    
    I2cstart                                                    'Uruchomienie I2C
    I2cwbyte 162                                                'Wybór urządzenia do zapisu
    I2cwbyte &H02                                               'Wybór 2 rejestru do zapisu (sekundy)
    I2cwbyte S                                                  'Zapisuje sekundy
    I2cwbyte M                                                  'Zapisuje minuty
    I2cwbyte H                                                  'Zapisuje godziny
    I2cwbyte Day                                                'Zapisuje dni
    I2cwbyte Month                                              'Zapisuje miesiąc
    I2cstop                                                     'Koniec zapisu
    
    End Sub
    
    '************************************** I2C ****************************************************************
    
    Sub Pokaz_czas                                              'Pokazuje czas
    
    I2cstart
       I2cwbyte 162
       I2cwbyte &H00
       I2cwbyte &H08                                            ' włącza maskowanie roku i dnia tygodnia
       I2cstop
       I2cstart
       I2cwbyte 162
       I2cwbyte &H02
       I2cstart
       I2cwbyte 163
       I2crbyte S , Ack                                         'Odczytuje sekundy
       I2crbyte M , Ack                                         'Odczytuje minuty
       I2crbyte H , Ack                                         'Odczytuje godziny
       I2crbyte Day , Ack                                       'Odczytuje dni
       I2crbyte Month , Nack                                    'Odczutuje miesiąc
       I2cstop                                                  'koniec transmisji I2C
    
    
    '************************************** 1 wire ***************************************************************
      Do
    
      '--------konwersja temp dla wszystkich dsow
       1wreset
       1wwrite &HCC
       1wwrite &H44
       Waitms 901                                               ' czekaj na konwersję temperatury (normalnie powinno być 750,
                                                                 'ale jest ustawione na 901, aby nie kolidowało z odświeżaniem sekund)
    
     1wreset
       1wwrite &H55
       1wverify Dsid1(1)                                        'wysyłamy adres pierwszego czujnika
       1wwrite &HBE
       I1 = 1wread(2)
    '---------------------------------
       1wreset
       1wwrite &H55
       1wverify Dsid2(1)                                        'wysylam adres drugiego czujnika
       1wwrite &HBE
       I2 = 1wread(2)
     '---------------------------------
    
    
       I1 = I1 * 10                                             'Konwersja
       I1 = I1 / 16
       Ss = Str(i1)
       Ss = Format(ss , " 0.0")                                 ' Format wyświetlania
    
    
       I2 = I2 * 10                                             'Konwersja
       I2 = I2 / 16
       Ss = Str(i2)
       Ss = Format(ss , " 0.0")                                 ' Format wyświetlania
    
    
    'poniewaz dane odczytane z PCF-a sa w formacie kodu BCD, zamieniam ich wartosc na wartosc dziesietna:
    
    S = Makedec(s)
    M = Makedec(m)
    H = Makedec(h)
    Day = Makedec(day)
    Month = Makedec(month)
    
    
    '************** obsluga zmiany roku********************************************************
    If Poprzedni_miesiac <> Month Then                          'sprawdzamy czy zmienil sie miesiac
       If Month = 1 And Day = 1 And H = 0 And M = 0 And S = 0 Then       'jesli miesiac zmienil sie na styczen , to zwiekszamy rok
          Incr Rok
          Writeeeprom Rok , 2
       End If
       Poprzedni_miesiac = Month
    End If
    '*********************** Wyświetlanie danych **************************************************
    
    'Format Wyświetlania:
     Locate 1 , 1                                               'godziny
     If H < 10 Then                                             'Jeśli godzina jest mniejsza od 10 np. 7 to
       Lcd "0" ; H ; ":"                                        'dodaj przez 7 zero i wyświetl jako 07
       Else
       Lcd H ; ":"
     End If
    
     Gosub Symbol_dom
    
       Locate 2 , 11
       Lcd Chr(6)                                               'Wyświetlanie Znaku dnia i nocy (chodzi o symbol dworu)
    
       If H >= 6 And H < 21 Then
           Locate 2 , 10
           Lcd Chr(5)
           Else
           Locate 2 , 10
           Lcd Chr(7)
       End If
    
     Locate 1 , 4
       If M < 10 Then
       Lcd "0" ; M ; ":"                                        'minuty
       Else
       Lcd M ; ":"
     End If
    
     Locate 1 , 7
       If S < 10 Then
          Lcd "0" ; S ;                                         'sekundy
          Else
          Lcd ; S ;
     End If
    
     Locate 2 , 1
       If Day < 10 Then                                         'dni
          Lcd "0" ; Day ; "."
          Else
          Lcd Day ; "."
     End If
    
     Locate 2 , 4                                               'miesiąc
          If Month < 10 Then
          Lcd "0" ; Month ; "."
          Else
          Lcd Month ; "."
     End If
    
    
     If Rok > 99 Then
     Rok = 0
     Writeeeprom Rok , 2
     End If
    
     Locate 2 , 7
     If Rok < 10 Then                                           'rok
          Lcd "0" ; Rok
          Else
          Lcd Rok
     End If
    
                                              'format wyświetlania 1 czujnika ds18b20 wraz ze strzałkami
       Gosub Warunek1
       If I1 > 0 Then
       Gosub Format_wyswietlania1
       Gosub Wyswietlanie1
       Else
       Gosub Format_wyswietlania1
       Gosub Wyswietlanie1
       End If
       Else
       Gosub Warunek1
       If I1 > 0 Then
       Gosub Format_wyswietlania1
       Gosub Wyswietlanie2
       Else
       Gosub Format_wyswietlania1
       Gosub Wyswietlanie2
       End If
    
    
    
                                               'format wyświetlania 2 czujnika ds18b20 wraz ze strzałkami
       Gosub Warunek2
       If I2 > 0 Then
       Gosub Format_wyswietlania2
       Gosub Wyswietlanie1;
       Else
       Gosub Format_wyswietlania2
       Gosub Wyswietlanie1
       End If
    
       Gosub Warunek2
       If I1 > 0 Then
       Gosub Format_wyswietlania2
       Gosub Wyswietlanie2
       Else
       Gosub Format_wyswietlania2
       Gosub Wyswietlanie2
       End If
    
      If H = 23 And M = 59 And S = 59 Then
      End If
    
    End Sub
    
    
    Loop
    
    Format_wyswietlania1:
    Ss = Str(i1)
    Ss = Format(ss , " 0.0")
    Locate 1 , 12
    Return
    
    Format_wyswietlania2:
    Ss = Str(i2)
    Ss = Format(ss , "0.0")
    Locate 2 , 12
    Return
    
    Wyswietlanie1:
    Lcd Ss ; Chr(1)
    Return
    
    Wyswietlanie2:
    Lcd Ss ; Chr(2)
    Return
    
    Warunek1:
    Return
    
    Warunek2:
    
    Return
    
    Symbol_dom:
       Locate 1 , 10
       Lcd Chr(3)
       Locate 1 , 11
       Lcd Chr(4)
    Return
    '****************************************************************************************************
    Maxmin:
    Cls
    
    Do
    
    If H >= 6 And H < 21 Then
           Locate 1 , 6
           Lcd Chr(5)
           Else
           Locate 1 , 6
           Lcd Chr(7)
       End If
    
    Locate 1 , 7
    Lcd Chr(6) ; "||"
    Lowerline
    Locate 2 , 8
    Lcd "||"
    Gosub Symbol_dom
    
    Gosub Formatss
    Locate 2 , 1
    Lcd Ss
    
    Gosub Formatss
    Locate 1 , 1
    Lcd Ss
    
    
    Gosub Formatss
    Locate 2 , 13
    Lcd Ss
    
    Gosub Formatss
    Locate 1 , 13
    Lcd Ss
    
    Debounce S1 , 0 , Pocz
    
    Loop
    
    Formatss:
    Ss = Format(ss , "0.0")
    Return
    '****************************************************************************************************
    Menu:                                                       '
    
    
    Cls
    
    Menutext = Lookupstr(j , Menuopisy)                         'Wyświetla aktualnie wybraną wartość J i wyświetla ja w postaci tekstowej
    Locate 2 , 2
    Lcd Menutext
    
    
    Do
    Locate 1 , 1
    Lcd " **** MENU **** "
    
    Debounce S3 , 0 , Menuprawo
    Debounce S1 , 0 , Menulewo
    Debounce S2 , 0 , Menuenter
    
    Loop
    
    Menuenter:
    
    Cls
    Select Case J
    Case 0
     Goto Menuzegar
    Case 1                                                      ' W zależności jakie jest J, to wybiera odpowiednie menu.
     Goto Podswietlanie
    Case 2
    Case 3
    Case 4
      Goto Pocz
    End Select
    
    Menuprawo:
    'Cls
    Incr J                                                      'Wzwiększanie wartości J
    If J > 4 Then J = 0
    Goto Menu
    
    
    Menulewo:
    'Cls
    Decr J
    J = J + 1
    If J < 1 Then J = 5                                         'Zmniejszanie wartości J
    J = J - 1
    Goto Menu
    
    '********************************************* Obsługa ustawiania zegara *********************************************
    
    Menuzegar:
    
    Do
    
    If H > 23 Or M > 59 Then
    H = 0                                                       'Procedura zabezpieczająca przed błędem związanym z nieuzasadnionym
    M = 0                                                       'wzwiększaniem się godzin i minut ponad 23 godziny i ponad 59 minut
    End If
    
    Locate 1 , 3
    Lcd "USTAW ZEGAR"
    
    Locate 2 , 6
     If H < 10 Then
       Lcd "0" ; H ; ":"                                        'godziny
       Else
       Lcd H ; ":"
     End If
    
     Locate 2 , 9
       If M < 10 Then
       Lcd "0" ; M                                              'minuty
       Else
       Lcd M
     End If
    
    
    Debounce S3 , 0 , Ustawmin
    Debounce S1 , 0 , Ustawgodz
    Debounce S2 , 0 , Zatwierdz_czas
    
    
    Loop
    
    Zatwierdz_czas:
    Goto Menudata
    
    Ustawmin:
    Incr M : If M > 59 Then M = 0
    S = 0                                                       'Wziększa wartość minut
    
    Goto Menuzegar
    
    Ustawgodz:
    Incr H : If H > 23 Then H = 0                               'Wzwiększa wartość godzin
    
    Goto Menuzegar
    '********************************************* Obsługa ustawiania dnia i miesiąca *********************************************
    
    Menudata:
    
    If Day > 31 Or Month > 12 Then                              'To samo co przy godzinach
    Day = 1
    Month = 1
    End If
    
    Cls
    
    Do
    Locate 1 , 4
    Lcd "USTAW DATE"
    
    Locate 2 , 6
    If Day < 10 Then
       Lcd "0" ; Day ; "."                                      'Format wyświetlania
       Else
       Lcd Day ; "."
     End If
     Locate 2 , 9
       If Month < 10 Then
       Lcd "0" ; Month
       Else
       Lcd Month
     End If
    
    Debounce S1 , 0 , Ustawdni
    Debounce S3 , 0 , Ustawmies
    Debounce S2 , 0 , Zatwierdz_data
    
    Loop
    
    Zatwierdz_data:
    Call Wyslij
    Goto Menurok
    
    Ustawdni:
    Incr Day : If Day > 31 Then Day = 1                         'Wzwiększa wartość Dni
    Goto Menudata
    
    Ustawmies:
    Incr Month : If Month > 12 Then Month = 1                   'Wziększa wartość Miesięcy
    Goto Menudata
    '********************************************* Obsługa ustawiania roku *********************************************
    
    Menurok:
    
    Cls
    
    Do
    Locate 1 , 4
    Lcd "USTAW ROK"
    
    Locate 2 , 7
    Lcd "20"
    
    Locate 2 , 9
    If Rok < 10 Then
       Lcd "0" ; Rok ;
       Else
       Lcd Rok ;
     End If
    
    Debounce S1 , 0 , Rokminus
    Debounce S3 , 0 , Rokplus
    Debounce S2 , 0 , Zatwierdz_rok
    
    Loop
    
    Zatwierdz_rok:
    
    Writeeeprom Rok , 2                                         'Zapisuje wartość roku do EEPROMA
    Goto Menu
    
    
    Rokplus:
    Incr Rok : If Rok > 99 Then Rok = 0                         'Wzwiększa wartość Roku od 0 do 99
    Goto Menurok
    
    Rokminus:
    Rok = Rok + 1
    Decr Rok : If Rok < 1 Then Rok = 100                        'Zmniejsza wartość roku w przedziale od 99 do 0
    Rok = Rok - 1
    Goto Menurok
    
    '********************************************* Obsługa podświetlania LCD *********************************************
    
    Podswietlanie:
    Readeeprom Pp , 1
    Goto Ustaw_podsw
    '______________________________________________________________________________
    Ustaw_podsw:
    Do
    
    Pp = Pwm1a
                                                                  'Przelicza wartość PWM na procenty
    P = Pwm1a / 2
    
    Locate 1 , 2
    Lcd "PODSWIETL.LCD"
    
    If Pwm1a >= 200 Then                                        'Ograniczenie programowe maksymalnego PWM do 200 (normalnie jest 255)
    Pwm1a = 200
    End If
    
    Locate 2 , 7
     If P < 10 Then
       Lcd "  " ; P
       Else                                                     'podświetlanie w procentach
          If P < 100 Then
          Lcd " " ; P
          Else
          Lcd P
          End If
    End If
    
    Locate 2 , 10
    Lcd "%"
    
    If S1 = 0 Then
    Goto Podswietlanieminus
    End If
    
    If S3 = 0 Then
    Goto Podswietlanieplus
    End If
    
    Debounce S2 , 0 , Zatwierdz_podsw
    
    Loop
    
    Podswietlanieplus:
    Incr Pwm1a : If Pwm1a > 200 Then Pwm1a = 200                'Wzwiększa wartość Podświetlania od 0% do 100%
    Goto Podswietlanie
    
    Podswietlanieminus:
    Pwm1a = Pwm1a + 1
    Decr Pwm1a : If Pwm1a < 1 Then Pwm1a = 1                    'Zmniejsza wartość Podświetlania w przedziale od 100% do 0%
    Pwm1a = Pwm1a - 1
    Goto Podswietlanie
    
    Zatwierdz_podsw:
    Writeeeprom Pp , 1                                          'Zapis wartości podświetlania do EEPROM-a
    Goto Menu
    '********************************************* Obsługa wyłączania LCD *********************************************
    
    Display_off:
    
    Do
    
    Cls
    
    Locate 1 , 6
    Lcd "LCD OFF"
    Wait 1
    Cls
    Locate 1 , 5
    Lcd ">LCD OFF<"
    Waitms 200
    Cls
    Locate 1 , 6
    Lcd ">CD OF<"
    Waitms 200
    Cls
    Locate 1 , 7
    Lcd ">D O<"
    Waitms 200
    Cls
    Locate 1 , 8
    Lcd "> <"
    Waitms 200
    Cls
    Readeeprom Pp , 1
    
    For C = Pp To 0 Step -1
    Pwm1a = C
    Waitms 4                                                    'Zciemnianie wyświetlacza od wartości podświetlania (pp) do 0
    Next C
    
    Cls
    
    Display Off                                                 'Wyłącza wyświetlanie czegokolwiek na wyświetlaczu
    
    Goto Czekajna
    
    Loop
    '********************************************* Obsługa wyłączonego LCD *********************************************
    
    Czekajna:
    Do
    Debounce S3 , 0 , Display_on                                'Jeśli naciśniemy przycisk Menu to przechodzimy do procedury od włączania podświetlania.
    Loop
    
    '********************************************* Obsługa włączania LCD *********************************************
    
    Display_on:
    Do
    Display On
    
    Gosub Rozjasnianie                                          'Idzie do procedury rozjaśniania wyświetlacza
    
    Locate 1 , 8
    Lcd "< >"
    Waitms 200
    Cls
    Locate 1 , 7
    Lcd "<D O>"
    Waitms 200
    Cls
    Locate 1 , 6
    Lcd "<CD ON>"
    Waitms 200
    Cls
    Locate 1 , 5
    Lcd "<LCD ON >"
    Waitms 200
    Cls
    Locate 1 , 6
    Lcd "LCD ON"
    Wait 1
    
    Goto Pocz
    Loop                                                        'Idź na początek programu
    
    '********************************************* Dane *********************************************
    
    Menuopisy:
    Data " ZEGAR / DATA" , "PODSWIETL.LCD" , "    AUTOR" , "    WYJDZ"       'Nazyw menu
    
    
    Rozjasnianie:
    Readeeprom Pp , 1
    For C = 0 To Pp
    Pwm1a = C
    Waitms 4                                                    'Procedura rozjaśniania wyświetlacza od 0 do wartości PP
    Next C
  • Helpful post
    #2
    zumek
    Level 39  
    Usuń Else w wierszu nr.413