Názorná ukázka přepínání stránek paměti 16f873A

Zdravím ,chtěl bych se zeptat - jestli by mi někdo názorně nenapsal v asm ve zkratce jak přepnout z jedné stránky programu do druhé a zpět…nějak mi to nejde díky

:arrow_right: administrator: přejmenováno z "Přepínání stránek paměti 16f873A"

PAGE 0 je od 0x0005 do 0x077F
PAGE 1 je od 0x0800 do 0x0FFF

Něco o strankách programove pameti se řešilo tady https://forum.mcontrollers.com/t/skok-na-preruseni-ze-druhe-strany-programu/545/1

Moc díky ,ještě jedna věc- když chci použít registry 0 banky součastně s reg.v 1 bance- např-postupně načítám a vynáším na port dojdu k registru 7fh a chci pokračovat v bance 1 na -registru-A0h jak to mám přepnout banksel.,?? pak se ale musím zase vrátit do banky 0

Buď jednu, nebo druhou, obě najednou nepůjdou. BANKSEL jmeno_registru, např. BANKSEL TRISB, překladač už sám určí, která je to banka.

Tohle bych radši řešíl pomocí FSR a INDF. Pokud teda jde o postupné čtení registrů.

DÁM SEM JEN BANÁLNÍ PROGRAM ,-KDE MÁM TEDY UMÍSTIT TO PŘEPNUTÍ DO DRUHÉ BANKY ? BANKSEL NA BANKU- 0 JSEM DAL PŘED PROGRAM,A BANKSEL DO BANKY 1 JE UMÍSTĚN PŘED INSTRUKCÍ DCFSZ AOH,1…
POKUS.txt (154 Bytes)

Takhle to v tom pokus.txt asi moc pomocí banksel nevyřešíš, protože za banksel musí být jméno registru, jakékoliv číslo je bank0

Takhle už to bude fungovat určitě

[code] cblock 0x20
reg1
endc
cblock 0xA0
reg2
endc

NAHORU1 ;PROGRAM ;PROGRAM NA STRANĚ 1
X
X
banksel reg1
DECFSZ reg1,f ;REGISTR V BANCE 0
GOTO NAHORU1

banksel reg2
DECFSZ reg2,f ;REGISTR V BANCE 1
GOTO NAHORU1[/code]

To: honza3 tak jak píšeš to napsané mám ale nejde to …tak nevím kde může být chyba- :frowning: pošlu ten program ,je to úplně vespod/ Díky za reakce…
POKUS2.asm (22.1 KB)

Proletěl jsem to jen v rychlosti, teď jdu na noční, pokud to nepojede, zítra se ti na to mrknu pořádně.

A jinak, taky si teď zrovna hraju s maticovým LED dispkejem. 8x8 LED x 10.
POKUS2.asm (22.1 KB)

:To Honza3- je to pořád stejné… asi tam mám někde drobnou chybu ,nějakou maličkost která se přehlídne… :frowning:
Jinak toto je displej 5x7 16matic

Mrknu na to zitra, ted nemam na cem. Sry za diatriku, ale z mobilu to moc nejde.

Mam na tebe dotaz, cim posilas data do LED, mam na mysli jestli posuvnymi registry, napr. 4094 apod, nebo jinym zpusobem. Podel se, jestli to neni tajne.
Ja prave resim, ze “nakrmeni” registru trva moc dlouho a procesor nema pak moc casu na program.

Neprekrocil si nahodou uz rozsha stranky programu 2048… skontrolij v diasembleri na akej skutocnej hodnote je MOVLW .10 za tym vrchom nesmie tam byt viac ako 07FFh.

Honzo díky,tech posuv.registrů je tam 10 a to-74ls164 přesně to vyjde na tech 16 matic tzn.80 bitů obsazených První načtu ze všech 80 registrů bit-7 nasázím je do posuvu pak 74ls138 sepnu správný řádek potom ho smažu, a opakuju s dalším řádkem až je jich tam všech 8(7) pak jednoduše provedu rotaci registrů - 1 na místo 2 ,2 na místo 3atd… ten první reg.který to posouvá načtu z eeprom.a pak už se to jenom pomalu nebo rychle sune :laughing: jednoduché ne?? až na to že sem se zasekl na té pitomé instrukci …tak su ještě začátečník :blush: :unamused:

Tak měl bych být stále na 1 straně ukazuje to na konci-hex 347 tj- 839 ještě je místa dost.

To Atlan: MPLAB by mu napsal varovani, ze prekrocil page. A za urcitych okolnosti by to ani neprelozil.

To Tony: Tak ty mas jen jednu barvu,ze? Ja mam bitu 160, cervena 80, zelena 80, schvalne si to zitra zmerim, jak dlouho to trva nakrmit tobe. Nekde asi delam chybu a taky nevim kde. Ale zase je fakt, ze mam preruseni co 3,2ms z duvodu, aby text “neposkakoval” pri rychlem posuvu textu. Nakrmeni vsech 160 bitu vcetne sepnuti radtku trva 429 us, coz mi pripada dost dlouho. Pri preruseni 6,4 ms uz je text pri rychlem posuvu necitelny.Dela to zle na oci :open_mouth:

A nebude problém v tom, že jak skočíš do banky 1 na konci kodu, tak se nevrátíš zpet do banky 0. A totež musíš provádět i s registry PIS75, PIS76… , že pokud chceš zapisovat/číst registry v bance 1 tak tam musíš skočit a nezapomenout se zase po akci vrátit.

Asi 12 chyb s banksel a 1 chyba v TRISA hned na zacatku. Zkus to. :smiley:

A nepoužívej MOVFW ale MOVF xyz,W, až přejdeš na řadu 18F, tak ta to nepodporuje. Ale do té doby třeba budeš umět Cčko :smiley: :smiley:

BTFSS 03H,2 To je co? Není lepší napsat STATUS,Z???
POKUS2.asm (22.3 KB)

to:honza3 ,teď to nejde vůbec :laughing: jen to blikne a spadne to nevím kam…na displeji tma. to trist jsem si opravil…dík

Jestli to třeba nebude tím, že předtím se banky nepřepínaly a teď jo, takže předtím to šlo, protože ti to nebralo registry v bance1, teď už jo. Že vlastně kvůli te chybě s banksel ti to šlo. :smiley:

Všiml jsem si, že nevyužíváš přerušení. Já právě krmím displej v přerušení, tím se vyvaruju problíkávání a třeba i tmě, protože se data sypou do LED pořád, to co je v registrech pro LED.

Možná by stálo za úvahu to celé předělat, udělat to, že displej budeš krmit v přerušení a pořád dokola a ve volném strojovém čase budeš sypat data do registrů, co se má ukazovat na displeji.