Problem z wyświetlaniem godzin

Pytania, kody i porady dotyczące nie tylko Bascom.
ODPOWIEDZ
Domin
Posty: 9
Rejestracja: 02 lut 2021, 14:05

Problem z wyświetlaniem godzin

Post autor: Domin » 04 lut 2021, 17:09

Witam, mam problem z wyświetlaniem godzin w moim zegarze. Nie mogę ustawić godzin bo na 4 się blokuję i nie wiem dlaczego, a minuty i sekundy zatrzymują się na 255, a drugim problem co próbowałem na różne sposoby to rozwiązać jest switch który poprzez kliknięcie zareaguje na przeskok z godzin na minuty... próbowałem na różne sposoby i nie działa. Nie potrafię sobie z tym poradzić
  1.  
  2. $sim
  3. $regfile = "m32def.dat"
  4. $crystal = 16000000
  5. $hwstack = 40
  6. $swstack = 16
  7. $framesize = 32
  8.  
  9. Dim Liczh As Byte
  10. Dim Liczm As Byte
  11. Dim Liczs As Byte
  12. Dim Liczba As Byte
  13. Cursor Off
  14. Config Porta = Output
  15. Porta = 255
  16.  
  17. Funkcja_przel Alias Pina.5
  18. Liczba = 0
  19.  
  20.  
  21. Deflcdchar 0,32,32,15,17,17,15,1,14' g
  22.  
  23.  
  24.  
  25. Cls
  26. Locate 1, 6
  27. Lcd "Witam"
  28. Cls
  29. Gosub Disp
  30.  
  31.  
  32. Do
  33.          Debounce funkcja_przel , 0 , Funkcja , Sub
  34.          Liczba = Encoder(pina.7 , Pina.6 , Lewo , Prawo , 0)
  35.          Waitus 150
  36. Loop
  37. End
  38.  
  39. Lewo:
  40. If Liczba = 0 Then
  41.    If Liczh > 0 Then Liczh = Liczh - 1
  42.    If Liczh < 0 Then Liczh = 24
  43.    Gosub Disp
  44. End If
  45. If  Liczba = 1 Then
  46.    If Liczm > 0 Then Liczm = Liczm - 1
  47.    If Liczm < 0 Then Liczm = 59
  48.    Gosub Disp
  49. End If
  50. If Liczba = 2 Then
  51.    If Liczs > 0 Then Liczs = Liczs - 1
  52.    If Liczs < 0 Then Liczs = 59
  53.    Gosub Disp
  54. End If
  55. Return
  56.  
  57. Prawo:
  58. If Liczba = 0 Then
  59.    If Liczh < 25 Then Liczh = Liczh + 1
  60.    If Liczh = 25 Then Liczh = 0
  61.    Gosub Disp
  62. End If
  63.  
  64. If  Liczba = 1 Then
  65.    If Liczm < 60 Then Liczm = Liczm - 1
  66.    If Liczm = 60 Then Liczm = 0
  67.    Gosub Disp
  68. End If
  69. If Liczba = 2 Then
  70.    If Liczs < 60 Then Liczs = Liczs - 1
  71.    If Liczs = 60 Then Liczs = 0
  72.    Gosub Disp
  73. End If
  74. Return
  75.  
  76. Disp:
  77. Cls
  78. Locate 1, 6
  79. Lcd "Ze"; Chr(0) ;"ar"
  80. Locate 2, 5
  81. Lcd Liczh ; ":" ; Liczm ; ":" ; Liczs
  82.  
  83. Return
  84.  
  85. Funkcja:
  86. If Liczba = 0 Then
  87.       Locate 2, 5
  88.       Cursor Blink
  89. End If
  90. If Liczba = 1 Then
  91.       Locate 2, 8
  92.       Cursor Blink
  93. End If
  94. If Liczba = 2 Then
  95.       Locate 2, 10
  96.       Cursor Blink
  97. End If
  98. If Liczba = 3 Then Gosub Zegar
  99. If Liczba = 4 Then Liczba = 0
  100. Return
  101.  
  102.  
  103. Zegar:
  104.  
  105. If Liczh < 25 Then
  106.    If Liczm < 60 Then
  107.       If Liczs < 60 Then
  108.       Liczs = Liczs + 1
  109.       Gosub Disp
  110.       Wait 1
  111.       Else
  112.          Liczm = Liczm + 1
  113.          Liczs = 0
  114.       End If
  115.    Else
  116.       Liczm = 0
  117.       Liczh = Liczh + 1
  118.    End If
  119. Else
  120.    Liczh = 0
  121. End If
  122. Return
Gdzie popełniłem błąd i jak to rozwiązać . Bardzo proszę o pomoc
ODPOWIEDZ