Vai al contenuto
PLC Forum

Partecipa anche tu alla Live su Youtube martedì 28/01/2025 per festeggiare i 24 anni di PLC Forum

Per ulteriori informazioni leggi questa discussione: https://www.plcforum.it/f/topic/326513-28012025




Definire ram oltre banco 0, pic16f18857


Messaggi consigliati

Inserito:

Salve ho un problema definito ed utilizzato leprime 96 variabili ram banco 0 con il comando cblock(pic16f18857) non riesco a definire le altre come devo fare?? creare un nuovo cblock? e come passare al banco 1 per utilizzare le altre 80 variabili?


Inserita:

Che linguaggio stai usando? con quale compilatore?

 

Per selezionare i banchi si usno i bit RSP (RSP0 e RSP!) del registro STATUS oppure con il registro BSR se previsto.

Leggi queste note che ti chiariscono un po' meglio le idee su questa problematica.

 

Comunque io solitamente usavo linguaggio "C", compilato con picC, e non ho mai avuto preblemi con i banchi, il compilatore e l'allocatore risolvono tutti i problemi in modo trasparente.

Inserita:

Si sono in mplab ide con l'assembler, per questo pic più avanzato non si agisce più sullo status  ci sono fsr0l e fsr0h ma non so come usarli sul datasheet non fa esempi ma soprattutto non riesco ad inizializzarli.

Inizializzato il cblock/endc le prime 96 variabili dovrei accedere al secondo banco gpr che ne ha altre 80 ma co.e devo fare?

Inserita:

Dovresti studiarti il data sheet (io francamente non ne ho ne tempo ne, tantomeno, voglia).


 

Quote

 

Un grande vantaggio nella scrittura del sorgente è offerto dall' Assembler MPASM, che utilizza automaticamente l' Access Bank quando un operando ha un indirizzo inferiore a 0x80 (area di RAM iniziale del banco 0) e quando ha un indirizzo superiore a 0xF80 (area degli SFR), ignorando la gestione BSR dei banchi. Questo consente di disporre di una parte della RAM e di tutti i registri abolendo completamente qualsiasi gestione di switch dei banchi. Ovviamente questo richiede che nel sorgente si siano utilizzati nomi simbolici e non valori assoluti, in quanto le denominazioni di molti SFR restano identiche tra PIC16 e PIC18, ma il loro indirizzo assoluto in memoria è completamente diverso.

Il meccanismo dell' Access Bank è automatico quando sono utilizzati aree di memoria indirizzabili su 12 bit (fino a 0080h - GPR del Bank0) oppure superiore a 0F80h (SFR nella seconda metà del Banco 15).
Quando si accede a locazioni nell' area 0000h-007Fh o 0F80h-0FFFh, il contenuto di BSR è ignorato.
Si intende che per sfruttare l' automatismo sarà necessario utilizzare non i valori assoluti, ma le label indicative sia dei GPR che degli SFR.

 

 

Non so se questo si possa applicare anche al tuo PIC.

Inserita:
5 ore fa, giacomo56 ha scritto:

Ciao. Quale versione di assembler usi? 

 

Ciao, in mplab mi pare ci sia caricato mpasm 7.76 perche?

Inserita:

Perchè io ho MPLAB X v6.15 con installato il pic-as v2.41 che è diverso da MPASM e dove non si usa più cblock.

Per l'uso dei registri FSR0 e FSR1 può esserti utile questo esempio.

Ciao

 

 

 

 

Crea un account o accedi per commentare

Devi essere un utente per poter lasciare un commento

Crea un account

Registrati per un nuovo account nella nostra comunità. è facile!

Registra un nuovo account

Accedi

Hai già un account? Accedi qui.

Accedi ora
×
×
  • Crea nuovo/a...