Autor Tema: Duda sobre un proyecto  (Leído 2989 veces)

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

Desconectado cardem

  • PIC10
  • *
  • Mensajes: 4
Duda sobre un proyecto
« en: 02 de Febrero de 2014, 02:52:57 »
Hola, estoy iniciandome en este asunto de los pics, con el 16f84, que es el que tengo, he hecho varias pràcticas y hasta ahora màs o menos todobien.
Un amigo me pide algo sencillo; activar una salida por 10 minutos y apagarla por tres minutos, repitiendo el ciclo infinitamente, pero no sè como hacerlo, alguien sabe? gracias y saludos.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Duda sobre un proyecto
« Respuesta #1 en: 02 de Febrero de 2014, 06:39:45 »
Bienvenido al foro cardem.

Eso que quieres hacer es muy sencillo, pero aqui no hacemos los proyectos, ayudamos a hacerlos.

Dinos en que lenguaje programas. Intenta empezar a hacerlo.

En el foro hay cursos de C, Basic y asm.

Desconectado cardem

  • PIC10
  • *
  • Mensajes: 4
Re: Duda sobre un proyecto
« Respuesta #2 en: 02 de Febrero de 2014, 23:08:51 »
Hla, este es el programa, me marca errores que no comprendo.

;Activa RB0 durante 10 minutos, lo apaga 3 minutos y repite infinitamente con un 16F84A


 
LIST P=16F84A, ; usar PIC 16F84A
#include <p16f84A.inc>
 
__CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC ; code protec off
; power up timer on
; watchdog off
; osc XT
 

cblock 0C
d1
d2
d3
d4
d5
d6
d7
d8
endc
 
 
ORG 0
BSF STATUS,5 ; activa la pagina 1
MOVLW B'00000' ; carga 00000 en W
MOVWF TRISA ; puerto a todos salidas
MOVLW B'00000000' ; carga 00000000 en W
MOVWF TRISB ; puerto b todos salidaS
BCF STATUS,5 ; volvemos a la pagina 0
 
MOVLW B'00000000' ; ponemos a cero el
MOVWF PORTB ; el puerto b

 
INICIO ; etiqueta
BSF PORTB,0 ; pone a 1 RB0
CALL DEMORA10MIN ; llama a demora de 10 MINUTOS
BCF PORTB,0 ; pone a 0 RB0
CALL DEMORA3MIN ; llama a demora de 3 MINUTOS
GOTO INICIO ; va a inicio
 
;-------------------------------------------------------------
; ---------------------------------------
 
DEMORA10MIN 

;599999992 cycles
   movlw   0xA9
   movwf   d1
   movlw   0x41
   movwf   d2
   movlw   0xFA
   movwf   d3
   movlw   0x04
   movwf   d4
Delay_0
   decfsz   d1, f
   goto   $+2
   decfsz   d2, f
   goto   $+2
   decfsz   d3, f
   goto   $+2
   decfsz   d4, f
   goto   Delay_0

         ;8 cycles
   goto   $+1
   goto   $+1
   goto   $+1
   goto   $+1
RETURN
;---------------------------------------
 
DEMORA3MIN
;179999998 cycles
   movlw   0xFF
   movwf   d5
   movlw   0x2D
   movwf   d6
   movlw   0x32
   movwf   d7
   movlw   0x02
   movwf   d8
Delay_0
   decfsz   d5, f
   goto   $+2
   decfsz   d6, f
   goto   $+2
   decfsz   d7, f
   goto   $+2
   decfsz   d8, f
   goto   Delay_0

         ;2 cycles
   goto   $+1
RETURN



END ; fin de programa

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Duda sobre un proyecto
« Respuesta #3 en: 03 de Febrero de 2014, 07:56:52 »
Solo te da un error y es en esta etiqueta:

Delay_0

La tienes repetida, si le llamas en la de 3 minutos:


DEMORA3MIN
;179999998 cycles
   movlw   0xFF
   movwf   d5
   movlw   0x2D
   movwf   d6
   movlw   0x32
   movwf   d7
   movlw   0x02
   movwf   d8
Delay_1 
 decfsz   d5, f
   goto   $+2
   decfsz   d6, f
   goto   $+2
   decfsz   d7, f
   goto   $+2
   decfsz   d8, f
   goto   Delay_1
         ;2 cycles
   goto   $+1
RETURN

Seguro que ya te compila.

Prueba asi a ver si va, ojo no mire si el programa esta bien o no, porque estoy seguro que eso lo sabes hacer tu mejor que yo, solo mire por que no compilaba.

Desconectado cardem

  • PIC10
  • *
  • Mensajes: 4
Re: Duda sobre un proyecto
« Respuesta #4 en: 03 de Febrero de 2014, 12:44:30 »
LO reviso, muchas gracias.

Desconectado tapi8

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1506
Re: Duda sobre un proyecto
« Respuesta #5 en: 03 de Febrero de 2014, 15:36:23 »
Solo con ese cambio que te pongo arriba funciona bien, esta activado 600.000004seg (copiado del MPLAB) excede 4uS, y apagado esta 180.000004seg tambien excede 4uS, creo que 4uS en 10 y 3min son aceptables.

Desconectado cardem

  • PIC10
  • *
  • Mensajes: 4
Re: Duda sobre un proyecto
« Respuesta #6 en: 03 de Febrero de 2014, 19:10:52 »
Eres muy amable, muchas gracias, ya quedó funcionando al 100 %. Al final quedó así:



   LIST   P=16F84A,            ; usar PIC 16F84A
   #include <p16f84A.inc>

   __CONFIG _CP_OFF&_PWRTE_ON&_WDT_OFF&_XT_OSC   ; code protec      off
                     ; power up timer   on
                     ; watchdog      off
                     ; osc         XT
cblock 0C
PDel0   
PDel1   
endc


   ORG   0
   BSF   STATUS,5            ; activa la pagina 1
   MOVLW   B'00000'            ; carga 00000 en W
   MOVWF   TRISA               ; puerto a todos salidas
   MOVLW   B'00000000'            ; carga 00000000 en W
   MOVWF   TRISB               ; puerto b todos salidaS
   BCF   STATUS,5            ; volvemos a la pagina 0

   MOVLW   B'00000000'            ; ponemos a cero el
   MOVWF   PORTB               ; el puerto b
                     ; usando esta opcion se ahorran
                     ; 6 bytes

INICIO                     ; etiqueta
   BSF   PORTB,0               ; pone a 1 RB0
   CALL   DEMORA10MIN               ; llama a demora de 0,5 seg
   BCF   PORTB,0               ; pone a 0 RB0
   CALL   DEMORA3MIN               ; llama a demora de 0,5 seg
   GOTO   INICIO               ; va a inicio



DEMORA10MIN 


   cblock
   d1
   d2
   d3
   d4
   endc

         ;599999992 cycles
   movlw   0xA9
   movwf   d1
   movlw   0x41
   movwf   d2
   movlw   0xFA
   movwf   d3
   movlw   0x04
   movwf   d4
Delay_0
   decfsz   d1, f
   goto   $+2
   decfsz   d2, f
   goto   $+2
   decfsz   d3, f
   goto   $+2
   decfsz   d4, f
   goto   Delay_0

         ;8 cycles
   goto   $+1
   goto   $+1
   goto   $+1
   goto   $+1
        return               


DEMORA3MIN
; Delay = 180 seconds
; Clock frequency = 4 MHz

; Actual delay = 180 seconds = 180000000 cycles
; Error = 0 %

   cblock
   d5
   d6
   d7
   d8
   endc

         ;179999998 cycles
   movlw   0xFF
   movwf   d5
   movlw   0x2D
   movwf   d6
   movlw   0x32
   movwf   d7
   movlw   0x02
   movwf   d8
Delay_1
   decfsz   d5, f
   goto   $+2
   decfsz   d6, f
   goto   $+2
   decfsz   d7, f
   goto   $+2
   decfsz   d8, f
   goto   Delay_1

         ;2 cycles
   goto   $+1
       return








   ; 2+2 Fin.
;---------------------------------------

   END                  ; fin de programa