Autor Tema: Manejo de la pila de interrupciones en PICs 18xxx (PUSH y POP)  (Leído 2339 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado tornar

  • PIC18
  • ****
  • Mensajes: 342
Manejo de la pila de interrupciones en PICs 18xxx (PUSH y POP)
« en: 27 de Diciembre de 2004, 03:21:00 »
Hola, me gustaria saber si alguien sabe exactamente como funcionan las sentencias PUSH y POP de manejo de la pila de interrupciones, por ejemplo, si tienes los valores 1,2,3,4,5 en la pila, y usas una sentencia POP, la cima de la pila pasa a ser 2, pero el valor 1 sigue estando en la pila??

Tambien me gustaria saber si es posible grabar en variables por ejemplo ls valores de la pila de interrupciones, o el valor del CP en un determinado momento.

Saludos Giño

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Manejo de la pila de interrupciones en PICs 18xxx (PUSH y POP)
« Respuesta #1 en: 27 de Diciembre de 2004, 06:00:00 »
Hola

La pila funciona asi, si tienes los valores 1,2,3,4,5 en la pila (de mas a menos).

1,2,3,4,5
POP
2,3,4,5
POP
3,4,5
POP
4,5
POP
5
POP
<pila vacia>

y con push lo mismo:
PUSH 1
1
PUSH 2
2,1
PUSH 3
3,2,1
PUSH 4
4,3,2,1
PUSH 5
5,4,3,2,1


salu2

Desconectado tornar

  • PIC18
  • ****
  • Mensajes: 342
RE: Manejo de la pila de interrupciones en PICs 18xxx (PUSH y POP)
« Respuesta #2 en: 28 de Diciembre de 2004, 03:14:00 »
Hola Manex, otra pregunta respecto al tema de la pila, cuando tu usas una sentencia pop, el valor que sacas en la pila no se carga en el CP, no? Y existe alguna forma de salvar dicho valor en una variable, ya sea al usar la sentencia PUSH o POP??


Saludos Giño

Desconectado manex_1987

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1127
RE: Manejo de la pila de interrupciones en PICs 18xxx (PUSH y POP)
« Respuesta #3 en: 28 de Diciembre de 2004, 04:41:00 »
Hola

No se de que PIC me hablas, te hablo refiriendome al 18F458, cuyo datasheet acabo de mirar. La instruccion POP saca el valor del stack y no lo carga en el CP, simplemente lo descarta.

El stack puede ser manejado como cualquier otro registro, mediante los registros STKPTR, TOSU, TOSH y TOSL. Para mas informacion, mira en el datasheet como se manipulan esos registros.

salu2