TODOPIC

Microcontroladores PIC => Almacén del Assembler => Mensaje iniciado por: elopoveg en 14 de Septiembre de 2010, 23:13:10

Título: Ayuda para configurar TMR0 como contador Pic16F84
Publicado por: elopoveg en 14 de Septiembre de 2010, 23:13:10
Hola a todos! es mi primer mensaje en este foro y de antemano les agradezco su ayuda!
Soy nuevo en el mundo de los pics, intento realizar un contador de rmp, se que el tema se ha tratado mucho en el foro y he leido bastantes mensajes sobre esto antes de iniciar el tema, he leido en otros mensajes el procedimiento básico para este proyecto, quiero es contar los pulsos con TMR0, usar una rutina de retardo, hacer algunas cuentas y asi obtener el valor de rpm y mostrar por 4 displays 7 segmentos, hasta aqui todo bien, he ido armando el programa poco a poco, pero tengo problemas para que ande, las rutinas de multiplicar los registros, convertir a BCD, mostrar por los displays, etc, andan muy bien, lo he simulado en MPLAB y PROTEUS y funcionan, pero para trabajar con el TMR0 tengo dificultades, les muestro lo que he hecho hasta ahora, configuro en modo contador, preescaler al Watchdog, contador por flanco ascendente, pero cuando lo simulo me muestra 0000 en los displays! no se exactamente donde está el error en este caso, agradezco su ayuda, les muestro el código donde intento configurar el TMR0.

main
   bsf STATUS,RP0
   clrf TRISB
   movlw b'11110000'
   movwf TRISA
   movlw b'00101000'
   movwf OPTION_REG
   bcf STATUS,RP0
inicio
   clrf TMR0
   call Retardo_50ms
   movf TMR0,0
   movwf mulplr
   movlw .100
   movwf mulcnd
                
configuro el puerto B como salida para enviar el valor a los displays, utilizo los 4 bits menos significativos del puerto A para seleccionar el display cuando hago la multiplexación, y RA4 como entrada para contar los pulsos! no se si sea correcto de este modo pero he intentado otra configuración y el error persiste, mmulplr y mulcnd son los registros donde almaceno los valores a multiplicar, por ejemplo si midiese los pulsos durante un segundo, enviaria el valor del TMR0 a mulplr y 60 a mulcnd, el retardo de 50ms es referencial por asi decirlo, tampoco se en realidad durante cuanto tiempo deberia medir los pulsos, tengo pensado que sea un contador de rpm para automovil! he probado con diferentes retardos pero al simularlo me sigue apareciendo 0000, creo que mi problema es la configuración del TMR0! agradezco su ayuda!
  
Título: Re: Ayuda para configurar TMR0 como contador Pic16F84
Publicado por: tapi8 en 22 de Septiembre de 2010, 14:30:30
Si le asignas el preescaler al WDT debes deshabilitarlo en la configuracion, supongo que lo habras hecho, pero por si acaso...

WDT_OFF

Si quieres poner el programa y que le echemos un ojo tambien es una opcion.

Saludos
Título: Re: Ayuda para configurar TMR0 como contador Pic16F84
Publicado por: elopoveg en 03 de Octubre de 2010, 14:06:37
hola tapi8! muchas gracias por tu respuesta, me puse a analizar paso a paso en MPLAB y la verdad no tenía errores, el problema era la simulación en Proteus que no estaba realizando bien, ya está funcionando como debe  :mrgreen: