Come generare ritardi precisi con NOP CALL e GOTO

Come generare dei ritardi precisi nei microcontrollori grazie all'utilizzo dei cicli macchina NOP e delle istruzioni CALL e GOTO.

Generare ritardi precisi con delle semplici istruzioni assembler

Nel caso in  cui sia necessario generare dei brevi ritardi, è possibile utilizzare una sequenza di istruzioni NOP ciascuna delle quali introduce un ritardo di 1 ciclo istruzione (per i PIC 1 ciclo istruzione corrisponde a 4 cicli di clock). Ecco alcuni accorgimenti per ottimizzare al massimo le dimensioni del codice.
Per introdurre un ritardo di due cicli è possibile utilizzare due istruzioni NOP, ma lo stesso risultato è ottenibile impiegando una sola istruzione goto $+1. “$” indica il valore corrente del program counter per cui l’istruzione goto $+1 non fa altro che saltare all’istruzione successiva. Il vantaggio è che l’istruzione goto viene eseguita in due cicli istruzione per cui  l’effetto  è lo  stesso delle due  istruzioni  NOP risparmiando però una locazione della memoria programma.
Se il ritardo deve essere di quattro cicli istruzione è possibile sfruttare una qualsiasi istruzione return già presente nel codice (alla fine di qualche subroutine).
La tecnica consiste nell’etichettare l’istruzione return, quindi eseguire una call verso l’etichetta così impostata. L’esecuzione della call impiega due cicli e provoca un salto all’istruzione return la quale viene eseguita anch’essa in due  cicli  ritornando all’istruzione successiva alla call. Poiché la return era già presente nel codice, con questo accorgimento si genera un ritardo di quattro cicli con una sola istruzione call.

NOP
NOP            ;2 istruzioni, 2 cicli
;**************************************

Goto $+1       ;1 istruzione, 2 cicli

;**************************************

Call etichetta  ;1 istruzione, 4 cicli
…
etichetta return
;**************************************
Scarica subito una copia gratis

3 Commenti

  1. Maurizio 28 Novembre 2015
  2. Emanuele 28 Novembre 2015
  3. Ernesto Sorrentino 28 Novembre 2015

Scrivi un commento

Seguici anche sul tuo Social Network preferito!

Send this to a friend