Stránka 1 z 1

univerzální registry PIC

Napsal: 09 srp 2009, 12:07
od Johny_Servis
Sorry za to že tu zakládám za druhý den už druhé téma, ale první problém byl zdárně vyřešen a jak pokračuju vyhrnuly se další problémy. Na netu sem nic nenašel, tak se obracím sem.

dle datasheetu PIC16F877A by mělo být na stránce 0 (bank 0) od adresy 0x20 po adresu 0x7F 96 osmibitových univerzálních registrů
tak si je tedy postupně zabírám pro své pomocné registry stylem

regA equ 0x20
regB equ 0x21
...

problém je v tom, že watch (v MPLABu) je neumí zobrazit (píše "not found"), jelikož tam mám i vícebajtové registry, rozhodl sem se to přepsat na:

cblock 0x20
regA
regB
regC:4
...
endc

stále to však watch neumí zobrazit a ani program po nahrání do PICu nechodí jak by měl. Jak to tedy s těmito registry je (upozorňuji že si pečlivě hlídám přepínání mezi jednotlivími paměťovými bankami)

Napsal: 09 srp 2009, 13:13
od Atlan
regA equ 20h a mne to chodi..... problemom toho procesora je ze len spodny 16bajtov pamete je pristupnch vo vsetkych bankach co je dost obmedzene...

Napsal: 09 srp 2009, 19:38
od Pawalo
zapisuji to uplně stejne jako jste uvedl v prvním příkladu a ve watch mi to zobrazuje. možná jen bych upozornil na jednu věc. slyšel sem něco o tom že v MPLABu je i nějaká funkce, že je musí rozlišovat velká a malá písmena. tak jestli to třeba do watch nezapisujete jinak něž jak máte zapsaný ten registr.

Napsal: 10 srp 2009, 07:40
od Chenzee
Nevím, jakou máš verzi MPLABU, ale když jsem přecházel ze 7.5 na 8.2, tak se mě to ptalo na adresování registrů buď absolute nebo relocatable. Pokud jsem dal relocatable, tak mi watch také neumožnil zobrazovat obsahy mnou definovaných registrů, poté, co jsem přepnul na absolute, to šlo (a jde).

Edit: V příloze jsou dva printscreeny se zmíněným nastavením. Po změně nastavení musíš provést kompilaci. Pak se změna projeví.