Choď na obsah Choď na menu
 

PIC5

Škola programování PIC 5

První program

Teorie již bylo dost a tak se podíváme na nějaké jednoduché zapojení, na němž si vysvětlíme další funkce.
Jako první příklad si sestavíme zapojení podle následujícího obrázku a vytvoříme do procesoru program, aby se zařízení chovalo takto: Po zapnutí se navenek nic nestane, LED zůstane zhasnuta. Až po stisku tlačítka se LED rozsvítía a zůstane svítit i po jeho uvolnění. Po dalším stisku tlačítka LED opět zhasne a vše se bude opakovat. Prostě takové jednotlačítkové ON / OFF ovládání.

A tady je výsledný program:

Klikni pro original v TXT podobě...

Docela malý program, že. Tak si ho postupně rozebereme a popíšeme.

LIST P=16F84
INCLUDE<P16F84.INC>
__CONFIG _PWRTE_ON & _WDT_OFF & _RC_OSC

Tyto tři řádky slouží pro překladač a programátor. Na prvním řádku je určeno pro jaký typ procesoru je tento program určen a na dalším má napsáno v jakém souboru k němu najde potřebné údaje (je součástí překladače). Na třetím řádku je poté pro programátor určeno s jakými vlastnostmi se má procesor programovat. Když se to vezme popořadě, zpoždění po startu je zapnuto, Watchdog timer je vypnut a nakonec je určen typ oscilátoru. Tento poslední řádek není podmínkou, ale je vhodné ho přidávat, ušetří se později nastavování v programátoru.

#DEFINE TLAC PORTA,0
#DEFINE LED PORTA,1

Těmito příkazy se nastaví názvy používaným vývodům. Jak jsme si již vysvětlili, později se v programu může volat už jen tyto názvy a ne jejich adresy.

BSF STATUS,RP0

Protože ještě potřebujeme nastavit které vývody budou vstupní a které výstupní, musíme se přepnout do Banky 1 (viz. kapitola o registrech). To se provedlo tímto příkazem, který nám bit RP0 v registru STATUS nastavil na hodnotu log. 1 (BSF).

MOVLW B'00000001'

Teď jsme si do pracovního registru (W) uložili tuto binární hodnotu.

MOVWF TRISA

A tímto jsme ji z pracovního registru zapsali do registru TRISA. Tím jsme nastavili vývod RA0 jako vstupní a zbývající vývody jako výstupní.

BCF STATUS,RP0

No a po nastavení se vrátíme zpět do Banky 0 opět změnou bitu RP0 tentokráte však na log.0.

BCF LED

Na log. 0 jsme nastavili taky vývod s názvem LED.

START BTFSS TLAC

Slovo START slouží jako taková záložka. Až se později budeme chtít vrátit do tohoto místa, stačí napsat: GOTO START a jsme zde.
Příkaz za záložkou testuje vývod označený TLAC. Z tabulky příkazů je vidět, že je-li tento vývod v 0 pokračuje se normálně dalším příkazem. Má-li ovšem hodnotu 1 následující řádek se vynechá a pokračuje se až tím dalším (v našem případě je to BSF LED).

GOTO $-1

Tento příkaz spolu s jeho hodnotou způsobí vrácení procesoru o jeden řádek víš ($-1).

Spolu s minulým příkazem jsme docílili toho, že procesor tu stále koluje a čeká, až bude mít vývod TLAC hodnotu 1. V tu chvíli se tento příkaz přeskočí a procesor se dostane na řádek:

BSF LED

Teď jsme nastavili hodnotu 1 na vývod LED a tím rozsvítili připojenou LED diodu.

BTFSC TLAC
GOTO $-1

Tyto dva příkazy jsou podobné těm co jsme tu již měli, jen s tím rozdílem, že pro přeskočení příkazu GOTO $-1 je tentokráte potřeba přivést na vývod TLAC log. 0 (pustit tlačítko).

BTFSS TLAC
GOTO $-1
BCF LED
BTFSC TLAC
GOTO $-1

Program pokračuje téměř stejnou částí, jen s tím rozdílem, že po stisku tlačítka LED diodu zhasne.

GOTO START

Až se procesor dostane až sem, tímto příkazem ho vrátíme zpět na záložku START a tím se celý cyklus opakuje.

END

Poslední příkaz indikuje konec programu, ale díky předchozímu příkazu se sem procesor nikdy nedostane, ale musí se psát! Pokud by se sem procesor dostal, nic horzného by se nestalo, prostě by proběhl zbytek volné programové paměti a začal by zase od začátku.

Styl psaní programu
Program se píše v běžném Poznámkovém bloku a ukládá se s koncovkou .ASM. Proto ve Windows doporučuji nastavit pro tyto soubory automatické otevírání v Poznámkovém bloku (Notepad).

Jak je vidět z otištěného programu, program se píše do tří sloupců, které se oddělují klávesou TAB. Vyjma příkazů pro definování názvů se do prvního sloupce píší záložky, do druhého příkazy a do třetího sloupce jejich hodnoty. Vše pište velkými písmeny!
Do programu je také vhodné vkládat alespoň občas nějaké poznámky. Ty se píší za středník ";" a již malými písmeny (pro přehlednost).

A co teď s programem
Máme-li program napsaný a uložený v souboru s koncovkou ASM, spustíme si překladač ASM/HEX. V něm vybereme soubor který chceme přeložit a potvrdíme. Překladač nám z ASM souboru vygeneruje několik dalších s různými příponami. Soubor s příponou LST slouží k simulátoru. My ale pro programátor potřebujeme soubor s příponou HEX.
Teď již stačí k PC připojit programátor a vygenerovaný soubor naprogramovat do procesoru a celé zapojení odzkoušet.