MPLAB 7.22 a vyšší

Dobrý den ! Jako programátorský začátečník jsem narazil na problém s definicí registrů a buněk v MPLABu :
zadám překladači pokyn Include P16f877A (např., pochopitelně v “špičatých” závorkách a myslel jsem si, že mám dány adresy registrů atd. Pak jsem spustil překlad programu (hraji si s příklady pro PVK40 od Asixu) a překladač mi nahlásil cca 35 chyb - není definován registr, buňka atd…
Když jsem si ale příkaz include XXXXXXX zadal do jednoduchých programů PVK 40, kde jsou registry a buňky definovány, tak mi to ohlásilo, že PB0 je definováno duplicitně, ale registry prošly OK…Tak nevím ? Jsem úplně pitomej, nebo musím ještě někde něco nastavit ? Zkoušel jsem nainstalovat různé “sedmičkové” verze MPLABu, ale tohle to dělá úplně ve všech… :blush:

Ahoj Oto,
tady máš příklad začátku programu pro PIC16F877A:

list p=16F877A radix dec #include p16f877a.inc __config b'11111100111010'

“radix dec” znamená, že číselné hodnoty se budou standardně brát jako desítkové. Default Radix není nutné uvádět - stačí to nastavit v Build Options.

Asi by bylo třeba ukázku programu, který ti hlásil uvedené chyby. Doporučený tvar direktivy je

#include <P12F675.INC>  

Ve skutečnosti špičaté závorky musí být, jen pokud je v názvu/cestě k souboru mezera.
Problém může být v cestách k souborům *.INC, ale i v tom, že třeba directivu include neuvádíš na začátku programu.

Mimochodem, ten

__config   b'11111100111010'

je opravdu hodně drsnej.
Doporučoval bych tuto formu (nikoliv obsah):

__CONFIG   _CP_OFF &_CPD_OFF & _WDT_OFF & _MCLRE_OFF &_BODEN_OFF &_PWRTE_ON &_INTRC_OSC_NOCLKOUT 

Jaké parametry máš použít najdeš právě v souboru *.INC odpovídajícího procesoru.

Ahoj oběma a děkuji za rady… :stuck_out_tongue:
S tou konfigurací procesoru si poradit umím, udělal jsem si takovou tabulku, co který bit configuračního slova znamená a mám to tam i binárně, takže to jde :laughing:
V příloze jsou dva prográmky na PVK40 od Asixu - ten první, nejjednodušší v originále neobsahuje to Include XXXX a když to tam dám, hlásí, že je dvakrát definovaný PB0. U druhého prográmku (ten v sobě to include má) je pak to hlášení o nějakých 35 chybách… :frowning:

jé, ono se to nenačetlo…tak další pokus :blush: Já to vzdávám, neumím připojit soubor…můžu to poslat někam majlem ??? :unamused:

Prohlédl jsem si tvoje zdrojové programy. Problém je v tom, že assembler rozlišuje u jmen návěští a proměnných velká a malá písmena.
Soubor P16f877a.INC je zaveden, ale názvy registrů v tvém programu jsou malými písmeny a překladač je tedy nezná… V definici P16f877a.INC jsou totiž všechna velká. A hlášení o redefinici je také jasné. Řádek:

#define RP0     status,5        ;RP0 is bit 5 in status register

je duplicitní právě s obsahem P16f877a.INC, kde už tato definice existuje
Toť vše.

Case sensitivity je možné nastavit v Build options.

Hmmm, tak to by mne tedy fakt nenapadlo ! :open_mouth: Děkuji moc, večer to zkusím… 8)

Ahoj Oto,

Soubory můžeš vkládat i přímo do fóra (dole máš možnost “Připojit soubor”).

Pokud jen potřebuješ zkompilovat v MPLABu cizí programy, tak je to dobrá možnost, ale až budeš spát své vlastní, tak ti doporučuji si zvyknout psát “systémové” názvy velkými. Je to správný způsob.

Jo, jo, děkuji ještě jednou… :slight_smile: Já ty soubory zkoušel dvakrát připojit, ale nepovedlo se mi to, nevím proč…inu, volšový ručičky ! S těmi velkými písmeny máš pravdu, v prográmku jsem si to přepsal :unamused: Inu, když se to člověk učí, trénink neškodí, že ??
V každém případě děkuji oběma za porady, chybovách hlášení už mám jen pět, protože jsem někde něco nepřepsal…ale to chce více času a ponořit se do toho pořádně :wink:

Ještě jednou vám oběma děkuji za rady - už je to ok a “rozsvítil jsem LEDku” při definici přes “include” :stuck_out_tongue: Co člověku nestačí ke štěstí, že ???

Používání transparentních programovacích technik je prvním krokem k úspěchu. Teď jsem narazil na maličkost, kterou jsem neznal. Ověříš s ní, jestli je soubor *.INC správně linkován a především do něj můžeš snadno nahlédnout, když některou proměnnou neznáš z hlavy. Když klikneš pravým tlačítkem na název souboru v direktivě #include, tak máš možnost otevřít soubor pomocí OPEN FILE. Je to praktické, já jsem doposud musel soubor vyhledat a otevřít.

A není nejjednodušší je mít všechny “vlevo” v seznamu souborů? Pak na požadovaný soubor stačí přece jen kliknout o soubor se otevře a zobrazí…

Ale tam je musíš podle mě ručně nalinkovat. Což je v případě tohohle defaultního souboru zbytečné.