Wyświetlacz widmowy
Wyświetlacz widmowy
Witam. Mam pewien problem z moim wyświetlaczem umiem już wyświetlacz napisy ale chciałbym żeby wyświetlał godzinę. Próbowałem samemu coś sklecić ale nie wychodzi mi wogule. Czy mógłby mi ktoś to wyjaśnić albo podać link do listingu takiego zegara na attiny2313 może coś sam zakapuje. Z góry dziękuje.
Nie chce zakładać owego tematu wiec napisze w starym.Napisałem taki soft do zegarka miałem pod ręka tylko polski help do bascoma i soft do innego zegarka tylko na AT89C405. Proszę o pomoc i wyrozumiałość ponieważ bascoma znam bardzo krotko. Nie wyświetla tego co powinien na początku widać cyfry odlicza sekundy potem się coś rypie i już nic nie wyświetla.Z góry dziekuje.:
[ Dodano: 2009-04-12, 21:30 ]
Udało mi się odpalić ten zegar
http://www.youtube.com/watch?v=WvDUctPvtMo
ale gdy wykasowałem go z procka i wgrałem jeszcze raz już nie działał i do dziś nie działa wie ktos jak mi pomoc ? wgrałem backup nic nie grzebałem w fusach i nie ruszył ponownie
Kod: Zaznacz cały
$regfile "Attiny2313.dat"
$crystal = 1000000
Config Portb = &B11111111
Portb = &B00000000
Config Portd = &B0000000
Portd = &B1111111
Dim Sek_jedn As Byte , Sek_dzies As Byte , Min_jedn As Byte,
Dim Min_dzies As Byte , Godz_jedn As Byte , Godz_dzies As Byte
Dim A As Byte , B As Byte
Dim Licznik As Integer
Sek_jedn = 0
Sek_dzies = 0
Min_jedn = 0
Min_dzies = 0
Godz_jedn = 0
Godz_dzies = 0
A = 1.5
Config Timer0 = Timer , Prescale = 64
On Timer0 Przerwanie_co_2ms
Enable Interrupts
Enable Timer0
Timer0 = 6
Licznik = 0
Start Timer0
Do
Do
Loop Until Pind.6 = 1
If Sek_jedn = 10 Then
Sek_jedn = 0
Incr Sek_dzies
End If
If Sek_dzies = 6 Then
Sek_dzies = 0
Incr Min_jedn
End If
If Min_jedn = 10 Then
Min_jedn = 0
Incr Min_dzies
End If
If Min_dzies = 6 Then
Min_dzies = 0
Incr Godz_jedn
End If
If Godz_jedn = 10 Then
Godz_jedn = 0
Incr Godz_dzies
End If
If Godz_dzies = 2 Then
Godz_dzies = 0
Godz_jedn = 0
End If
'%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
If Sek_jedn = 0 Then
Gosub Zero
End If
If Sek_jedn = 1 Then
Gosub Jeden
End If
If Sek_jedn = 2 Then
Gosub Dwa
End If
If Sek_jedn = 3 Then
Gosub Trzy
End If
If Sek_jedn = 4 Then
Gosub Cztery
End If
If Sek_jedn = 5 Then
Gosub Piec
End If
If Sek_jedn = 6 Then
Gosub Szesc
End If
If Sek_jedn = 7 Then
Gosub Siedem
End If
If Sek_jedn = 8 Then
Gosub Osiem
End If
If Sek_jedn = 9 Then
Gosub Dziewiec
End If
'############################
If sek_dzies = 0 Then
Gosub Zero
End If
If Sek_dzies = 1 Then
Gosub Jeden
End If
If Sek_dzies = 2 Then
Gosub Dwa
End If
If Sek_dzies = 3 Then
Gosub Trzy
End If
If Sek_dzies = 4 Then
Gosub Cztery
End If
If Sek_dzies = 5 Then
Gosub Piec
End If
If Sek_dzies = 6 Then
Gosub Szesc
End If
If Sek_dzies = 7 Then
Gosub Siedem
End If
If Sek_dzies = 8 Then
Gosub Osiem
End If
If Sek_dzies = 9 Then
Gosub Dziewiec
End If
'***********************************
If Min_jedn = 0 Then
Gosub Zero
End If
If Min_jedn = 1 Then
Gosub Jeden
End If
If Min_jedn = 2 Then
Gosub Dwa
End If
If Min_jedn = 3 Then
Gosub Trzy
End If
If Min_jedn = 4 Then
Gosub Cztery
End If
If Min_jedn = 5 Then
Gosub Piec
End If
If Min_jedn = 6 Then
Gosub Szesc
End If
If Min_jedn = 7 Then
Gosub Siedem
End If
If Min_jedn = 8 Then
Gosub Osiem
End If
If Min_jedn = 9 Then
Gosub Dziewiec
End If
'$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$$
If Min_dzies = 0 Then
Gosub Zero
End If
If Min_dzies = 1 Then
Gosub Jeden
End If
If Min_dzies = 2 Then
Gosub Dwa
End If
If Min_dzies = 3 Then
Gosub Trzy
End If
If Min_dzies = 4 Then
Gosub Cztery
End If
If Min_dzies = 5 Then
Gosub Piec
End If
If Min_dzies = 6 Then
Gosub Szesc
End If
If Min_dzies = 7 Then
Gosub Siedem
End If
If Min_dzies = 8 Then
Gosub Osiem
End If
If Min_dzies = 9 Then
Gosub Dziewiec
End If
'&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&&
If godz_jedn = 0 Then
Gosub Zero
End If
If Godz_jedn = 1 Then
Gosub Jeden
End If
If Godz_jedn = 2 Then
Gosub Dwa
End If
If Godz_jedn = 3 Then
Gosub Trzy
End If
If Godz_jedn = 4 Then
Gosub Cztery
End If
If Godz_jedn = 5 Then
Gosub Piec
End If
If Godz_jedn = 6 Then
Gosub Szesc
End If
If Godz_jedn = 7 Then
Gosub Siedem
End If
If Godz_jedn = 8 Then
Gosub Osiem
End If
If Godz_jedn = 9 Then
Gosub Dziewiec
End If
'@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@
If Godz_dzies = 1 Then
Gosub Jeden
End If
If Godz_dzies = 2 Then
Gosub Jeden
End If
Loop
End
Przerwanie_co_2ms:
Counter0 = Counter0 + 6
Incr Licznik
If Licznik = 500 Then
Licznik = 0 'wyzeruj zmienną licznik
Incr Sek_jedn
End If
Return
Odstep:
Delay : Delay
Zero:
Portb = 255
Waitms A
Portb = 129
Waitms A
Portb = 129
Waitms A
Portb = 255
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Jeden:
Portb = 4
Waitms A
Portb = 2
Waitms A
Portb = 255
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Dwa:
Portb = 249
Waitms A
Portb = 137
Waitms A
Portb = 137
Waitms A
Portb = 143
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Trzy:
Portb = 129
Waitms A
Portb = 137
Waitms A
Portb = 137
Waitms A
Portb = 255
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Cztery:
Portb = 15
Waitms A
Portb = 8
Waitms A
Portb = 252
Waitms A
Portb = 8
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Piec:
Portb = 143
Waitms A
Portb = 137
Waitms A
Portb = 137
Waitms A
Portb = 249
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Szesc:
Portb = 255
Waitms A
Portb = 145
Waitms A
Portb = 145
Waitms A
Portb = 241
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Siedem:
Portb = 1
Waitms A
Portb = 241
Waitms A
Portb = 9
Waitms A
Portb = 7
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Osiem:
Portb = 255
Waitms A
Portb = 137
Waitms A
Portb = 137
Waitms A
Portb = 255
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return
Dziewiec:
Portb = 143
Waitms A
Portb = 137
Waitms A
Portb = 137
Waitms A
Portb = 255
Waitms A
Portb = 0
Waitms A
Gosub Odstep
return[ Dodano: 2009-04-12, 21:30 ]
Udało mi się odpalić ten zegar
http://www.youtube.com/watch?v=WvDUctPvtMo
ale gdy wykasowałem go z procka i wgrałem jeszcze raz już nie działał i do dziś nie działa wie ktos jak mi pomoc ? wgrałem backup nic nie grzebałem w fusach i nie ruszył ponownie
Ten program jest dłuuuugi... Za długi. Z tego co wiem jeśli w warunku IF jest tylko jedna komenda to nie trzeba pisać End If. Wtedy zamiast
Możesz zrobićZrób tak, będzie 4x krócej i na pewno bardziej czytelnie. Lepiej używaj tabulatorów.
[edit]
Twój program ma 430 linii kodu. Mój program do zegarka widmowego, na ten sam procesor i też w bascomie (tutaj program) ma 130 linii z czego 35 to procedury obsługi i2c. Popracuj nad skróceniem tego bo nie sposób to ogarnąć
Kod: Zaznacz cały
If Sek_jedn = 2 Then
Gosub Dwa
End If
If Sek_jedn = 3 Then
Gosub Trzy
End If
If Sek_jedn = 4 Then
Gosub Cztery
End If Kod: Zaznacz cały
If Sek_jedn = 2 Then Gosub Dwa
If Sek_jedn = 3 Then Gosub Trzy
If Sek_jedn = 4 Then Gosub Cztery
...itd[edit]
Twój program ma 430 linii kodu. Mój program do zegarka widmowego, na ten sam procesor i też w bascomie (tutaj program) ma 130 linii z czego 35 to procedury obsługi i2c. Popracuj nad skróceniem tego bo nie sposób to ogarnąć
Przecież udostępniłem, w poście wyżej jest link ... A tu masz całość: http://c4r0.skrzynka.org/_hv/index.php? ... /pendclock
Zrobiłem według swojego pomysłu ale jakoś nie działa mam pytanie na schemacie katody diod sa połączone do portów a w listingu jest napisane:
Jeśli diody sa w ten sposób podłączone to chyba powinien być wejściem ?
Mam jeszcze prośbę czy mógłby mi ktoś wy komentować kod? Trochę zagmatwane jest ja jako początkujący nie bardzo go rozumiem ( rozumiem co znaczą poszczególne funkcje ale nie łapie całości)
Kod: Zaznacz cały
$crystal = 12000000
Config Scl = Portd.1
Config Sda = Portd.0
Config I2cdelay = 10
Config Portb = Output
Portb = 127
Mam jeszcze prośbę czy mógłby mi ktoś wy komentować kod? Trochę zagmatwane jest ja jako początkujący nie bardzo go rozumiem ( rozumiem co znaczą poszczególne funkcje ale nie łapie całości)
Nie. Kierunek przepływu prądu nie ma znaczenia. To czy port jest wejściem czy wyjściem określa kierunek przepływu informacji - albo procesor będzie odczytywał stan portu (wtedy jest wejściem) albo będzie ustawiał jego stan (wtedy jest wyjściem). Działanie programu jest dość zagmatwane (głównie chodzi o fragment pod etykietą 'Go'), załatw sobie artykuł z EP ten który podałem wyżej, tam jest to opisane. Tak właściwie to nawet nie powinienem tutaj tego tłumaczyć skoro dałem to do czasopismakaliska5 pisze:na schemacie katody diod sa połączone do portów a w listingu jest napisane:Jeśli diody sa w ten sposób podłączone to chyba powinien być wejściem ?Kod: Zaznacz cały
$crystal = 12000000 Config Scl = Portd.1 Config Sda = Portd.0 Config I2cdelay = 10 Config Portb = Output Portb = 127