You are here

PIC programozási elméleti kérdés...

7 posts / 0 new
Last post
Lengyel József
Lengyel József picture

Sziasztok!
A , programozási ismereteim tisztázásához szeretném feltenni a következő kérdést:
Több Assembly minta program tanulmányozása közben láttam,hogy használják az
EQU dírektivát. Azt tudom róla ,hogy egy szímbolumhoz rendel egy értéket .
A kérdés most következik : Honnan tudom megkülömböztetni ,hogy a rendelt érték egy memória cím,vagy esetleg mondjuk egy konstans?
A kérdés tisztázása azért lenne fontos mert lehet ,hogy a programban valamit éppen nem kommenteznek.
A válaszokat előre is köszönöm.

U.I : A PIC alkalmazás technikájában még uj vagyok úgy érzem.
Még egyszer előre is nagyon szépen köszönőm a válaszokat mindenkinek.

Üdv : Lengyel József

Comments
vilmosd
vilmosd picture

Nem kozvetlen erre valasz, de tudnam ajanlani a http://www.t-es-t.hu/elokep/pic/felhkk.htm oldalt. Magyarul, erthetoen leirva sokminden, ami a PIC programozasahoz szukseges.

0

Lengyel József
Lengyel József picture

Szia ,vilmosd!
Nagyon szépen köszönőm át ,fogom nézni ezt az oldalt és amit le lehet menteni le is mentem. Minél több dokumentáció áll rendelkezésre annál jobb.
Remélem a jövőben én is szívesen tudok segíteni valamivel ,ha úgy adódik.
Még egyszer nagyon szépen köszönőm az információkat. További szép napot kívánok.
Üdv : Lengyel József

0

Oszi11
Oszi11 picture

Szia!

Nos igen, ez nem egyszerű! Az EQU, mint írtad is nem más mint egy szám szöveges formája. Általában a szöveg utal arra, hogy mire használja a programozó. Általában azért használja az ember, hogy a kódban sok helyen használt értéket csak egy helyen kelljen módosítani, vagy hogy egy számot ne kelljen megjegyezni, hanem egy értelmes szöveg utaljon rá (ilyenek a regiszterek amelyek számok, de a nevük alapján könnyebb használni).
No-de visszatérve az eredeti kérdéshez, Honnan lehet tudni! két helyről az adatlapból és a programkódból! Mindig meg van adva a memória-kiosztás mettől meddig tart a RAM, ezeket az értékeket a program valami f-es utasítással használja (movwf, andwf, addwf). A konstansokat lw-s utasítások használják (movlw, andlw, addlw)

Üdv,
Oszi

0

Lengyel József
Lengyel József picture

Szia ,Oszi11!

Nagyon szépen köszönőm a választ a kérdésemre. További szép estét kívánok.
Kezd le tisztulni a dolog.
Üdv : lengyel József

0

Jibaro
Jibaro picture

Szia!

Az EQU-ból nem fordul programkód. Annyit tesz, hogy ne legyen
muszáj nyers számokat írnod a kódba, hanem elnevezhesd őket az
éppen betöltött funkciójuk (jelentésük) szerint. Olvashatóbbá
teszi a kódot, és esetleg megkönnyíti az így elnevezett számok
értékének későbbi módosítását.

Az EQU tehát csak egy alternatív helyettesítő nevet hoz létre;
olyasmi, mint C-ben a #define direktíva (nem pontosan ugyanaz,
de első közelítésnek megfelel). Egy EQU-sor önmagában nem fog
módosítani semmit a regiszterekben vagy a memóriában. Hogy az
így létrehozott névből memóriacím, oda töltendő számérték vagy
más egyéb lesz, azt a felhasználó dönti el; ez attól a konkrét
kódtól függ, amelyben az EQU-val bevezetett helyettesítő nevet
felhasználják.

Loptam hirtelen egy példát a Microchip fórumából:

cats EQU 0x30
dogs EQU 0x31

"movlw cats" will mean "movlw 0x30"
"movf cats,w" will mean "movf 0x30,w"

http://www.microchip.com/forums/m241838.aspx

Jibaro

0

Lengyel József
Lengyel József picture

Szia,Jibaro!

Nagyon szépen köszönőm a választ.Sokat segítettél.A mai nap is tanultam valamit!
Még egyszer köszönőm szépen további szép estét!
Üdv : Lengyel József

0