PIC16F628a + LCD problem s tabulkama

Zdravim vsechny programatory, potreboval bych pomoct s tabulkama. Mam tabulku s 64 radkama, pokud volam tabulku do 59. radku skace to kam ma, jakmile chci v dalsim kroku nacist 60.radek tak se mi vyresetuje PCL a skocim na org 0x0, potreboval bych vedet jak nastavit dalsi strnaku pameti. Kdyztak prikladam v souboru zdrojak (problem tam zacina na LOOP_1). Diky za rady.
display.txt (8.31 KB)

Ošetři si PCLATH. Nebo tabulku přesuň do první stránky paměti. Zkus tenhle program. To máš po displej 128x64?
displej.asm (8.31 KB)

Jj je to display 128x64 (EL 12864A). Predtim sem mel pred kazdou tabulkou
movlw HIGH Table_1
movwf PCLATH
ale ani s timhle to nevali.
Chci to udelat tohle, protoze je displej rozdelenej na dve pulky 64x64 a 8 stranek -> takze na konci programu budu mit 16 tabulek a kazda bude mit 64 radku.

Čau,
mrkni sem: gemtree.cz/p84/Procesor/INDE … M#Priklady
když koukneš lehce dolů, tak je tam nadpis tabulky a ta druhá procedura je přesně to co potřebuješ.

Dikec, ja uz sem na tohle dival akorat se mi to nepovedlo do toho myho programu zaclenit, ale tedkom se mi to povedlo a vali to.

Mohl jsi sem dát kousek asm i pro ostatní. :smiley:

Tady to je, doufam že nebude vadit že to sem skopíruju celí:

Další tabulka již nemá omezení předešlého typu tabulky. Může být umístěna kdekoliv v paměti a může mít libovolnou velikost. Tabulek může být více. Při inicializaci se uloží do registrů PointL a PointH (ukazatele tabulky LOW a HIGH) nižší a vyšší bajt adresy požadované tabulky. Prvek z tabulky se čte voláním procedury GetTab. Procedura zajistí automatické zvýšení ukazatele tabulky. Je-li v programu využíván i předešlý typ tabulky, je vhodné po návratu z procedury vynulovat registr PCLATH (popř. jeho obsah nastavit na vyšší bajt aktuální adresy, leží-li program mimo rozsah počátečních 2 KB paměti).Table dt 23
dt 45
dt 12
dt 120
;*** procedura pro načtení hodnoty z tabulky
GetTab movf PointH,W ; načtení ukazatele HIGH do W
movwf PCLATH ; nastavení adresy skoku HIGH
movf PointL,W ; načtení ukazatele LOW do W
incf PointL,F ; zvýšení ukazatele LOW
btfsc STATUS,Z ; je přetečení ukazatele LOW přes 0?
incf PointH,F ; při přetečení zvýšení ukazatele HIGH
movwf PCL ; zápis W do PCL = skok do tabulky
;*** inicializace ukazatele tabulky
Init movlw HIGH Table ; adresa tabulky HIGH do W
movwf PointH ; nastavení ukazatele HIGH
movlw LOW Table ; adresa tabulky LOW do W
movwf PointL ; nastavení ukazatele LOW
… ;*** čtení hodnoty z tabulky
call GetTab ; načtení položky z tabulky
clrf PCLATH ; nulování adresy skoků HIGH