subrutinas programacion

Páginas: 7 (1531 palabras) Publicado: 17 de junio de 2013
Las Subrutinas

La Instrucción CALL
El PIC 16f84, dentro de su set de instrucciones, y
para llamar a las subrutinas, posee la instrucción
CALL.
Esta instrucción, lo que hace es guardar en la
PILA, la dirección de retorno (que es la dirección
siguiente a la que se encuentra la propia
instrucción call) y luego salta a la dirección
indicada en la instrucción CALL.
La última instrucciónque nos encontraremos en
una subrutina debe ser una instrucción de retorno
(RETURN ó RETLW).
CCFF DPE MÓDULO DE PROYECTOS

2

La Instrucción CALL
Las subrutinas, se deben colocar entre las
primeras 256 posiciones de memoria, debido a que
el bit 8 del PC se pone a 0 si se ejecuta un CALL o
cualquier instrucción que modifique el valor del PC.
Las ejecución de subrutinas, como cualquierprograma, pueden modificar el contenido de los
registros y con toda seguridad modificarán el
contenido del registro de STATUS.
Como ya se ha indicado anteriormente, la pila
es una zona de RAM que escapa al control del
programador, y en la cual no se pueden guardar
contenidos de registros (esto es así para los PIC).
CCFF DPE MÓDULO DE PROYECTOS

3

La Instrucción CALL
Si tenemos encuenta lo anterior, enseguida
comprenderemos que al retornar de una subrutina
los valores que nos encontraremos en ciertos
registros estarán corruptos y no se podrán utilizar
dentro del programa principal.
Por lo tanto, lo primero que se debe hacer en el
programa de atención a una subrutina es salvar los
contenidos de los registros que serán modificados
dentro de ella; para justamente antesde retornar
podamos restaurar dichos registros con sus
contenidos originales (antes de efectuar el call).
Gráficamente sería como sigue:
CCFF DPE MÓDULO DE PROYECTOS

4

Manejo De Una Pila Auxiliar
Inicio

Secuencia de
Instrucciones para
salvar los datos en la
pila
PUSH

Instrucción

Instrucción

CALL SUB_1
Instrucciones propias
de la subrutina

Instrucción

InstrucciónSecuencia de
Instrucciones para
restaurar el valor a los
registros

S
U
B
R
U
T
I
N
A

1

POP

Fin
RETURN ó RETLW

CCFF DPE MÓDULO DE PROYECTOS

5

Salvar y Restaurar Registros (1)
A la vista del juego de instrucciones, salvar y
restaurar los registros sin modificar sus
contenidos no es fácil ya que este micro no
posee las instrucciones PUSH y POP.
Además elregistro W debe salvarse el primero
ya que todos los demás registros deben pasar
por W para el almacenamiento temporal de sus
valores.
Microchip recomienda la siguiente secuencia de
código que permite salvar y restaurar los
registros sin modificarlos.
CCFF DPE MÓDULO DE PROYECTOS

6

Salvar y Restaurar Registros (2)
PUSH:
MOVWF W_TEMP

; Copia W en TEMP register, esta instrucción
; nomodifica el R. De STATUS
SWAPF STATUS, W
; Swap R. De status y déjalo en W
MOVWF STATUS_TEMP ; Salva status en el registro STATUS_TEMP

ISR :
:
; rutina de servicio a una interrupción ó cuerpo de subrutina
:
POP:
SWAPF STATUS_TEMP, W
MOVWF STATUS
SWAPF W_TEMP, F
SWAPF W_TEMP, W

; intercambia nibbles en el R.
; STATUS_TEMP y déjalo en W
; copia W en el R, STATUS
; Swap nibblesen W_TEMP y déja el
;resultado en W_TEMP
;Swap nibbles en W_TEMP
;y deja el resultado en W
7

Cálculo Del Tiempo de Ejecución de Una
Subrutina (1)
En numerosas ocasiones, se hace preciso calcular el tiempo que
tarda en ejecutarse un programa, o bien se desea
“entretener” el sistema un cierto tiempo para sincronizar
algunos eventos.
El tiempo de ejecución se puede calcular sumando eltiempo
que tarda en ejecutarse el conjunto de instrucciones en
estudio.
En el caso particular de los PIC, cada instrucción excepto las
de salto consumen un ciclo máquina, siendo el periodo de
dicho ciclo máquina de 4 periodos de reloj.
Si el reloj del sistema es de 4 Mhz, cada ciclo máquina ocupa
justamente 1 µsegundo.
Calculemos el tiempo que tarda en ejecutarse una típica rutina
de...
Leer documento completo

Regístrate para leer el documento completo.

Estos documentos también te pueden resultar útiles

  • Subrutinas
  • subrutinas
  • ejemplo de subrutinas java
  • Programacion
  • Programacion
  • Programacion
  • Programacion
  • Programacion

Conviértase en miembro formal de Buenas Tareas

INSCRÍBETE - ES GRATIS