You are here

Adattábla olvasása PIC-ben, de nem a PCL módosításával

9 posts / 0 new
Last post
Jaca
Jaca's picture

Sziasztok!

Belefutottam egy olyanba, hogy PIC16F676-nél adattáblát olvasnék a PCL növelésével, de vélhetőleg a 256 környékén áll a PCL, ezért hülyeségeket csinál. (tuti az, mert ha pár NOP-ot beírok elé, akkor mást csinál, másik programrésznél pedig hibátlanul fut ez a rutin.

karakterek
movf szamlalo,w
addwf PCL,f
retlw 0x54 ;ez az utolsó
retlw 0x4c
retlw 0x55
retlw 0x41
retlw 0x4e
retlw 0x45
retlw 0x52
retlw 0x20 ;ez az első karakter

Van ez helyett más, hasonlóan egyszerű megoldás?

Üdv: Jácint

Comments
rainbow555

Szia!

Én így használom, semmi gond nincs vele:

TBL_R MOVFW TEMP
ADDWF PCL,1
RETLW .63
RETLW .6
RETLW .91
RETLW .79
RETLW .102
RETLW .109
RETLW .125
RETLW .7
RETLW .127
RETLW .111
RETURN

Nálad lehet hogy laphatáron van?

Üdv: Emil

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia Emil!

Igen, laphatáron. de mire rájöttem!
Itt találtam valamit, de még megg kell értenem.
http://siriusmicro.com/projects/i1table.html
De találtam olyat, is, hogy másik lap elejére lehet átrakni.
http://ww1.microchip.com/downloads/en/AppNotes/00556e.pdf

Üdv: Jácint

0

Vote up!

You voted ‘up’

proba

Szerintem legegyszerűbb mindjárt laphatárra tenni alsó) és egy szubrutin hívással beolvasni.

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia!

Szerintem is, de hogy tudom laphatárra tenni?
Jól sejtem, hogy a subrutin elejére egy org 0x300 a laphatárra tenné, 16 bájtos a táblám.
tehát:
org 0x300
karakterek
movf szamlalo,w
addwf PCL,f
retlw 0x54 ;ez az utolsó
retlw 0x4c
retlw 0x55
retlw 0x41
retlw 0x4e
retlw 0x45
retlw 0x52
retlw 0x20 ;ez az első karakter

Üdv: Jácint

0

Vote up!

You voted ‘up’

hwjveress

HWJ
Szia Jácint !

Jó az amit csinálsz, ezt a táblát hívhatod CALL -al vagy GOTO -val ,viszont be kell előtte állítani a PCH -t is, és a rutinból kilépve törölni kell a PCH -t.
A felső egy tábla eleje a második meg ahogy meghívom a táblát. Ez működik az inverteremben (64 db 32 elemű tábla).

Itt egy példa:

org 0x100

SineTable785
addwf PCL,F
retlw .0
retlw 128
retlw 148
retlw 166
.
.
.

STable6
movf STEPCOUNT,W
bsf PCLATH,PCH0
nop
call SineTable785
goto Tablaveg

Tablaveg
clrf PCLATH
return

Üdv. V.J.

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia!

Kezdem kapizsgálni.
Ha org 0x300-at állítok be, akkor gondolom PCH0 és PCH1 et setelem. Ha törlöm a PCLATH-ot, akkor is tudni fogja, melyik táblára kell visszalépnie?

Üdv: Jácint

0

Vote up!

You voted ‘up’

hwjveress

HWJ

Szia !
Igen, az a jó beállítás. Nálam a nop helyére is valamelyik PCHx set kerül. Én azért törlöm a PCLATH-ot mert nem kell figyelni rá az új beállításnál, a RETURN után a program visszatalál a megfelelő helyre.

Üdv. V.J.

0

Vote up!

You voted ‘up’

Jaca
Jaca's picture

Szia!

Köszönöm, működik. Igaz, a megértéséhez vagy hatszor leolvastam az application notest.
Azért volt furcsa, mert a CALL és GOTO 11 bittel dolgozik, így az 1k-s memóriánál gond nélkül ugrált akár 0x0xx és 0x3xx között, viszont az addwf PCL,F -nél betölti a PCLATH-ból, és ha az nem a megfelelő táblára mutat, rossz helyre fog mutatni.

Üdv: Jácint

0

Vote up!

You voted ‘up’

More similar content