Autor Tema: Problema con el timer  (Leído 2265 veces)

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

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Problema con el timer
« en: 07 de Mayo de 2007, 19:33:28 »
Buenas, espero que alguien me pueda ayudar. Para empezar con los pics estoy realizando una secuencia de leds y dependiendo de como varie uns sw dicha secuencia tendra un determinado tiempo.
 ¿Alguien sabe pq siempre obtengo el mismo tiempo al simular con proteus?

;Programa para la simulacion de una serie de leds

                list    P=16F877
   radix   hex   
    #include <p16f877.inc> ;incluimos la libreria del PIC 16F877
;********************Zona de Etiquetas**************
               temp    equ       0x20   ;registro temporal
               tempi   equ     0x21
               aux     equ     0x23
;****************************************************************

;*************************************************************************************+
   ORG   0x00
   goto   inicio
   ORG   0x05
;*********************************CARGO VALOR DE REFERENCIA************
   movlw   b'00000001'
   movwf   aux
;****************COnfiguracion del controlador******************************************
inicio
   bsf   STATUS,RP0    ;acceso al banco 0
   bcf   STATUS,RP1
;*******PUERTOS******************************************
   clrf   PORTB       ;puerta B como salida, aqui estaran los leds que vamos a usar
   movlw   b'00000011'   
   movwf       PORTA      ;puerta A0 y A1 entrada digital para seleccionar tiempo
   bsf   PORTC,5      ;Lo usaremos como boton de START
         
;*******CONFIGURACION DEL TMR0****************************
   movlw       b'10010111'
   movwf       OPTION_REG  ;configuracion del timer0 con un preescalado de 256
   clrf        INTCON
   bcf        STATUS,5
;**************FIN DE LA CONFIGURACION ***************************
;**************COMIENZO DEL PROGRAMA****************************************
main            clrf                   PORTB   
            btfsc    PORTC,5
            goto      main
            call      tiempo
            clrf      PORTB   
                bsf      PORTB,0
            call      retardo     ;encendemos la primera bombilla y esperamos
                         call      ida
            call      vuelta
            goto      inicio

;****************************rutina Programa ***********************************

ida            rlf      PORTB,1
            call      retardo
            btfss      PORTB,7
            goto      ida
            return
vuelta            rrf      PORTB,1
           call      retardo
            btfss      PORTB,0
            goto      vuelta
           return            ;volvemos al principio

retardo           movf      temp,W
           movwf   tempi         
retar           movlw   0xD9     ;mi retardo de partida es un retardo de 10milisegundos
           movwf   OPTION_REG
           bcf      INTCON,2
Explora0_5        btfss      INTCON,2
           goto      Explora0_5
           decfsz   tempi,1
           goto      retar
           return
;**** SELECICON DE  RETARDO********************************
tiempo
   btfss      PORTA,0
   goto      xA
   goto      xB
xA   btfss      PORTA,1
   goto      AA
   goto      BA
xB   btfss      PORTA,1
   goto      AB
   goto      BB

AA   movlw      0x32; 50 pasado a HEX para un retardo de 0.5
   movwf      temp
   return
BA     movlw      0x14 ;   20 pasado a HEX para un retardo de 0.4
   movwf      temp
   return

AB   movlw      0x00 ; 100 pasado a HEX ,esta variable hace que nuestro contador aumente
   movwf      temp
   return
BB   movlw      0x80 ;30 pasado a HEX
   movwf      temp
   return
   
end

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #1 en: 07 de Mayo de 2007, 20:49:24 »
Citar
inicio
   bsf   STATUS,RP0    ;acceso al banco 0
   bcf   STATUS,RP1

Aqui accedes al banco 1 y no al cero como dices en tu codigo sigo leyendo
El conocimiento se consigue a base de esfuerzo...

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #2 en: 07 de Mayo de 2007, 20:52:44 »
Citar
;*******PUERTOS******************************************
   clrf   PORTB       ;puerta B como salida, aqui estaran los leds que vamos a usar
   movlw   b'00000011'   
   movwf       PORTA      ;puerta A0 y A1 entrada digital para seleccionar tiempo
   bsf   PORTC,5      ;Lo usaremos como boton de START

En todas estas lineas deberias colocar TRISB, TRISA y TRISC respectivamente para hacer lo que realmente quieres ya que en el BANCO 1 hablamos de TRISX para configurar los pines como entrada o salida
El conocimiento se consigue a base de esfuerzo...

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #3 en: 07 de Mayo de 2007, 20:54:41 »
Para trabajar de manera digital en el 16f877 deberias de mover el numero 6 decimal al ADCON1 esto hace que todos tus pines sean configurados como digitales.
El conocimiento se consigue a base de esfuerzo...

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #4 en: 07 de Mayo de 2007, 23:52:34 »
Bueno tu error yo creo q esta en el PSA (   OPTION_REG (3)   ) lo pones en cero con lo cual tu temprorizacion es alterado por el Watchdog , tendrias q ponerlo en "1" para q sea afectado por el timer0
El conocimiento se consigue a base de esfuerzo...

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #5 en: 07 de Mayo de 2007, 23:57:09 »
aqui la imagen
El conocimiento se consigue a base de esfuerzo...

Desconectado ErnestAl

  • PIC10
  • *
  • Mensajes: 37
Re: Problema con el timer
« Respuesta #6 en: 08 de Mayo de 2007, 03:02:53 »
muchas gracias por tan rapida respuesta. En cuanto llegue a casa me pondre manos a la obra para corregir los fallos.

 GRACIAS!!!!!

Desconectado manuelroin24

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 665
Re: Problema con el timer
« Respuesta #7 en: 09 de Mayo de 2007, 13:30:41 »
No tienes pq amigo, sigue asi!!!  :-)
El conocimiento se consigue a base de esfuerzo...