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í:
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.