Autor Tema: Necesito ayuda Urgente Programa con el Pic16f84a mplab  (Leído 8218 veces)

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

Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Necesito ayuda Urgente Programa con el Pic16f84a mplab
« en: 10 de Diciembre de 2011, 14:35:17 »
Holaaa necesito ayuda para realizar este ejercico que me an mandado os dejo el enunciado y el hadware exo con proteuss os lo agradeceria muchoo si me indicais como podria realizarloo.. Un saludooo Y GRACIAS
Un único pulsador de ON/OFF (cuando esta activada se enciende un led),, además tiene 4 sensores  (volumétricos, interruptores de puerta, cristales etc)  que detectan la entrada de un intruso cuando se activan proporcionan un ‘1’ en reposo ‘0’. Y como elementos de señalización tiene una bocina que se activa con ‘1’ y una lámpara estroboscópica  que se activa con un tren de pulsos de periodo 0,1 seg.

Funcionamiento:

Cuando se pulsador   ON se enciende indicador de ON y se pone todo en funcionamiento
* Encendido del led de ON
*Espera de 20 segundos para salir del coche
* Rastreo de sensores
* En el caso que algún sensor se active  esperar 20 segundos y activa bocina  y lámpara durante  2 minutos
* Si el sensor sigue activado, repetir la bocina y lámpara durante otros 2 minutos
*Para apagar la alarma o desactivarla mantener pulsado  OFF durante 10 segundos.
*Se queda en espera para empezar de nuevo.

 

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #1 en: 10 de Diciembre de 2011, 14:57:56 »
  Podrías subir el código que tengas hecho o como planteas hacer y así se te podrá ayudar brindando consejos de que es lo más conveniente. Ahora, si lo que quieres es el código hecho y funcional, creo que vas por mal camino.
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #2 en: 10 de Diciembre de 2011, 16:58:13 »
No no es lo que quiero el codigo exo.. lo que necesito sobre todo la cuenta de los 20 segundo que nose por donde meterle mano... lo estoi haciendo con interrupciones para el led on del encendido e utilizado la interrupcion externa y ahora estoy haciendo para el rastreo de los sensores por cambio de estado en algunos de los r4 al r7 del puerto b pero no me funciona... aki os dejo lo que llevo realizaaa porfavor exarmee una manooo!!!

;************************************************************
;PLANTILLA
;************************************************************

           LIST         P=16F84A      ; Tipo de PIC
         INCLUDE         "P16F84A.INC"   ; Definiciones de los registros internos
         ORG            0X00         ; Directiva que indica donde está el
         GOTO         CONFIPUERTOS   ; Salta hasta INICIO
         ORG            05h            ; Salva vector de interrupción
         GOTO         INT_EXT
         GOTO            SENSORES
;*************************************************************
;CONFIGURACION DE LOS PUERTOS
;*************************************************************

CONFIPUERTOS:
         
         BSF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 1
         BCF            TRISA,0         ;BIT 0 COMO SALIDA PUERTOA
         BCF            TRISA,1         ;BIT 1 COMO SALIDA PUERTOA
         BCF            TRISA,2         ;BIT 2 COMO SALIDA PUERTOA
         
         BSF            TRISB,0         ;BIT 0 COMO ENTRADA PUERTOB
         BSF            TRISB,4         ;BIT 4 COMO ENTRADA PUERTOB
         BSF            TRISB,5         ;BIT 5 COMO ENTRADA PUERTOB
         BSF            TRISB,6         ;BIT 6 COMO ENTRADA PUERTOB
         BSF            TRISB,7         ;BIT 7 COMO ENTRADA PUERTOB
         BCF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 0
         CLRF         PORTA
;*********************************************************************
;ENCENDIDO CON 0N/OFF
;*********************************************************************
         MOVLW         0X90
         MOVWF         INTCON
         BCF            INTCON,T0IF
         

INT_EXT:
ENCENDIDO:
         BTFSS         PORTB,0
         GOTO         ENCENDIDO   
         BSF            PORTA,0
         RETFIE         
         

   

         MOVLW         0X88
         MOVWF         INTCON
         BCF            INTCON,RBIF
SENSORES:         
         BSF            PORTA,1
         BSF            PORTA,2
         RETFIE
         END


como veiss ya e configurado los puertosss para sus fundioness y el led de encendidooo me funcioo bien... pero estoi liado con el rastreoo por que nunca e untilizado la interubcion rbie un saludoo y esperando respuestas...GRACIAS

Desconectado AngelGris

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 2480
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #3 en: 10 de Diciembre de 2011, 17:41:12 »
  Por lo que veo en tu código, cada vez que se produzca una interrupción, sea cual fuere, vas a ir a parar primeramente al bloque INT_EXT y te vas a quedar allí hasta que RB0 sea 1. Eso no sería correcto.

  Hasta de hacer algún proceso en el vector de interrupciones, debes evaluar cual fue la que se ejecutó...

Código: ASM
  1. interrupciones
  2.   bcf INTCON,GIE ; deshabilitar las interrupciones
  3.   btfss INTCONT,INTF ; testeo el bit de interrupcion externa
  4.   goto otra
  5.  
  6. interrupcion_externa
  7.   bsf PORTA,0 ; suponiendo que allí está conectado el led, lo encendemos
  8.   bcf INTCON,INTF ; borro el flag de interrupcion
  9.   retfie
  10.  
  11. otra
  12.   btfss INTCON,RBIF
  13.   retfie
  14.  
  15.   ;aca se hace el proceso de la interrupción por RB4-RB7
  16.  
  17.   movf PORTB,W ; se lee el puerto para que no exista mas la condicion de cambio de estado
  18.   bcf INTCON,RBIF ; se borra el flag
  19.   retfie
De vez en cuando la vida
nos besa en la boca
y a colores se despliega
como un atlas

Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #4 en: 11 de Diciembre de 2011, 01:33:04 »
NO SI LA DE INTERRUPCION EXTERNA LO TENGO SOLUCIONADO PERO LUEGO KIERO COMPROBARLO QUE HAY EN UN CAMBIO DEL PUERTO B  DE LA PUERTOB 4/7 ÀRA ACTIVAD DOS LED QEIS SERIAN SEMAFORO Y BOCINA... ESE SERIA ELPOREBLEM QUE TENDRIA QUE LA INT_EXT LA TENDRIA SOLUCIONADA.... Y Y A LUGO A APERTE NECESITO LA CUAESTA DE 20 SEG Y 2 MINUTOS PARA REALIZAR  LA CUENTA DE SOS CONTADORES PARA SOLUCIONAR EL PORGRAMA NOSE SI HACERLO CON SUBRUTINAS O TIMER... QUE SERIA LO MEJOR HACERLO POR DESPBORDAMIENTOOO UNSALUDO Y GRACIAS..

Desconectado stk500

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4919
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #5 en: 11 de Diciembre de 2011, 03:03:24 »
Hola Nandez! ante de que siga escribiendo mensaje te recomiendo que lea la Regla del foros.
gracias
Saludos

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #6 en: 12 de Diciembre de 2011, 00:14:29 »
Hola nandez. Sin ofender, cuesta mucho entender lo que queres decir si escribís de esa manera, no solo para mi sino para los que participan y no participan del foro. Por favor tenelo en cuenta para la próxima.

Con respecto a tu problema, para activar el temporizador TMR0 debes poner en alto el bit T0IE del registro INTCON, habiendo cargando previamente en el registro TMR0 el valor a partir del cual comenzara la cuenta y también habiendo configurado previamente el prescalador modificando el valor de los bits PS0, PS1 y PS2 del registro OPTION (OPTION_REG para el compilador).

Para determinar si la interrupción ha ocurrido debido a un desborde de TMR0 debes comprobar si la bandera de interrupción de la misma se encuentra en estado alto, para esto debes  verificar si el bit T0IF del registro INTCON se encuentra en alto, en caso afirmativo, hacer lo que sea necesario

Por otro lado, para activar las interrupciones por cambio de estado del los pines RB4 al RB7, debes poner en estado alto el bit RBIE del registro INTCON, y para verificar si la interrupción ha ocurrido debido a un cambio de estado en estos pines, debes verificar si el bit RBIF del registro INTCON se encuentra en alto, de nuevo, en caso afirmativo hacer lo que sea necesario

Un ejemplo de la subrutina del servicio de interrupción podría se la siguiente:
Código: ASM
  1. interrupcion       ;vector de interrupciones
  2.  
  3.        btfsc       INTCON, T0IF
  4.        call         T0IE_INT
  5.        btfsc       INTCON, INTF
  6.        call         RB0_INT
  7.        btfsc       INTCON, RBIF
  8.        call         RBIE_INT
  9.        retfie
  10.  
  11. T0IE_INT                               ;subrutina de interrupción por desborde de TMR0
  12.        bcf       INTCON, T0IF       ;en esta subrutina se debe cargar el valor de TMR0 nuevamente
  13.        ....
  14.        ....
  15.        return
  16.  
  17. RB0_INT                            ;subrutina de interrupción externa
  18.        bcf       INTCON, INTF
  19.        ....
  20.        ....
  21.        return
  22.  
  23. RBIE_INT                            ;subrutina de interrupción por cambio de estado de RB7:RB4
  24.        bcf       INTCON, RBIF
  25.        ....                            ;para saber cual es el pin provoco la interrupción, verificar el estado de cada uno de ellos
  26.        ....
  27.        return

Bueno, espero que te sirva, Saludos

pd: edito detalle en el código
« Última modificación: 12 de Diciembre de 2011, 03:55:50 por martincnc »

Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #7 en: 12 de Diciembre de 2011, 10:49:05 »
Muchas gracias.. ya tengo configurado las interrupciones para la inte_ext y para el cambio de estado del puertob ahora lo que nose realizar es la subrutinaa para el tiempo de 20segundo y 2 minutos... me gustara hacerlo con call para realizar los retardos para la realizacion de los tiempo y luego con return volver al programa principal.. espero que me entiendas.. para alguna duda en el pirmer mensaje tengo el enunciado del problema. aquei os dejo lo que tengo realizado hasta el momento un saludo y gracias!!

;DESCRIPCION:Un único pulsador de ON/OFF (cuando esta activada se enciende un led),,
;además tiene 4 sensores  (volumétricos, interruptores de puerta, cristales etc) 
;que detectan la entrada de un intruso cuando se activan proporcionan un ‘1’ en reposo ‘0’
;. Y como elementos de señalización tiene una bocina que se activa con ‘1’ y una lámpara estroboscópica  que se activa con un tren de pulsos de periodo 0,1 seg.

;Funcionamiento:

;Cuando se pulsador   ON se enciende indicador de ON y se pone todo en funcionamiento
;* Encendido del led de ON
;*Espera de 20 segundos para salir del coche
;* Rastreo de sensores
;* En el caso que algún sensor se active  esperar 20 segundos y activa bocina  y lámpara durante  2 minutos
;* Si el sensor sigue activado, repetir la bocina y lámpara durante otros 2 minutos
;*Para apagar la alarma o desactivarla mantener pulsado  OFF durante 10 segundos.
;*Se queda en espera para empezar de nuevo.
;**************************************************************
;CONTADORES
;**************************************************************


;************************************************************
;PLANTILLA
;************************************************************

           LIST         P=16F84A      ; Tipo de PIC
         INCLUDE         "P16F84A.INC"   ; Definiciones de los registros internos
         ORG            0X00         ; Directiva que indica donde está el
         GOTO         CONFIPUERTOS   ; Salta hasta INICIO
         ORG            05h            ; Salva vector de interrupción
         GOTO         INICIO
         
;*************************************************************
;CONFIGURACION DE LOS PUERTOS
;*************************************************************

CONFIPUERTOS:
         
         BSF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 1
         BCF            TRISA,0         ;BIT 0 COMO SALIDA PUERTOA
         BCF            TRISA,1         ;BIT 1 COMO SALIDA PUERTOA
         BCF            TRISA,2         ;BIT 2 COMO SALIDA PUERTOA
         
         BSF            TRISB,0         ;BIT 0 COMO ENTRADA PUERTOB
         BSF            TRISB,4         ;BIT 4 COMO ENTRADA PUERTOB
         BSF            TRISB,5         ;BIT 5 COMO ENTRADA PUERTOB
         BSF            TRISB,6         ;BIT 6 COMO ENTRADA PUERTOB
         BSF            TRISB,7         ;BIT 7 COMO ENTRADA PUERTOB
         BCF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 0
         CLRF         PORTA
;*********************************************************************
;CONFIGURACION DEL INTCON
;*********************************************************************
         MOVLW         0X9C         ;ACTIVACION DE INTERRUPCIONES
         MOVWF         INTCON         
         BCF            INTCON,T0IF      ;BANDERA INT_EXT PUESTA A CERO
         BCF            INTCON,RBIF      ;BANDERA CAMBIO DE ESTADO PUERTO B A CERO
         
;**************************************************
;ENCENDIDO DEL LED ON
;****************************************************


INICIO:


ENCENDIDO:
         BTFSS         PORTB,0         ;SI HAY UN 1 EN EL PURTOB,0 ENCENDIDO DEL LED ON
         GOTO         ENCENDIDO   
         BSF            PORTA,0         ;ENCENDIDO DEL LED ON
         
         

SENSOR1:                        
         BTFSS         INTCON,RBIF      ;SI ESTA ACTIVADO EL FLAG DE CAMBIO DE ESTADO EN EL PUERTOB,4-7
                                 ;SE ACTIVAN LA BOCINA Y LAMPARA
         GOTO         SENSOR1
         BSF            PORTA,1         ;ACTIVACION BOCINA
         BSF            PORTA,2         ;ACTIVACION LAMPARA
         RETFIE                     ;RETORNO DE INTERRUPCION
         
         END

Desconectado martincnc

  • Colaborador
  • PIC18
  • *****
  • Mensajes: 352
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #8 en: 13 de Diciembre de 2011, 14:05:53 »
Hola nandez.

Para lograr retardos largos va a ser necesario que uses uno o mas registros auxiliares además del temporizador TMR0. En pocas palabras, el temporizador configurado con el prescalador en 1:256 y comenzando la cuenta desde cero solo es posible alcanzar como máximo unos 65536 ciclos de instrucción (256*256 ciclos de instrucción = 65.536uS) entre cada interrupción.

El segmento de código para lograr un retardo de 2 minutos con una frecuencia de reloj de 4MHz (1MIPS) seria el siguiente (256 prescalador * 256 TMR0 * 256 aux1 * 7 aux2 = 117.440.512 uS ~ 2 minutos):

Código: ASM
  1. ;**** En el programa principal: ****
  2.  
  3.         bcf         STATUS, RP1
  4.         bsf         STATUS, RP0          ;banco 1
  5.  
  6.         ....
  7.         ....
  8.         movlw     b'10000111'
  9.         movwf     OPTION_REG         ;pull-up's desactivadas, prescalador para TMR0 en 1:256
  10.  
  11.         bcf         STATUS, RP0          ;banco 0
  12.  
  13.         movlw     d'255'
  14.         movwf     aux1                    ;aux1 en d'255'
  15.  
  16.         movlw     d'7'
  17.         movwf     aux2                    ;aux2 en d'7'
  18.  
  19.         clrf         TMR0                   ;TMR0 en d'0'
  20.  
  21.         ....
  22.         ....
  23.  
  24.         bsf         INTCON, GIE         ;habilitar interrupciones globales
  25.         bsf         INTCON, T0IE        ;habilitar interrupciones por TMR0
  26.  
  27. bucle
  28.         goto        bucle
  29.  
  30. ;*************************************************
  31.  
  32. ;**** En la subrutina de interrupción por TMR0: ****
  33.  
  34.         bcf         INTCON, T0IF
  35.  
  36.         decfsz     aux1, 1
  37.         retfie
  38.  
  39.         movlw     d'255'
  40.         movwf     aux1                    ;aux1 en d'255'
  41.  
  42.         decfsz     aux2, 1
  43.         retfie
  44.  
  45.         movlw     d'7'
  46.         movwf     aux2                    ;aux2 en d'7'
  47.  
  48.         ....                                    ;**** acción que se desea realizar ****
  49.         ....                                    ;**** acción que se desea realizar ****
  50.  
  51.         retfie
  52.  
  53. ;************************************************

Con este ejemplo ya estarías a un paso de terminar con tu proyecto, espero que te sirva, Saludos!
« Última modificación: 13 de Diciembre de 2011, 14:34:29 por martincnc »

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #9 en: 13 de Diciembre de 2011, 14:41:47 »
Leyendo este hilo desaparecen, como por arte de magia, casi todas las dudas que tu tienes:

http://www.todopic.com.ar/foros/index.php?topic=24720.0

Fijate por ejemplo esta.

Citar
ahora lo que nose realizar es la subrutinaa para el tiempo de 20segundo y 2 minutos...

Dentro de ese hilo la tienes aqui, aunque seria mejor que lo leyeras entero.

http://www.todopic.com.ar/foros/index.php?topic=24720.msg201407#msg201407

Con ese ejemplito y unos cambios pequeños, listo. Te tendras que currar un poco la interrupcion porque tu tienes varias y tendras que chequear los flags para saber cual fue la que salto.

Leete eso, intenta hacerlo y si tienes dudas, despues pregunta.


Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #10 en: 14 de Diciembre de 2011, 04:33:29 »
Muchassss Graciass voi a probarlooo y a intentar hacer el ejerciciooo que me traee malooo ejejej ya os preguntare algoo si necesitoooo gracias y un saludo..

Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #11 en: 14 de Diciembre de 2011, 05:36:19 »
Martin gracias por la subrutina realizada por el desbordamiento del tmr0... pero ahora quiero realizar que una vez que pase los 2minutos  poner bcf porta,1 y porta,2 pero si siguen activos alguno de los estados del puertob que vuelva a contar los 2 minuto... lo e probado preguntando por el estado de la bandera del tmr0 pero no m funcionaa si me lo podriais explicar lo agradeceriaa que lo tengo que entregar entre esta seman y la que viene y supongo que lo que me queda es facil...en resumen necesito que una vez pasado los 2 minutos se ponga a cero el porta,1 y el porta,2 si no hay un 1 en el portb4 a la portb de la 7 si sigue habiendo un 1 se vuelve a realizar lo 2 minutos... muchass gracias y sigoo porbandoooo GRACIASS!!!!! UN SALUDOOO

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #12 en: 14 de Diciembre de 2011, 08:19:41 »
Citar
...en resumen necesito que una vez pasado los 2 minutos se ponga a cero el porta,1 y el porta,2 si no hay un 1 en el portb4 a la portb de la 7 si sigue habiendo un 1 se vuelve a realizar lo 2 minutos... muchass gracias y sigoo porbandoooo GRACIASS!!!!! UN SALUDOOO

Si lo tienes por interrupcion en RB4-RB7 basta que cuando empieza a hacer las temporizaciones desactives INTCON,RBIE al acabar de hacer las temporizaciones activas de nuevo el  INTCON,RBIE y si hay cambio ya salta, pero es posible que mientras estaban desactivadas se pusiera a 1 alguna entonces:

   movlw 0X0F  ;mascara para poner a 0 nibble bajo
   andwf  PORTB,0  ;aqui quedara nibble bajo a 0 y el alto que es el que quieres leer
                            ;quedara con su valor
   btfss   STATUS,Z  ;miramos si es 0 o es otro valor
   goto    NO_ES_CERO  ;hay alguno activado, volvera a temporizacion
   goto    ES_CERO        ;va a apagar RA1 y RA2



Desconectado nandez

  • PIC10
  • *
  • Mensajes: 25
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #13 en: 14 de Diciembre de 2011, 15:03:48 »
Graciass tapii... pero tambien podria ralizarlooo  preguntando por la bandera si esta a 1 ej ;btfss intcon,rbif?? auque claro me faltaba ese detalle de cojer y bajar la bandera antes de que se porduzca la temporizacion.. y luego activar la interrupcion y pregunto si esta activa la bandera no??? es lo que yo kiero auque estado porbando la temporizacion de los 2 minutos y no m funciona nose si lo escrito mal..a qui os dejo como lo exo y ya m decis que aspectos tengo que cambirrr Muchisimass Graciasss!!!!!!!

;**************************************************************
;CONTADORES
;**************************************************************
CONTA_1      EQU         0X20
CONTA_2      EQU         0X21

;************************************************************
;PLANTILLA
;************************************************************

           LIST         P=16F84A      ; Tipo de PIC
         INCLUDE         "P16F84A.INC"   ; Definiciones de los registros internos
         ORG            0X00         ; Directiva que indica donde está el
         GOTO         CONFIPUERTOS   ; Salta hasta INICIO
         ORG            05h            ; Salva vector de interrupción
         GOTO         INICIO
         
;*************************************************************
;CONFIGURACION DE LOS PUERTOS
;*************************************************************

CONFIPUERTOS:
         
         BSF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 1
         BCF            TRISA,0         ;BIT 0 COMO SALIDA PUERTOA
         BCF            TRISA,1         ;BIT 1 COMO SALIDA PUERTOA
         BCF            TRISA,2         ;BIT 2 COMO SALIDA PUERTOA
         
         BSF            TRISB,0         ;BIT 0 COMO ENTRADA PUERTOB
         BSF            TRISB,4         ;BIT 4 COMO ENTRADA PUERTOB
         BSF            TRISB,5         ;BIT 5 COMO ENTRADA PUERTOB
         BSF            TRISB,6         ;BIT 6 COMO ENTRADA PUERTOB
         BSF            TRISB,7         ;BIT 7 COMO ENTRADA PUERTOB
         BCF            STATUS,RP0      ;SELECCIONAMOS EL BANCO 0
         CLRF         PORTA
;*********************************************************************
;CONFIGURACION DEL INTCON
;*********************************************************************
         MOVLW         0X9C         ;ACTIVACION DE INTERRUPCIONES
         MOVWF         INTCON         
         BCF            INTCON,T0IF      ;BANDERA INT_EXT PUESTA A CERO
         BCF            INTCON,RBIF      ;BANDERA CAMBIO DE ESTADO PUERTO B A CERO
         
;**************************************************
;ENCENDIDO DEL LED ON
;****************************************************


INICIO:


ENCENDIDO:
         BTFSS         PORTB,0         ;SI HAY UN 1 EN EL PURTOB,0 ENCENDIDO DEL LED ON
         GOTO         ENCENDIDO   
         BSF            PORTA,0         ;ENCENDIDO DEL LED ON
         
SENSORES:         

SENSOR1:                        
         BTFSS         INTCON,RBIF      ;SI ESTA ACTIVADO EL FLAG DE CAMBIO DE ESTADO EN EL PUERTOB,4-7
                                 ;SE ACTIVAN LA BOCINA Y LAMPARA
         GOTO         SENSOR1
         
         BSF            PORTA,1         ;ACTIVACION BOCINA
         BSF            PORTA,2         ;ACTIVACION LAMPARA
         
         CALL         DOSMINUTOS
         RETFIE                     ;RETORNO DE INTERRUPCION
         
         
;*****************************************************************************
;CONGIGURACION DEL OPTION
;****************************************************************************           
DOSMINUTOS:         
ESPERA:      

         BSF             STATUS, RP0        ;banco 1       
             MOVLW           B'10000111'
             MOVWF           OPTION_REG         ;pull-up's desactivadas, prescalador para TMR0 en 1:256
 
             BCF             STATUS, RP0        ;banco 0
          BCF            INTCON,RBIE
             MOVLW           d'255'
             MOVWF           CONTA_1            ;aux1 en d'255'
 
             MOVLW           d'7'
             MOVWF           CONTA_2            ;aux2 en d'7'
 
             CLRF            TMR0               ;TMR0 en d'0'
 
     
 
             BSF             INTCON, GIE         ;habilitar interrupciones globales
             BSF             INTCON, T0IE        ;habilitar interrupciones por TMR0
 
BUCLE:
             GOTO            BUCLE
 
;*************************************************
 
;**** En la subrutina de interrupción por TMR0: ****
 
             BCF            INTCON, T0IF
 
             DECFSZ         CONTA_1,1
             RETFIE
         MOVLW          d'255'
             MOVWF          CONTA_1                    ;CONTA_1 en d'255'
          DECFSZ         CONTA_2,1
             RETFIE
          MOVLW          d'7'
             MOVWF          CONTA_2                    ;CONTA_2 en d'7'
          BSF            INTCON,RBIE
         BTFSS         INTCON,RBIF
         GOTO         APAGADO
         GOTO         ESPERA


APAGADO:

         BCF            PORTA,1
         BCF            PORTA,2
         
         RETFIE
         RETURN
         END

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: Necesito ayuda Urgente Programa con el Pic16f84a mplab
« Respuesta #14 en: 14 de Diciembre de 2011, 15:15:09 »
perdon por la intromision,

pero el la tutina de 2minutos al final tienes puesto.

bucle
goto bucle

Con esto noo va aslir nunca de esa rutina. Deberias de sustituir ambas por la instruccion "Return"

Espero no tener osxidado mi ASM ;-) :D :mrgreen: :oops: :)
Todos los días se aprende algo nuevo.


 

anything