Pilnowanie zakresów dla godzin, minut i sekund jest proste. Wystarczy napisać "If Godzina > 23 Then Godzina = 0" "If Minuta > 59 Then Minuta = 0". Analogicznie z sekundami.
Trzeba inaczej to zapisać kiedy jedziesz w dół bo poniżej zera wskakuje 255 więc piszesz "If Godzina > 23 Then Godzina = 23" "If Minuta > 59 Then Minuta = 59"
Dla enkodera powinieneś użyć osobnej zmiennej np. Dim Enc As Byte i potem Enc = Encoder...
Zegar LCD Bascom
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Zegar LCD Bascom
Łap. Gotowałem kapuśniak i w międzyczasie jak czekałem żeby mi się otworzył szybkowar machnąłem ten programik przy kawie
Nawet działa. Liczy czas, ustawia i miga kursorem
Pozdrowienia dla profesora ahahahaha
Nawet działa. Liczy czas, ustawia i miga kursorem
Pozdrowienia dla profesora ahahahaha
Code: [Zaznacz cały] [Rozwiń/Zwiń]
- $sim
- $regfile = "m32def.dat"
- $crystal = 16000000
- $hwstack = 40
- $swstack = 16
- $framesize = 32
- Dim Liczh As Byte
- Dim Liczm As Byte
- Dim Liczs As Byte
- Dim Godziny As String * 2
- Dim Minuty As String * 2
- Dim Sekundy As String * 2
- Dim Ustaw As Byte
- Dim Enc As Byte
- Dim 250ms As Byte , 1s As Byte , Mig As Byte
- Cursor Off
- Porta = 255 'podciąganie wejśc
- Funkcja_przel Alias Pina.5
- Do
- Debounce funkcja_przel , 0 , Funkcja , Sub
- Enc = Encoder(pina.7 , Pina.6 , Lewo , Prawo , 0)
- Waitms 10
- If 250ms < 24 Then
- Incr 250ms
- Else
- 250ms = 0
- If Mig = 0 Then Mig = 1 Else Mig = 0
- If Ustaw > 0 Then Gosub Pokaz_czas
- If 1s < 3 Then
- Incr 1s
- Else
- 1s = 0
- Gosub Licz_czas
- Gosub Pokaz_czas
- End If
- End If
- Loop
- End
- Licz_czas:
- Incr Liczs
- If Liczs > 59 Then
- Liczs = 0
- Incr Liczm
- If Liczm > 59 Then
- Liczm = 0
- Incr Liczh
- If Liczh > 23 Then Liczh = 0
- End If
- End If
- Return
- Pokaz_czas:
- Godziny = Str(liczh)
- Godziny = Format(godziny , "00")
- Minuty = Str(liczm)
- Minuty = Format(minuty , "00")
- Sekundy = Str(liczs)
- Sekundy = Format(sekundy , "00")
- If Mig = 1 Then
- Select Case Ustaw
- Case 1
- Godziny = "__"
- Case 2
- Minuty = "__"
- Case 3
- Sekundy = "__"
- End Select
- End If
- Locate 2 , 2 : Lcd Godziny ; ":" ; Minuty ; ":" ; Sekundy
- Return
- Lewo:
- Select Case Ustaw
- Case 1
- Decr Liczh
- If Liczh > 23 Then Liczh = 23
- Case 2
- Decr Liczm
- If Liczm > 59 Then Liczm = 59
- Case 3
- Decr Liczs
- If Liczs > 59 Then Liczs = 59
- End Select
- Mig = 0
- Gosub Pokaz_czas
- Return
- Prawo:
- Select Case Ustaw
- Case 1
- Incr Liczh
- If Liczh > 23 Then Liczh = 0
- Case 2
- Incr Liczm
- If Liczm > 59 Then Liczm = 0
- Case 3
- Incr Liczs
- If Liczs > 59 Then Liczs = 0
- End Select
- Mig = 0
- Gosub Pokaz_czas
- Return
- Funkcja:
- Incr Ustaw
- If Ustaw > 3 Then Ustaw = 0
- Return
-
- Posty: 9
- Rejestracja: 02 lut 2021, 14:05
Re: Zegar LCD Bascom
dziękuje bardzo! wszystko pięknie działa <3
jeszcze chciałbym zapytać w którym momencie kodu jest to że czas automatycznie sie odlicza? przepraszam za głupie pytania
jeszcze chciałbym zapytać w którym momencie kodu jest to że czas automatycznie sie odlicza? przepraszam za głupie pytania
- niveasoft
- Posty: 1239
- Rejestracja: 17 sie 2015, 12:13
- Kontakt:
Re: Zegar LCD Bascom
W kodzie jest wstawione opóźnienie 10ms. Normalnie robi się to Timerem. Niżej odlicza 250ms które jest potrzebne do migania. 25 x 10ms = 250ms dlatego tam dodaje do 24..
Dalej liczy 4 x te 250ms i to jest sekunda. Co sekunde wywołuje podprogram Licz_czas.
Dalej liczy 4 x te 250ms i to jest sekunda. Co sekunde wywołuje podprogram Licz_czas.
-
- Posty: 9
- Rejestracja: 02 lut 2021, 14:05
Re: Zegar LCD Bascom
super dziękuje bardzo za pomoc!!!! zaliczone dzięki Tobie