Qualche nota sul PC
Può essere utile un chiarimento sulla funzione delle pagine della memoria
programma, che è uno dei punti più seccanti della struttura dei PIC.
Il PC può indirizzare un' area di 512 bytes.
Come un istruzione del programma viene eseguita, il PC conterrà l'indirizzo della prossima
istruzione del programma da eseguire. Il valore di PC è aumentato di uno ogni ciclo di istruzione, salvo
nel caso in cui l' istruzione cambia il contenuto del PC; queste sono, ad
esempio, le istruzioni che comprendono un salto.
|
Per una istruzione GOTO, i bit da 0 a 8 del PC sono contenuti nella
codifica dell' istruzione.
Il Program Counter basso (PCL) è mappato per PC per occupare i bit da
0 a 7. |
|
Per una istruzione CALL, ovvero ogni istruzione in cui il
PCL è la destinazione, 8 bit (da 0 a 7) del PC sono
forniti dall' istruzione stessa.
Tuttavia, PC <8> non ha spazio nella parola di istruzione, ma viene
sempre portato a 0.
Istruzioni in cui il PCL è la destinazione, o che lo modificano sono movwf
PC, addwf PC e bsf PC,
5. |
Quanto sopra è da considerare nel senso seguente:
- Essendo la codifica dell' istruzione in grado fornire tutti i
bit necessari e avendo a disposizione un massimo di 256 o 512 bytes di RAM,
è possibile con un GOTO raggiungere direttamente qualsiasi
locazione della memoria programma, senza alcuna manovra
addizionale.
- per una CALL o qualsiasi istruzione che modifica il PCL,
poichè PC<8> è azzerato, tutte le chiamate di subroutine o salti calcolati sono
limitati ai primi 256 bytes memoria di programma (anche
se lunga 512).
|
Inoltre, va tenuta sempre presente una cosa fondamentale:
Lo
stack dei Baseline è costituito solamente da due livelli.
Quindi è possibile chiamare una subroutine 1 che a sua volta
chiami una subroutine 2, ma quest' ultima NON può chiamare una
terza subroutine dato che i due livelli dello stack sono già pieni.
Non essendo disponibile un meccanismo di verifica dell' overflow, un
errore sullo stack manda in crash il programma. |
Una panoramica sul Program
Counter la trovate qui.
Maggiori chiarimenti su pagine
e banchi nei Baseline le trovate qui
|