TODOPIC
Microcontroladores PIC => Todo en microcontroladores PIC => Mensaje iniciado por: Kedutpic en 27 de Julio de 2006, 15:21:18
-
:) SALUDOS AMIGOS DE FORO LES CUENTO, ESTOY COMENZANDO A PROGRAMAR CON EL PIC16F877 Y TRATO DE SACAR POR EL PUERTO B UN FLASH DE LUCES DE 0.25 SEG PERO CON EL TIMER 2 LO QUE ME SUCEDE ES QUE ME SALE SOLO UNA VES SE PRENDE Y LUEGO SE APAGA PERO NUNCA MAS VUELVE A ENCENDERSE :( :( SI ALGUIEN PUEDE AYUDARME LES ESTARIA AGRADECIDO :-/ AQUI LES DEJO EL PROGRAMA EN ASM PARA QUE TENGANUNA IDEA CLARA DE LO QUE ESOTY DICIENDO OK MANES GRACIAS .
LIST P=16F877A
INCLUDE <P16F877A.INC>
CUENTA EQU 0X30
ORG 0X2007
DW 0X3F7A
ORG 0X0
BSF STATUS,RP0
CLRF TRISB
BCF STATUS,RP0
MOVLW B'01101011'
MOVWF T2CON
MOVLW .224
MOVWF PR2
MOVLW 0X0
A1 MOVWF PORTB
CALL DELAY
COMF PORTB,F
GOTO A1
DELAY
MOVLW .5
MOVWF CUENTA
BSF T2CON,TMR2ON
A2 BTFSS PIR2,TMR2IF
GOTO $-1
BCF PIR2,TMR2IF
DECFSZ CUENTA,F
GOTO A2
RETURN
END
-
Hola curio, te paso algunas de mis sugerencias.
A1 MOVWF PORTB
CALL DELAY
COMF PORTB,F
GOTO A1
Fíjate, aquí tu complementas el puerto B, pero luego haces un GOTO A1. En esa línea, tu mueves el contenido del WREG al Puerto B, sobreescribiendo lo que habías puesto antes en el PUERTOB.
Mueve el label A1, una línea más abajo, puntualmente en "CALL DELAY"
DELAY
MOVLW .5
MOVWF CUENTA
BSF T2CON,TMR2ON
A2 BTFSS PIR2,TMR2IF
GOTO $-1
BCF PIR2,TMR2IF
DECFSZ CUENTA,F
GOTO A2
RETURN
END
El TMR2IF, no está en el PIR2, sino en el PIR1. Cambia el código donde lo tengas por PIR1,TMR2IF
Espero te sirva de ayuda.
Saludos
-
ok gracias voy a probrarlo .gracias :P
-
Hola Curio
Además de lo que te ha dicho Maunix, el registro de período PR2 está en el banco 1, por lo que el valor 224 lo estás cargado en T2CON.
En la configuración del T2CON (MOVLW B'01101011') el bit2 está a 0 por lo que deshabilitas el TMR2, así que debes cambiarlo por 1.
-
:) hola amigos si ya lo probre ta chevre mi juego de luces pero no se si sera mi programa cosa que es seguro pero las luces no tienen y}un tiempo uniforme y hasta hubo un momento que se paro las luces :( estoy tratando de solucionarlo creo que el problema esta en el delay tengo modificarlo de tal manera que me pueda dar un flash uniforme ..ah con respecto a TMRON si leistes mi programa recien lo habilito cuando hago el delay, esto trae algun problema ??? eso quisiera saber ok manes seguire intentando ... ;) ah y que viva el foro ta locazo :-/
-
:) hola amigos si ya lo probre ta chevre mi juego de luces pero no se si sera mi programa cosa que es seguro pero las luces no tienen y}un tiempo uniforme y hasta hubo un momento que se paro las luces :( estoy tratando de solucionarlo creo que el problema esta en el delay tengo modificarlo de tal manera que me pueda dar un flash uniforme ..ah con respecto a TMRON si leistes mi programa recien lo habilito cuando hago el delay, esto trae algun problema ??? eso quisiera saber ok manes seguire intentando ... ;) ah y que viva el foro ta locazo :-/
No, no está mal que lo actives al ingresar a la rutina de delay, pero es innecesario. Siempre estará activándose siendo que después de la primera vez ya quedó activo.
Siendo un loop interminable esto del parpadeo, yo lo setearía antes de ingresar a la rutina de delay porque de todas formas, lo que tu haces es verificar el estado del fllag.
Es raro eso que dices que te parpadean a ratios diferentes, eso puede ser o porque tienes el watchdog activado o porque no has observado lo que te comenté de que estás pisando el contenido del PORTB con el wreg.
Si quieres, vuelve a postear tu software 'completo' asi le echamos un vistazo.
Saludos
-
ok men voy a pasarte el programa pero antes lo voy a chequear minuciosamente y te aviso ok . :o
-
ERES UN LOL COMO NO PUEDES HACER ALGO TAN SIMPLE, -.-! TE PASASTES AMIGO POLLO
-
ERES UN LOL COMO NO PUEDES HACER ALGO TAN SIMPLE, -.-! TE PASASTES AMIGO POLLO
No veo el motivo de la burla... :x :x
Siempre se comienza por las cosas simples y con innumerables dudas, algunas de las cuales tienen respuestas simples y otras no.
-
:o :o :o :o
SALIO :-/ GRACIAS MANES YA TENGO EL PROGRAMA CORREGIDO
AHORA SI ESTA CHEVRE ELJUEGO DE LUCES GRACIAS AQUI LES DEJO EL PROGRAMA POR SI ALGUIEN QUE TAMBIEN ESTA COMENZANDO A PROGRAMAR COMO YO LE SIRVA.
LIST P=16F877A
INCLUDE <P16F877A.INC>
CUENTA EQU 0X30
ORG 0X2007
DW 0X3F7A
ORG 0X0
BSF STATUS,RP0
CLRF TRISB
MOVLW .222
MOVWF PR2
BCF STATUS,RP0
MOVLW B'01101011'
MOVWF T2CON
MOVLW 0X0
MOVWF PORTB
A1 CALL DELAY
COMF PORTB,F
GOTO A1
DELAY
MOVLW .5
MOVWF CUENTA
BSF T2CON,TMR2ON
A2 BTFSS PIR1,TMR2IF
GOTO $-1
BCF PIR1,TMR2IF
DECFSZ CUENTA,F
GOTO A2
RETURN
END
-
hola disculpen pero soy nueva en este foro de programación si alguien me puede ayudar con un programa con el pic16f877 con el tmr2 (un contador de o-9) es urgente gracias en asm porfa