Zagar LCD Attiny2313 - BASCOM

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Krystian1989
-
Posty: 47
Rejestracja: 06 kwie 2007, 8:56
Lokalizacja: TBG
Kontakt:

Zagar LCD Attiny2313 - BASCOM

Post autor: Krystian1989 » 20 sie 2007, 10:51

Jest to bardzo prosty program dla zegara, choć nie za bardzo dokładny.
Proszę o pomoc w ulepszeniu kodu tak aby był bardziej dokładny, chodzi mi tu o użycie timerów .
Jestem początkujący wiec proszę o odpowiedź.

Kod: Zaznacz cały

$regfile = "attiny2313.dat"
$crystal = 4000000
Config Portd = &B1111100                                    'dwa najmłodsze bity portu D jako wejścia
Portd = &B1111111                                           'stan spoczynkowy portu D 1
Config Portb = &B11111111                                   'port B jako wyjścia
Portb = &B11111111

Config Lcd = 16 * 1a                                        'konfiguracja wyświetlacza
'piny ustawione w zakładce : Options-Compliler-LCD

Dim G As Byte                                               'konfiguracja zmiennych
Dim M As Byte
Dim S As Byte

G = 0
M = 0
S = 0

Cls
Cursor Off

Lcd "zegarek "                                              'tylko przy włączaniu
Lowerline
Lcd "by Krys "

Do                                                          'pętelka

Wait 1
Incr S
If S = 59 Then
S = 0
Incr M
End If

If M = 59 Then
M = 0
Incr G
End If

If Pind.1 = 0 Then                                          'ustawianie godzin
Incr G
End If

If Pind.0 = 0 Then                                          'ustawianie minut
Incr M
End If


Cls                                                         'wyświetlanie czasu
Cursor Off
Lcd "zegarek "
Lowerline
Lcd G ; ":" ; M ; ":" ; S


If G = 12 Then                                              'zerowanie
S = 0
M = 0
G = 0
End If
Loop

End

Awatar użytkownika
misha89
Użytkownik
Posty: 150
Rejestracja: 06 lip 2006, 17:15
Lokalizacja: Ryki
Kontakt:

Post autor: misha89 » 20 sie 2007, 12:37

Witam
W przypadku zegarów timer jest najlepszym rozwiązaniem. Spróbuj tak:

Kod: Zaznacz cały

Config timer1 = Timer , Prescale = 64
Enable Interrupts
Enable Timer1

On Timer1 Co1s

Co1s:                 ' podprogram obslugi przerwania od timra1
Timer1 = 3036    '65535-3036=62500, 62500impulsow =1s

Incr S
If S = 59 Then
S = 0
Incr M
End If

If M = 59 Then
M = 0
Incr G
End If

Return


Awatar użytkownika
Kulpina
Użytkownik
Posty: 2037
Rejestracja: 28 lip 2005, 16:57
Lokalizacja: Sanok
Kontakt:

Post autor: Kulpina » 20 sie 2007, 15:18

Krystian1989, Jeśli uczysz się programowania polecam MOŁ jest tam wszystko opisane podobny temat zegara właśnie na timerach też był poruszany. Warto zajrzeć.
Zagar LCD Attiny2313 - BASCOM
Myśle że zrobienie zegara jest jednak łatwiejsze niż projekt zagara :wink: :mrgreen:

Awatar użytkownika
Krystian1989
-
Posty: 47
Rejestracja: 06 kwie 2007, 8:56
Lokalizacja: TBG
Kontakt:

Post autor: Krystian1989 » 20 sie 2007, 17:24

Kulpina pisze:Krystian1989, Jeśli uczysz się programowania polecam MOŁ jest tam wszystko opisane podobny temat zegara właśnie na timerach też był poruszany. Warto zajrzeć.
Zagar LCD Attiny2313 - BASCOM
Myśle że zrobienie zegara jest jednak łatwiejsze niż projekt zagara :wink: :mrgreen:
Tak kolego tylko , że w MOŁ jest zegar na wyświetlaczach LED a nie na LCD.

ZbeeGin

Post autor: ZbeeGin » 20 sie 2007, 19:12

Lepszą dokładnosć uzyskałbyś stosując jakiś procesor AVR z Timer/Counter 2, który pracuje w tybie asynchronicznym. Dołączasz wtedy kwarc zegarkowy (32,768kHz) do odpowiednich pinów, ustawiasz prescaler i masz impulsy co 1s.

ODPOWIEDZ