- Messaggi: 105
- Ringraziamenti ricevuti 5
Accumulatore o registro W del PIC16F84A
12 Anni 2 Settimane fa #1
da mikysmcv
Accumulatore o registro W del PIC16F84A è stato creato da mikysmcv
Buonasera a tutti ho una curiosità,da neofita dei microcontrollori, in merito all'accumulatore o registro W, in particolare ho capito che per il PIC16F84A ogni opcode di una istruzione non può essere più grande di 14 bit e per questo motivo è necessario ricorrere a due istruzioni per ad esempio inserire in una locuzione di memoria un valore e quindi si usa come appoggio il registro W.
Per microcontrollori molto più recenti questo problema è risolto, ovvero con un unica istruzione è possibile inserire un valore in una locuzione di memoria, o è necessario ricorre sempre al registro W e quindi usare due istruzioni?
Grazie per le eventuali risposte.
Per microcontrollori molto più recenti questo problema è risolto, ovvero con un unica istruzione è possibile inserire un valore in una locuzione di memoria, o è necessario ricorre sempre al registro W e quindi usare due istruzioni?
Grazie per le eventuali risposte.
Si prega Accedi o Crea un account a partecipare alla conversazione.
- mikysmcv
- Autore della discussione
- Premium Member
Riduci
Di più
12 Anni 2 Settimane fa #2
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Accumulatore o registro W del PIC16F84A
Ciao,
il registro W nei PIC16 e' un po' particolare perche' rappresenta l'accumulatore.
Il suo utilizzo nelle operazioni che hai descritto non e' obbligatorio ma e' una scelta dell'architettura dei PIC, infatti altri microcontrollori non fanno uso dell'accumulatore per fare operazioni di questo tipo.
In generale pero' scrivere un dato in una locazione di memoria richiede spesso un'esecuzione piu' lunga e con due parole istruzione.
Ogni istruzione con n bit ha x bit dedicati all'opcode che rappresenta il codice univoco che identifica l'operazione.
Per tale ragione i bit rimanenti per un dato o un indirizzo saranno n-x . Se a 14 bit togli 6 bit per un opcode e 8 bit per scrivere un dato, hai zero bit rimanenti per puntare un indirizzo. In altri termini potresti pensare anche di avere 8 bit per l'indirizzo e usare un registro noto per il dato (che deve essere preventivamente scritto). Con l'opcode si possono fare delle ottimizzazioni al fine di avere un maggior numero di bit per l'indirizzo.
...morale della favola, il tutto non e' una legge fisica ma semplicemente una scelta che i progettisti del PIC16 hanno fatto.
Microcontrollori di marche diverse usano in generale altri approcci, ma le problematiche da risolvere sono le stesse.
Saluti,
Mauro
il registro W nei PIC16 e' un po' particolare perche' rappresenta l'accumulatore.
Il suo utilizzo nelle operazioni che hai descritto non e' obbligatorio ma e' una scelta dell'architettura dei PIC, infatti altri microcontrollori non fanno uso dell'accumulatore per fare operazioni di questo tipo.
In generale pero' scrivere un dato in una locazione di memoria richiede spesso un'esecuzione piu' lunga e con due parole istruzione.
Ogni istruzione con n bit ha x bit dedicati all'opcode che rappresenta il codice univoco che identifica l'operazione.
Per tale ragione i bit rimanenti per un dato o un indirizzo saranno n-x . Se a 14 bit togli 6 bit per un opcode e 8 bit per scrivere un dato, hai zero bit rimanenti per puntare un indirizzo. In altri termini potresti pensare anche di avere 8 bit per l'indirizzo e usare un registro noto per il dato (che deve essere preventivamente scritto). Con l'opcode si possono fare delle ottimizzazioni al fine di avere un maggior numero di bit per l'indirizzo.
...morale della favola, il tutto non e' una legge fisica ma semplicemente una scelta che i progettisti del PIC16 hanno fatto.
Microcontrollori di marche diverse usano in generale altri approcci, ma le problematiche da risolvere sono le stesse.
Saluti,
Mauro
Ringraziano per il messaggio: mikysmcv
Si prega Accedi o Crea un account a partecipare alla conversazione.
12 Anni 2 Settimane fa #3
da mikysmcv
Risposta da mikysmcv al topic Re: Accumulatore o registro W del PIC16F84A
Grazie Mauro per la risposta , avrei un'altra curiosità, ma i PIC18 che ho intenzione di iniziare a studiare più in là attraverso il tuo manuale ( per adesso vorrei capire un pò il PIC16F84A in quanto ho già dei libri su questo ) hanno anche loro una lunghezza massima di 14 bit per le istruzioni ?
Si prega Accedi o Crea un account a partecipare alla conversazione.
- mikysmcv
- Autore della discussione
- Premium Member
Riduci
Di più
- Messaggi: 105
- Ringraziamenti ricevuti 5
12 Anni 2 Settimane fa #4
da Mauro Laurenti
Risposta da Mauro Laurenti al topic Re: Accumulatore o registro W del PIC16F84A
Ciao
I PIC18 pur essendo sempre ad 8 bit hanno un Program Counter da 21 bit per un'aria di memoria fino a 2MB.
I PIC18 non hanno il banking che fa impazzire quando programmi in assembly.
In ogni modo se programmi in C non avresti il problema del banking anche con i PIC16, visto che il Compilatore si preoccuperebbe di cambiare banco in maniera opportuna.
Saluti,
Mauro
I PIC18 pur essendo sempre ad 8 bit hanno un Program Counter da 21 bit per un'aria di memoria fino a 2MB.
I PIC18 non hanno il banking che fa impazzire quando programmi in assembly.
In ogni modo se programmi in C non avresti il problema del banking anche con i PIC16, visto che il Compilatore si preoccuperebbe di cambiare banco in maniera opportuna.
Saluti,
Mauro
Si prega Accedi o Crea un account a partecipare alla conversazione.
Moderatori: Mauro Laurenti, Pinna, StefA, Matteo Garia
Registrati al sito
Accedi a tutte le risorse e articoli non visibili pubblicamente, puoi registrarti con pochi passi.