MPASM a CBLOCK

Bitovod hw@prelude.cz
Pondělí Prosinec 3 23:57:00 CET 2007


Diky obema, omlouvam se, nemohl jsem zareagovat rychleji.
Ono mi to pak pri studiu ruznych datasheetu a ruznych prikladu docvaklo, ze 
by to mohlo takhle byt. Takze, chapu-li to spravne, protoze v kazde bance 
kousek mista zbyva pro registry, muzu si rozstrkat registry na konkretni 
mista v konkretnich bankach? Zatim to pri blikani LEDkama tedy nevidim jako 
nutnost, ale asi by se to mohlo hodit.

A jeden poddotaz - je mozne mit stejne pojmenovany registr ve vice bankach?
Ted to nemam na cem vyzkouset, ale je mozna takovato definice:

CBLOCK 0x20
Promenna1
endc

CBLOCK 0xA0
Promenna1
endc

S tim, ze bych pristupoval k stejne pojmenovanemu registru, ale podle 
aktualni banky by mel pokazde jiny obsah?

Pavel Kutina


----- Original Message ----- 
From: "Jiri Bezstarosti" <jiri@bezstarosti.cz>
To: "HW-news" <hw-list@list.hw.cz>
Sent: Monday, December 03, 2007 10:36 AM
Subject: Re: MPASM a CBLOCK


No a k druhe casti dotazu. Kazdy PIC ma v PDF mapu pameti/registru (u
PIC je pamet RAM oznacovana jako registry, protoze se s ni jako s
registry pracuje) a tam zjistim, ktere registry (jaky rozsah adres) mohu
pouzivat pro sve promenne. Takze to 0x20 je treba zacatek pameti pro
vseobecne pouzitelne registry, tedy ty, ve kterych si muzete delat co
chcete a neovladaji zadnou periferii, tedy nemaji zadny specialni
vyznam. V dokumentaci (PDF) je najdete v mape pameti/registru pod nazvem
"General Purpose Register".

--
Jiri Bezstarosti

_______________________________________________
HW-list mailing list  -  sponsored by www.HW.cz
Hw-list@list.hw.cz
http://list.hw.cz/mailman/listinfo/hw-list

Dobrý den,
 doufám, že se nepletu ale CBLOCk znamená, že se paměť začně adresovat
 od 0x20 a všechny další registry budou přibývat od této hodnoty. Má
 to význam v případě, kdy chcete mít registry nějak srovnané za sebou
 (z nejakého důvodu, nebo prostě jen pro přehled) a nechcete u každého
 vypisovat jeho přesné obsazení. Příklad:
 klasicky:
 Delay1   EQU 0x20h
 Delay2   EQU 0x21h
 Delay3   EQU 0x22h

 a teď za pomoci makra:
 CBLOCK 0x20h
 Delay1
 Delay2
 Delay3
 ENDC

 Význam bude pořád ten samý.  Pokud potom přidáte do makra další
 registr (třeba mezi Delay1 a 2)  tak se ty pod Delay1  prostě v
 obsazení paměti "šoupnou"níže. U klasiky by jste musel přepisovat
 všechny na jinou hodnotu.


S pozdravem,
 Martin Šaněk
 mailto:sanek.martin@volny.cz




Další informace o konferenci Hw-list