Autor Tema: que ? inthand swapf ssave porque a en interrupciones  (Leído 1815 veces)

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

Desconectado electronando

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 427
que ? inthand swapf ssave porque a en interrupciones
« en: 24 de Julio de 2005, 16:34:00 »
que tal yo conosco lo principal de asembler en pics y al hacer la interrupcion entiendo lo de salvar los registros en el banco 0
Define  INTHAND  _Interrupcion


wsave        var byte bank0 system  " estos registros en banco 0 obligatorio
ssave        var byte bank0 system
psave        var byte bank0 system
ticks        var byte bank0 system
Convert      var byte bank0 system
segundos     var byte bank0 system
minutos      var byte bank0 system

pero esto de a la hora de reponerlos poner un comando que me hace intercambio de bits por q esto se usa claro esta pero eso de el swapf por q no se varios q sabemos asembler nos preguntamos eso , si supiera solo basic lo dejaria pasar por alto pero por favor una ayuda no se si el señor sispic estar por alli ya q de el saque estos codigos de otro asunto
miren aca esta la duda
SalInt
    bcf   INTCON , T0IF  ; Resetea bandera de interrupcion por Timer0   
    bsf INTCON , GIE   ; Activa interrupciones generales
    movf  psave,w      ; restaura
    movwf PCLATH
    swapf ssave,w
    movwf STATUS
    swapf wsave,f
    swapf wsave,w
    retfie
EndAsm

no me cabe ese swapf por favor una respuesta y eso del pclath
tampoco aunque solo e trabajado con el pic 84a era el pc o contador de programa pero el pclath q vela en este entierro tiene no se deberian guardar los dos pcl el menos significativo y tb el pclath el mas sigificativo haber si me quito esta duda
locolocolocoLlorica

Desconectado Artifox

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 455
    • Quadbot
RE: que ? inthand swapf ssave porque a en interrupciones
« Respuesta #1 en: 25 de Julio de 2005, 14:53:00 »
Hola, lei tus dudas y a ver si te alaro algo... sabemos q el comando swapf lo q hace es intercambiar los 4 lsb con los 4 msb y guardarlo ya sea en el mismo registro(f) o en el registro de trabajo w.  en resumen lo unico que hace es restituir el registro w. Pero puede ser sustituido por:
movf wsave,w
para no estar perdiendo el tiempo para restituirlo... Lo del pclath me parece... Fumadores porque al ocurrir la interrupcion, se guarda en la pila la direccion donde ocurrio la interrupcion, entonces en la pila guardamos el pcl q sera restituido automaticamoente cuando terminemos nuestro codigo de interrupcion...Por ello solo guardamos la parte alta pclath, ya que hay nos indica en q pagina estamos, aunque con el 16f84 no lo necesitamos, pues solo cuenta con 1 sola pagina.

Espero haber aclarado tus dudas... Rebotado
Video Quadbot
Saludos desde mi querido Perú.
Si realmente queremos que el mundo cambie debemos empezar por nosotros mismos... ;)

Desconectado electronando

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 427
RE: que ? inthand swapf ssave porque a en interrupciones
« Respuesta #2 en: 25 de Julio de 2005, 21:23:00 »
bueno gracias por la respuesta artifox eso del pclath me lo olia es q la verdad estaba probando las interrupciones algo simple y usando asembler funciona o pero
al poner lineas de asembler esta bien exquisito e pues no es como el mplab debes de ser bien riguroso al poner llas eriquetas no debajo de instrucciones asm sino el microcode te manda error en amarillo , y se cumplio lo q dijo el amigo sispic sobre de si estas usando un bucle por ejemplo


etiqueta:

led1=1
pause 1000
led1=0
pause 1000
goto etiqueta

y la rutina de interrupcion
interrupcion:
asm
....rutina
endasm
led2=1
pause 5000
led2=0
asm
...regreso registros salvados
retfiee
endasm
me da una colgadera despues de interrumpido
q si esta prendido
y lo interrumpo por el puerto pb0
sr prende led2
pero al final quedan los dos prendidos
osea se cuelga
aunque lo e slucionado pero de una manera que no me gusto pense que derepente habia otra
bueno gracias por las aclaraciones revisare mis apuntesSonrisa Gigante

Desconectado Sispic

  • Moderadores
  • PIC24H
  • *****
  • Mensajes: 1685
    • winpic800
RE: que ? inthand swapf ssave porque a en interrupciones
« Respuesta #3 en: 26 de Julio de 2005, 05:50:00 »
se puede solucionar y veo que dominas asm , solo echando el ojo a la rutina pause y veras los registros que has de salvar al entrar en la interrupcion y restaurar al salir.