Choď na obsah Choď na menu
 

PIC9

Škola programování PIC 9

Světelný had a ti další

Teď, když už umíme čekací smyčky, můžeme se pustit do světelné efekty. Jednoduchý blikač byl popsán v minulém díle tak teď padla volba na klasicky Světelný had. Má 8 LED diod připojených přes rezistory na PORTB. Níže je schéma zapojení, na kterém je ještě z minula používané tlačítko. To jsem tam nechal záměrně, uvidíte později, ale teď ho tam dávat nemusíte.

Program je již trochu větší, proto ho zde nebudu zobrazovat jako obrázek a jen text nemá smysl, protože by byl hrozně rozházený. Ale zrovna ho tu tedy rozeberu a podrobně popíšu.

LIST P=16F627
INCLUDE<P16F627.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _MCLRE_OFF & _BODEN_OFF & _LVP_OFF & _INTRC_OSC_NOCLKOUT

CISLO equ 20h
CISLOA equ 21h

#DEFINE TLAC PORTA,0

Takže začínáme více méně klasicky. Nejprve jsou informace pro programátor, poté se pojmenují používané registry a poté i samotné bity (TLAC zde sice není použito, ale později bude).

org 00h
goto START

V programu je použit takzvaný podprogram CEKEJ. Jde o to, že by jsme za každou LED museli dělat stejnou čekací smyčku. Tak se udělá jen jedna a ta se pak vždy zavolá příkazem CALL CEKEJ.
Mimochodem: Z podprogramu se můžete dalším příkazem CALL dostat do dalšího podprogramu (hlouběji). Tento typ procesoru umožňuje až osminásobné vnoření. Z jednotlivých podprogramů se však taky musíte vrátit zpět příkazy RETURN.
Podprogramy však musí být v programu uvedeny ze začátku, ještě před samotným programem, proto se tímto příkazem na první řádek programu (kde procesor začíná) vloží odkaz na záložku START, kde začíná vlastní program. Poté se uvedou všechny podprogramy a až po nich je vlastní program začínající právě záložkou START

CEKEJ CLRF CISLO
    MOVLW 150
    MOVWF CISLOA
    CEKEJ2 INCFSZ CISLO,1
    GOTO CEKEJ2
    DECFSZ CISLOA,1
    GOTO CEKEJ2
    RETURN

Již zmiňovaný a v minulém díle popsaný podprogram na zpoždění mezi jednotlivými kroky. Změnou čísla 150 můžete změnit rychlost blikání.

START MOVLW B'00000111'
    MOVWF CMCON
    BSF STATUS,RP0
    MOVLW B'00000001'
    MOVWF TRISA
    CLRF TRISB
    BCF STATUS,RP0

Zde začíná vlastní program. Nastaví se zde vstupy a výstupy.

ZNOVU MOVLW B'00000001'
    MOVWF PORTB
    CALL CEKEJ

    MOVLW B'00000010'
    MOVWF PORTB
    CALL CEKEJ

No a tohle je již část programu, který mění rozsvícené LED diody. Celý ho nejdete v souboru s tímto programem. Čísla, ukládaná do PORTB jsou pro lepší přehlednost v binárním tvaru. Požadovaná hodnota se uloží do PORTB a zavolá se podprogram CEKEJ.

Zde je celý program Světelný had ke stažení:

ASM
HEX

Samozřejmě si můžete libovolně měnit vkládané binární hodnoty, přidávat nebo ubírat počet kroků a tím měnit světelný efekt. Nevýhodou je nemožnost plynulé změny rychlosti blikání přímo za běhu. Co ale při programování místo interního oscilátoru nastavit externí RC člen (jeho vzhled je v lekci 5) a místo pevného odporu dát potenciometr.

Světelný had s tlačítkem

V úvodu jsem se zmínil o tlačítku co je ve schématu uvedeno, ale není použito. Co ale do programu dát několik světelných efektů najednou a tím tlačítkem je postupně přepínat. To není nic těžkého jen se tlačítko musí snímat za každým "světelným" krokem.
Je zde tedy ke stažení další ukázkový program, který má v sobě dva světelné programy přepínajícíse stiskem tlačítka.

ASM
HEX