Ten temat przewinął się już ze 100 razy ale i tak nie mogę doczytać się odpowiedzi. Napisałem taki program ale zegarek ten nie odmierza dokładnie sekundy. Czy może ktoś to zgrabnie uzupełnić o obsługe timerka i podpiętego kwarca 32,768kHz ? A może jeszce jakiś mały zrzut ekranu jak ustawić wówczas fusebity w Bascomie na ten zewnętrzny kwarc.
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcd = 16 * 2
Cursor Off
Cls
Dim Sekunda As Byte
Dim Minuta As Byte
Dim Godzina As Byte
Dim Dzien As Byte
Cls
Dzien = 1
If Dzien = 1 Then
Locate 2 , 3
Lcd "Poniedzialek"
End If
Do
Set Pinc.4
Set Pinc.3
Set Pinc.2
If Dzien = 1 Then
Locate 2 , 3
Lcd "Poniedzialek"
End If
Wait 1 ' Odliczamy sekunde
Incr Sekunda ' Odliczmy sekunde
If Sekunda = 60 Then
Sekunda = 0
Incr Minuta
Cls
End If
If Minuta = 60 Then
Minuta = 0
Incr Godzina
Cls
End If
If Godzina = 24 Then
Godzina = 0
Incr Dzien
Cls
End If
If Dzien = 2 Then
Locate 2 , 6
Lcd "Wtorek"
End If
If Dzien = 3 Then
Locate 2 , 6
Lcd "Sroda"
End If
If Dzien = 4 Then
Locate 2 , 5
Lcd "Czwartek"
End If
If Dzien = 5 Then
Locate 2 , 6
Lcd "Piatek"
End If
If Dzien = 6 Then
Locate 2 , 6
Lcd "Sobota"
End If
If Dzien = 7 Then
Locate 2 , 4
Lcd "Niedziela"
End If
If Dzien = 8 Then
Dzien = 1
End If
If Pinc.4 = 0 Then
Waitms 25
Cls
Incr Minuta
End If
If Pinc.3 = 0 Then
Waitms 25
Cls
Incr Godzina
End If
If Pinc.2 = 0 Then
Waitms 25
Cls
Incr Dzien
End If
Locate 1 , 4 : Lcd Hex(makebcd(godzina)) ; ":" ; Hex(makebcd(minuta)) ; ":" ; Hex(makebcd(sekunda));
Loop
$regfile = "m8def.dat"
$crystal = 1000000
Config Lcdpin = Pin , Db4 = Portb.2 , Db5 = Portb.3 , Db6 = Portb.4 , Db7 = Portb.5 , E = Portb.1 , Rs = Portb.0
Config Lcd = 16 * 2
Cursor Off
Cls
Dim Sekunda As Byte
Dim Minuta As Byte
Dim Godzina As Byte
Dim Dzien As Byte
Cls
Dzien = 1
If Dzien = 1 Then
Locate 2 , 3
Lcd "Poniedzialek"
End If
Do
Set Pinc.4
Set Pinc.3
Set Pinc.2
If Dzien = 1 Then
Locate 2 , 3
Lcd "Poniedzialek"
End If
Wait 1 ' Odliczamy sekunde
Incr Sekunda ' Odliczmy sekunde
If Sekunda = 60 Then
Sekunda = 0
Incr Minuta
Cls
End If
If Minuta = 60 Then
Minuta = 0
Incr Godzina
Cls
End If
If Godzina = 24 Then
Godzina = 0
Incr Dzien
Cls
End If
If Dzien = 2 Then
Locate 2 , 6
Lcd "Wtorek"
End If
If Dzien = 3 Then
Locate 2 , 6
Lcd "Sroda"
End If
If Dzien = 4 Then
Locate 2 , 5
Lcd "Czwartek"
End If
If Dzien = 5 Then
Locate 2 , 6
Lcd "Piatek"
End If
If Dzien = 6 Then
Locate 2 , 6
Lcd "Sobota"
End If
If Dzien = 7 Then
Locate 2 , 4
Lcd "Niedziela"
End If
If Dzien = 8 Then
Dzien = 1
End If
If Pinc.4 = 0 Then
Waitms 25
Cls
Incr Minuta
End If
If Pinc.3 = 0 Then
Waitms 25
Cls
Incr Godzina
End If
If Pinc.2 = 0 Then
Waitms 25
Cls
Incr Dzien
End If
Locate 1 , 4 : Lcd Hex(makebcd(godzina)) ; ":" ; Hex(makebcd(minuta)) ; ":" ; Hex(makebcd(sekunda));
Loop