Obrázek   
Přihlášení
Uživatelské jméno:

Heslo:

Pamatovat si mne



Zapomenuté heslo

Nová registrace
Kam dále?
Hledání
Vzhled

(3 vzhledů)
Kdo je Online
11 uživatel(ů) je online (1 uživatel(ů) si prohlíží Články a povídání)

Uživatelé: 0
Hosté: 11

více...
Noví uživatelé
Kubrt
Kubrt
16.04.2024
Mirek
Mirek
14.04.2024
POKEC
POKEC
21.03.2024
Luigi
Luigi
14.03.2024
zirafak
zirafak
26.02.2024
rorejs
rorejs
27.12.2023
maroš
maroš
07.11.2023
vlada
vlada
17.09.2023
VIKIRYCH
VIKIRYCH
28.12.2022
jiang
jiang
13.12.2022
Kdo za co může
Administrátorka
Žirafka
Žirafka
Žirafička
Žirafička
Redaktoři
bernard
bernard
IvanH
IvanH
 
Emeritní
KatyH
KatyH

Odp: Vědecké hodiny

Napsal/a: Žirafka  Publikováno dne: 12.11.2015 20:27:07

Pokud někdo zvládá "C" tak by snad mohl zmáknout i Basic

Jinak řízení jasu je jen dvoustupňové, vstup se buď nechá volný a nebo se připojí na zem a tím se jas sníží. To funguje tak, že se poněkud zpomalí běh multiplexu. Při malém jasu diody svítí 500 µs a pak jsou 200 µs zhasnuté. Pokud je nastavený velký jas, tak diody svítí o 800 µs déle a to je celý trik s řízením jasu. Je to v podprogramu Preruseni_c0 ktery obsluhuje přerušení od časovače. Konkrétně se jedná o část na řádku 378 zdrojového souboru.

Preruseni_c0:

     
Tcnt0 128
     Incr Pozice                                            
' Chci zobrazit dalsi sloupecek

     If Pozice = 7 Then                                     ' 
Pokud jsem na 7 pozicije to uz moc a musim od zacatku
        Pozice 
1                                          ' protoze hodiny maji jen 6 pozic
        Rotate Sloupec , Left , 2                           ' 
Posunuti sloupce takaby se zacinalo opet od jednotek sekund
     End 
If                                                 ' kvuli zapojeni HW

     Pom2 = Portb And &B00000011                            ' 
Ulozim si hodnotu tech bituktere z portu chci nechat
     Pom3 
Sloupec And &B11111100                          ' Ze promenne SLOUPEC vypustim bitu, ktere chci na portu uchovat

     Portb = Pom2 Or Pom3                                   ' 
Na port se vrati hodnota SLOUPEC BEZ zmeny bituktere chci nechat
                                                            
'
     Portd = &B00000111 + Displej(pozice)                   ' 
Zobrazeni cislice
     
If Jas 1 Then Waitus 800                             ' Zpozdeni multiplexu sloupecku, urcuje jas
     Waitus 500                                             ' 
maly jas je vzdy
     Portd 
= &B00000111                                     ' Zhasnuti displeje
     Waitus 200                                             ' 
a chvilku pockamTahle cast zabrani "duchum" na displeji
     Rotate Sloupec 
Left 1                              ' Posunuti zobrazovaneho sloupce

Return



Úprava programu není složitá, proto je psaný v Basicku A co se týče zhasnutí diod při výpadku napájení, tak by to znamenalo mírnou změnu zapojení, protože v tom současném procesor neví z kterého zdroje běží a proto se podle toho nemůže rozhodovat. Řešením by bylo zrušení regulace jasu a přivedení napětí odvozeného z hlavního napájení na tento pin. Přes diodu, nebo nějakým jiným vhodným způsobem. Program by se pak musel upravit tak, aby při logické nule na tomto vstupu hnedka opustil toto přerušení a pak by se toho nemuselo měnit tolik. Teďka mne z hlavy napadá toto řešení:

Preruseni_c0

     If 
Jas 0 Then Return ' Pokud není hlavní napájení, opustím přerušení a tím zhasnu displej

     Tcnt0 = 128 
     Incr Pozice                                            ' 
Chci zobrazit dalsi sloupecek

     
If Pozice 7 Then                                     ' Pokud jsem na 7 pozici, je to uz moc a musim od zacatku
        Pozice = 1                                          ' 
protoze hodiny maji jen 6 pozic
        Rotate Sloupec 
Left 2                           ' Posunuti sloupce tak, aby se zacinalo opet od jednotek sekund
     End If                                                 ' 
kvuli zapojeni HW

     Pom2 
Portb And &B00000011                            ' Ulozim si hodnotu tech bitu, ktere z portu chci nechat
     Pom3 = Sloupec And &B11111100                          ' 
Ze promenne SLOUPEC vypustim bituktere chci na portu uchovat

     Portb 
Pom2 Or Pom3                                   ' Na port se vrati hodnota SLOUPEC BEZ zmeny bitu, ktere chci nechat
                                                         '
     
Portd = &B00000111 Displej(pozice)                   ' Zobrazeni cislice                   
     Waitus 1200   ' 
Zpozdeni multiplexu sloupeckuurcuje jas                                          ' maly jas je vzdy
     Portd = &B00000111                                     ' 
Zhasnuti displeje
     Waitus 200                                             
' a chvilku pockam. Tahle cast zabrani "duchum" na displeji
     Rotate Sloupec , Left , 1                              ' 
Posunuti zobrazovaneho sloupce

Return


Úpravu prosím brát bez záruky, píši ji z hlavy a to se musím probírat vlastním kódem, což je po takové době dosti složitý proces
Odeslat komentář
Pravidla komentářů*
Všechny komentáře se automaticky schválí.
Nadpis*
Jméno*
Email*
Webová stránka*
Ikona zprávy*
       
Zpráva*


    


Klikněte na Náhled a uvidíte sami.
Možnosti*
 
 
 
Potvrzovací kód*
Kolik je 2 + 8 ?  
Slovem napište výsledek tohoto příkladu.
Maximální počet pokusů je omezen na 4.

Pomůcka: nula, jedna, dvě, tři, čtyři, pět, šest, sedm, osm, devět, deset, jedenáct, dvanáct, třináct, čtrnáct, patnáct, šestnáct, sedmnáct, osmnáct, devatenáct.
 
Obrázek Obrázek
ObrázekObrázekObrázekObrázekObrázek
Obrázek
Redakční systém XOOPS 2.5.10
Obsah © 2008-2020 Žirafoviny