Prosty zegar

0

Witam , napisałem prosty zegar dla mikroukładu z procesorem a1280. Wszystko działało pięknie dopóki nie dopisałem procedur odpowiedzialnych za ustawienie tego zegara, kompilator (BASCOM-AVR) wywala błędy, które nic mi nie mówią. Proszę o analizę, będe wdzięczny za wszelką pomoc, pozdrawiam.

 





$regfile = "m1280def.dat"
$crystal = 4000000
$sim
$hwstack = 40
$swstack = 16
$framesize = 32

Declare Sub Ustaw                                           'podprogram ustawiający zegar

Dim S As Byte                                               'zmienna sekund
Dim M As Byte                                               'zmienna minut
Dim H As Byte                                               'zmeinna godzin
Dim Key As Byte                                             'zmienna klawisza z klawiatury



Do
   Key = Getkbd()
   If Key = 3 Then : Call Ustaw : End If                    'jesli kliknięto A to ustaw zegar
   Wait 1
   Incr S
   If S >= 59 Then
      S = 0
      Incr M
      If M >= 59 Then
         M = 0
         Incr H
         If H >= 24 Then H = 0
      End If
   End If
   Locate 1 , 1
   If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
   If M < 10 Then : Lcd "0" : End If : Lcd M ; ":"
   If S < 10 Then : Lcd "0" : End If : Lcd S ;
Loop
End                                                         'end program


Sub Ustaw
   Do
      Locate 2 , 1
      Lcd "podaj godzine   "
      Locate 1 , 1
      Lcd "__:__:__        "
      H = Getkbd()
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":__:__        "
      Key = Getkbd()
      If Key = 7 Then Exit Do
   Loop

   Do
      Locate 2 , 1
      Lcd "podaj minuty    "
      Locate 1 , 1
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":__:__        "
      M = Getkbd()
      If M < 10 Then : Lcd "0" : End If : Lcd M ; ":__           "
      Key = Getkbd()
      If Key = 7 Then Exit Do
   Loop

   Do
      Locate 2 , 1
      Lcd "podaj minuty    "
      Locate 1 , 1
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
      If M < 10 Then : Lcd "0" : End If : Lcd M ; ":__           "
      S = Getkbd()
      If S < 10 Then : Lcd "0" : End If : Lcd S ; ":__           "
      Key = Getkbd()
      If Key = 7 Then Exit Do
   Loop

   Cls
   Locate 1 , 1
   Lcd "ustawiono na    "
   Locate 2 , 1
   Lcd H ; ":" ; M ; ":" ; S
   Wait 3
End Sub


0

wklej treść tych błędów

0

Oto błędy http://www.sendspace.com/file/r1du1k, sory, że tak ale nie mogę kopiować błędów z kompilatora :D

0

Sam znalazłem problem, pod deklaracjami powinna być konfiguracja klawiatury "Config Kbd = Portc ". Procedura ustawiająca też nie działała najlepiej, za czas podstawiała ID klawisza a nie jego wartość, zmieniłem sposób podawania czasu. Wszystko działa, sprawdzone. Podaje kod, może komuś się przyda, pozdrawiam.

 
$regfile = "m128def.dat"
$crystal = 8000000
$sim

Config Kbd = Portc
Declare Sub Ustaw


Dim S As Byte
Dim M As Byte
Dim H As Byte
Dim I As Byte
Dim Key As Byte


Cls


Do
   Key = Getkbd()
   If Key = 3 Then : Call Ustaw : End If
   Wait 1
   Incr S
   If S >= 59 Then
      S = 0
      Incr M
      If M >= 59 Then
         M = 0
         Incr H
         If H >= 24 Then H = 0
      End If
   End If
   Locate 1 , 1
   If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
   If M < 10 Then : Lcd "0" : End If : Lcd M ; ":"
   If S < 10 Then : Lcd "0" : End If : Lcd S ;
Loop
End

Sub Ustaw
   Do
      Locate 2 , 1
      Lcd "podaj godzine   "
      Locate 1 , 1
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":__:__        "
      Key = Getkbd()
      If Key = 12 Then
         Decr H
         If H >= 24 Then H = 0
         Locate 1 , 1
         If H < 10 Then : Lcd " " : End If : Lcd H ; ":__:__        "
      End If
      If Key = 14 Then
         Incr H
         If H >= 24 Then H = 0
         Locate 1 , 1
         If H < 10 Then : Lcd " " : End If : Lcd H ; ":__:__        "
      End If
      If Key = 7 Then Exit Do
   Loop

   Do
      Locate 2 , 1
      Lcd "podaj minuty    "
      Locate 1 , 1
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
      If M < 10 Then : Lcd "0" : End If : Lcd M ; ":__       "
      Key = Getkbd()
      If Key = 12 Then
         Decr M
         If M >= 59 Then M = 0
         Locate 1 , 1
         If M < 10 Then : Lcd "0" : End If : Lcd M ; ":__       "
      End If
      If Key = 14 Then
         Incr M
         If M >= 59 Then M = 0
         Locate 1 , 1
         If M < 10 Then : Lcd "0" : End If : Lcd M ; ":__       "
      End If
      If Key = 7 Then Exit Do
   Loop

   Do
      Locate 2 , 1
      Lcd "podaj sekundy   "
      Locate 1 , 1
      If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
      If M < 10 Then : Lcd "0" : End If : Lcd M ; ":"
      If S < 10 Then : Lcd "0" : End If : Lcd S ;
      Key = Getkbd()
      If Key = 12 Then
         Decr S
         If S >= 59 Then S = 0
         Locate 1 , 1
         If S < 10 Then : Lcd "0" : End If : Lcd S ;
      End If
      If Key = 14 Then
         Incr S
         If S >= 59 Then S = 0
         Locate 1 , 1
         If S < 10 Then : Lcd "0" : End If : Lcd S ;
      End If
      If Key = 7 Then Exit Do
   Loop

   Cls
   Locate 1 , 1
   Lcd "ustawiono na    "
   Lowerline
   If H < 10 Then : Lcd " " : End If : Lcd H ; ":"
   If M < 10 Then : Lcd "0" : End If : Lcd M ; ":"
   If S < 10 Then : Lcd "0" : End If : Lcd S ;
   Wait 5
   Locate 1 , 1
   Lcd "                "
   For I = 1 To 3
      Locate 1 , 1
      Lcd "powrot za " ; I ; " sec"
      Incr I
      Wait 1
   Next
   Cls
End Sub

1 użytkowników online, w tym zalogowanych: 0, gości: 1