Autor Tema: interrupcion Vs retfie, como borrar la direccion almacenada en la pila  (Leído 7192 veces)

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

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: interrupcion Vs retfie, como borrar la direccion almacenada en la pila
« Respuesta #15 en: 08 de Octubre de 2007, 14:28:04 »
ya ves si me sirve, muchas gracias. a ponerme con ello  :-/

un saludo y gracias

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: interrupcion Vs retfie, como borrar la direccion almacenada en la pila
« Respuesta #16 en: 08 de Octubre de 2007, 14:29:52 »
Me alegro. Espero noticias.

Saludos.  :-/ :-/
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado alogic.on

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 772
Re: interrupcion Vs retfie, como borrar la direccion almacenada en la pila
« Respuesta #17 en: 10 de Octubre de 2007, 17:00:15 »
Hola, pues aqui estoy con un esquema del codigo  :-)
en mi caso necesitaba que se enviase un byte por la usart como maximo cada 333,33 miliseg tenia ocupados el tmr0, y tmr1 con otros usos y en el bucle principal de programa poca cosa, se me ocurrio hacer una rutina de demora que sumandole el tiempo del bucle principal sumara 333ms y al final de este enviara una señal de active sensing, decia que no pudiese superar ese tiempo no que no tarde menos, pero si tardaba muy poco este byte de estatus se mezclaba con otras cadenas de datos, pues a cada envio de la usart el programa retornaba a la parte del bucle principal del programa,donde se encontraba cuando se produjo una interrupcion, acortando el tiempo de este antes de enviar la susodicha señal.

Al principio de cada subrutina he puesto a uno el bit por el que pregunta en el programa cuando la ha terminado, pero antes de cada envio pongo todos los bits por los que se puede preguntar en el bucle a cero asi al final de cada subrutina si ha habido un envio por la usart el programa retorna al principio cuando esta finaliza.

Código: ASM
  1. PROGRAMA
  2.                         BCF             STATUS,RP0
  3. RETRO_4         CALL    DEMORA_4                ;RETRASO DE 75MS       
  4.                         BTFSS   LECTOR,7                ;SI ESTÁ A UNO SALTA Y CONTINUA NORMALMENTE
  5.                         GOTO    RETRO_4                 ;SI ESTABA A CERO HACE UN RETRASO DE 50MS
  6.                         BSF             LECTOR,7                ;LO PONE A UNO PARA QUE LO PONGA A CERO DEMORA_4
  7. RETRO_3         CALL    DEMORA_3                ;RETRASO DE 75MS
  8.                         BTFSS   LECTOR,6                ;SI ESTÁ A UNO SALTA Y CONTINUA NORMALMENTE
  9.                         GOTO    RETRO_4                 ;SI ESTABA A UNO HACE UN RETRASO DE 50MS
  10.                         BSF             LECTOR,6                ;LO PONE A UNO PARA QUE LO PONGA A CERO DEMORA_3
  11. RETRO_2         CALL    DEMORA_2                ;RETRASO DE 75MS
  12.                         BTFSS   LECTOR,5                ;SI ESTÁ A UNO SALTA Y CONTINUA NORMALMENTE
  13.                         GOTO    RETRO_4                 ;SI ESTABA A CERO HACE UN RETRASO DE 50MS
  14.                         BSF             LECTOR,5                ;LO PONE A UNO PARA QUE LO PONGA A CERO DEMORA_2
  15. RETRO_1         CALL    DEMORA_1                ;RETRASO DE 75MS
  16.                         BTFSS   LECTOR,4                ;SI ESTÁ A UNO SALTA Y CONTINUA NORMALMENTE
  17.                         GOTO    RETRO_4                 ;SI ESTABA A CERO HACE UN RETRASO DE 50MS
  18.                         BCF             LECTOR,4                ;LO PONE A UNO PARA QUE LO PONGA A CERO DEMORA_1
  19.                        
  20. RETRO           CALL    CUE_SSP                 ;LLAMADA QUE NO PERMITE QUE TMR1 SOBREPASE 128-128
  21.                         CALL    REFRESCO_TMR0   ;REFRESCA TMR0 EN CASO DE HABER SALTADO UN STOP
  22.                         BTFSS   LECTOR,3                ;TESTEA QUE HAYA SIDO CORREGIDO EL TIMER Y EL SPP_REG ANTES DE EL ENVIO
  23.                         GOTO    RETRO_4
  24.                         BSF             LECTOR,3           ;LO PONE A UNO PARA QUE LO PONGA A UNO CUE_SPP
  25.                         MOVF    SENSING,W               ;MUEVE SENSING INFO http://www.eumus.edu.uy/docentes/jure/midi/#2.3.5
  26.                         MOVWF   REG_ENV_USART  
  27.                         CALL    ENVIAR_USART    ;Y LO ENVIA POR LA USART
  28.                         BCF             LECTOR,3
  29.                         GOTO    PROGRAMA               
  30.                         END

gracias y un saludo
 
 


 

anything