TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Draveox en 02 de Junio de 2016, 17:52:52
-
Hola gente como estan?
Como dice el titulo, estaria necesitando ayuda para hacer este proyecto:
*Cunado se conecta el circuito empieza el conteo en forma binaria de los leds del modulo con un retraso de 500 ms entre cada cuenta.
*la cuenta va de 0 a 255, y se repite indefinidamente.
*con el pulsador p1 se detiene cualquier momento de la cuenta.
*Se reinicia con Reset.
A mi no me esta andando el p1, no se detiene.
Aca les dejo una imagen del circuito:
- Tienes que ingresar para ver archivos adjuntos -
y aca uno del codigo:
- Tienes que ingresar para ver archivos adjuntos -
espero que me puedan ayudar y corregir, gracias desde ya.
saludos
-
Hola,
no se detiene el conteo porque monitores la entrada fuera del ciclo for, hace el salto hasta que termina el conteo, coloca el if...then dentro del ciclo for.
El comando if...then ya no necesita el goto solo coloca la etiqueta donde necesitas el salto. i debe ser una variable tipo byte y luego esa variable lo igualas al puerto d.
En el circuito la entrada siempre está en cero, cuando pulsas el botón cambia a uno y tu estas esperando un cero en el if...then.
Saludos
-
Muchas gracias por contestar y por la ayuda, a pesar de eso no se estaria deteniendo.
Si no es mucha molestia me podrias mostrar como quedaria el codigo? debe ser algo muy pavo
gracias
-
Si va a Fin no hay nada que lo vuelva al comienzo y lo deje esperando.
Es decir no hay loop infinito. Por lo tanto va a llegar al fin de la memoria y volver a comenzar, lo cual jamas se va a detener
-
Entiendo que el reseteo lo haces con el reset del pic (reiniciando en pic), si es eso así quedaría el código:
Device = 16F887
Xtal 4
All_Digital true
TRISD = 0
TRISC = 1
Dim I As Byte
Symbol Leds = PORTD
Symbol Boton = PORTC.0
Inicio:
For I = 0 To 255
If Boton = 1 Then Parar
Leds = I
DelayMS 550
Next
GoTo Inicio
Parar:
End
Saludos
-
Hola devuelta, gracias a los dos por responder, y a vos Stban por tomarte el tiempo de hacer el codigo, lastimosamente no me anduvo, sigue sin parar los leds incluso con tu codigo, no sabria cual es el error a todo esto
-
Si va a Fin no hay nada que lo vuelva al comienzo y lo deje esperando.
Es decir no hay loop infinito. Por lo tanto va a llegar al fin de la memoria y volver a comenzar, lo cual jamas se va a detener
Se dan cuenta cual es el error? No programo basic pero veo que es un error. Hasta ahora el unico que conozco que no necesita de un loop infinito ( a pesar que esta ) es programando arduino , en el cual le dan una funcion "loop" para que la gente no se lo olvide, pero mirando los codigos de basic de otras personas tienen este loop infinito.
O si no me entienden... de "Parar", a donde va ?, el micro no deja de ejecutar instrucciones por que llego al End, sigue ejecutando hasta que llega al final de la memoria, y vuelve al comienzo, es decir a ejecutarse todo, es casi como un "reset"
-
Si va a Fin no hay nada que lo vuelva al comienzo y lo deje esperando.
Es decir no hay loop infinito. Por lo tanto va a llegar al fin de la memoria y volver a comenzar, lo cual jamas se va a detener
Se dan cuenta cual es el error? No programo basic pero veo que es un error. Hasta ahora el unico que conozco que no necesita de un loop infinito ( a pesar que esta ) es programando arduino , en el cual le dan una funcion "loop" para que la gente no se lo olvide, pero mirando los codigos de basic de otras personas tienen este loop infinito.
O si no me entienden... de "Parar", a donde va ?, el micro no deja de ejecutar instrucciones por que llego al End, sigue ejecutando hasta que llega al final de la memoria, y vuelve al comienzo, es decir a ejecutarse todo, es casi como un "reset"
Hola, espero que anden bien.
Pude hacer el codigo bien al final, es el siguiente...
Device = 16F887
XTAL 4
ALL_DIGITAL true
TRISD = 0
TRISC = 1
Dim I As Byte
Symbol Leds = PORTD
Symbol Boton = PORTC.0
Inicio:
For I = 0 To 255
Leds = I
DelayMS 550
If Boton = 0 Then GoTo Parar
Next
GoTo Inicio
Parar:
Stop
El IF tenia que ir despues del Delay.
Gracias a los dos por la cooperacion