Zdravím všechny.
Mám problév MPLABU. Při napsání v programu “Z”, nebo “RP0” mě to píše, že je nezná, ale po definici #define Z STATUS,2 to zas napíše, že je to tam dvakrát . V tom definičním souboru kde jsou všechny instrukce to vypadá OK.
Neřešil to někdo? Nebo jak to definujete vy? Předem dík za radu.
Honza
Děláš někde chybu. Vlož sem kousek programu.
Je jasné, že tvoje definice #define Z STATUS,2 neprojde, když v include souboru existuje Z EQU H’0002’
Trošku jsem pokročil, ale nechápu to . Když napíšu třeba" BTFSS Z"
tak ho nevezme, ale když napíšu " BTFSS STATUS,Z" tak mu to nevadí.
Používám podprogramy z knihy BEN komunikace mikrokontroléru s okolím a musím vše přepisovat .
Co na tom nechápeš? Správná syntaxe je BTFSS f, b tedy BTFSS STATUS, 2
Můžeš sice v include zrušit definici Z EQU H’0002’ a použít #define Z STATUS,2 Je to ovšem zcestné.
Direktiva INCLUDE, např. include<p16f88.inc>
definuje (pojmenuje) registry, bity atd.
Potom místo čísla registru můžeme napsat jeho jméno (STATUS).
Číslo bitu má také své jméno (Z,RP0).
Takže, pokud chcete testovat nebo změnit příznak Z ve stavovém registru STATUS,
napíšete to takto: STATUS,Z (nikoliv jenom Z).
A nadefinovat písmenu “Z” něco jiného také nejde, je už použité pro hodnotu 2.
Jak to tedy zjednodušit? Třeba takto:
#define SZ STATUS,Z
Každé SZ bude potom interpretováno jako STATUS,Z
A co takhle použít malé z, to by mohlo jít.
#define z STATUS,Z
Já bych to nechal tak jak to je a snažil bych se na to zvyknout a to z důvodu, že svoje *.INC soubory si nikdo asi nepíše, nebo spíš o nikom nevím a pokud si napíšeš svoje, tak ti nepůjdou jiné *.ASM a v jiných *.ASM budeš mít pěknej chaos.
Dík za odpovědi. Asi si na to budu muset zviknout, ale nevím proč v té knížce BEN mají ve všech programech to Z definováno zvlášť. Budu používat definici STAUS,Z . Ostatní to v programech taky takhle používají.
Tak mě to nedalo a nakoukl do té knížky. V těch příkladech nepoužívají include soubor a proto musí nadefinovat „ručně“ každý registr a bit v něm, který se bude používat.
[code]Příklad:
SWR equ 03h ; registr STATUS
#define C SWR,0
#define Z SWR,2
#define RP0 SWR,5
Pak stačí napsat: BTFSS Z
[/code]
Doufám že je to tak správně a že tady nešířím nějaké bludy, případně mě opravte.