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 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
rainbow555 picture

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

Jaca
Jaca 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

proba
proba picture

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

0

Jaca
Jaca 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

hwjveress
hwjveress picture

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

Jaca
Jaca 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

hwjveress
hwjveress picture

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

Jaca
Jaca 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

Sponsored links