Pytania, kody i porady dotyczące nie tylko Bascom.
-
niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 04 lut 2021, 17:44
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...
-
niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 04 lut 2021, 18:41
Ł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
$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
-
Domin
- Posty: 9
- Rejestracja: 02 lut 2021, 14:05
Post
autor: Domin » 04 lut 2021, 19:19
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
-
niveasoft
- Posty: 1313
- Rejestracja: 17 sie 2015, 12:13
-
Kontakt:
Post
autor: niveasoft » 04 lut 2021, 19:26
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.
-
Domin
- Posty: 9
- Rejestracja: 02 lut 2021, 14:05
Post
autor: Domin » 04 lut 2021, 19:52
super dziękuje bardzo za pomoc!!!! zaliczone dzięki Tobie