Škola programování PIC 1.
V tomto seriálu se pokusím vysvětlit funkci procesorů PIC (především se zaměřením na oblíbený typ 16F84) a jejich programování tak, aby to pochopili i úplní začátečníci.
Než začneme, je potřeba vysvětlit některé základní věci:
1) jaký je rozdíl
mezi BITEM a BYTEM
1 BIT = jedna logická hodnota, tedy buď logická 0 (0V), nebo
logická jednička 1 (5V)
1 BYT = [jeden bajt] 8 bitů, neboli osm logických hodnot. Například
10100101, nebo 00101101 atd.
2) základní číselné
soustavy a jejich převod
Před programováním potřebujeme znát alespoň tři základní
soustavy: binární, hexadecimální a dekadickou.
Tak nejprve dekadická, neboli desítková. To je ta, co běžně používáme (1, 5, 28, 247,…) a jistě ji všichni dobře známe.
Jako další bych popsal binární (dvojkovou) soustavu. S ní jsme se dnes již také setkali. Je to ta, která obsahuje pouze jedničky a nuly (například číslo "10011101b" (b=binární)). Její převod na běžnou dekadickou soustavu je jednoduchý a je naznačen na obrázku. Vezme se binární číslo a od zadu (zprava) se nad každý jeho znak napíše jeho hodnota. Začíná se číslem 1 a pokračuje se vždy násobky dvěma: 1, 2, 4, 8, 16,… Poté se již jen sečtou hodnoty čísel, pod kterými je jednička (na obrázku jsou pro jistotu podtrženy).
Poslední je hexadecimální (šestnáctková) soustava. Ta obsahuje jen tyto znaky: 0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F. Ano, obsahuje jen 16 znaků, načež dvouciferná čísla (10 a výše) jsou nahrazeny písmeny ze začátku abecedy. Tak například 9h a další je Ah, častěji ale dvouciferná jako třeba B5h (h=hexa). A její převod z binární soustavy se provádí podobně jako převod na dekadickou soustavu, jen s tím rozdílem, že se převádí binární čísla po čtyřech bitech (0000b). Opět se zprava nad každý bit napíše jeho hodnota (1,2,4,8) a opět se sečtou ty hodnoty, pod nimiž je jednička. Pokud vyjde číslo jako 5, 8 a podobně, je vše v pořádku. Pokud ale vyjde číslo 10 až 15, musí se ještě převést na jedno písmeno ze začátku abecedy (10=A, 11=B, 12=C…15=F).
3) Registr
Registr, jako samostatná součástka, slouží jako malá
jednobitová (případně i větší) paměť. Hodnota, kterou do
ní vložíme v ní zůstane tak dlouho, dokud ji dalším zápisem
nezměníme.
Zde se registrem nazývá místo (část paměti nebo i samostatný
blok), který obsahuje 8 bitů. Takže když má například paměť
RAM kapacitu 64 bytů (64×8bitů), znamená to, že má 64
registrů. Takže je to vlastně jiný název na pro 1 byt.
Registry ale nejsou jen rozdělená paměť, ale jsou i jako
samostatné bloky, které ale jako malá paměť slouží. Například
obvody jako Výstupní registr (to je malá paměť, jejíž
obsah je k dispozici na výstupech procesoru).
4) Přerušení
Nejprve co a k čemu to vlastně je.
Přerušení je podobné resetu a vykoná se vždy, když se NĚCO
stane. Tím něco se dá nastavit například přetečení čítače,
změna hodnoty na nějakém vývodu a podobně.
Při zapnutí nebo resetu procesoru se tedy začne číst z jeho
programové paměti program od adresy 00h. Přerušení se od
resetu odlišuje tím, že procesor neskočí zpět na první řádek
programu, ale až na čtvrtý (adresa 04h) !!!
Jak to využít ? Jednoduše. Na první řádek programu se vloží
příkaz, aby procesor skočil na nějaké jiné místo, kde začíná
vlastní program. Na čtvrtý řádek se vloží jiný odkaz,
který donutí procesor, který se dostal sem, aby skočil na místo,
kde je jakýsi podprogram využívající toto přerušení.
Samozřejmě se neodpočítávají řádky, ale slouží k tomu přímo
speciální příkazy. Vše bude později ještě podrobně popsáno.
5) Ostatní
slova
Instrukce = jeden příkaz (řádek) v programu
Přetečení časovače = znamená jen to, že čítač dočítal
do konce (celý se naplnil)
SPONZOR SERIÁLU:
Programátor
procesorů PIC 12xxx, 16xxx
Článek pochází
z adresy http://panda.unas.cz ZPĚT |
Zdeněk
Novotný |