project76 Inserito: 11 novembre 2023 Segnala Share Inserito: 11 novembre 2023 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? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 11 novembre 2023 Segnala Share Inserita: 11 novembre 2023 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. Link al commento Condividi su altri siti More sharing options...
project76 Inserita: 11 novembre 2023 Autore Segnala Share Inserita: 11 novembre 2023 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? Link al commento Condividi su altri siti More sharing options...
Livio Orsini Inserita: 11 novembre 2023 Segnala Share Inserita: 11 novembre 2023 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. Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 11 novembre 2023 Segnala Share Inserita: 11 novembre 2023 Ciao. Quale versione di assembler usi? Link al commento Condividi su altri siti More sharing options...
project76 Inserita: 11 novembre 2023 Autore Segnala Share Inserita: 11 novembre 2023 5 ore fa, giacomo56 ha scritto: Ciao. Quale versione di assembler usi? Ciao, in mplab mi pare ci sia caricato mpasm 7.76 perche? Link al commento Condividi su altri siti More sharing options...
giacomo56 Inserita: 11 novembre 2023 Segnala Share Inserita: 11 novembre 2023 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 Link al commento Condividi su altri siti More sharing options...
Messaggi consigliati
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 accountAccedi
Hai già un account? Accedi qui.
Accedi ora