TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Draveox en 15 de Junio de 2016, 19:46:01
-
Hola gente, como estan?.
Estoy devuelta para pedirles de su ayuda, ya que, tengo un problema para realizar la siguiente consigna...
*Encendido alternativo de los Leds de derecha a izquierda con intervalo de 300 Milisegundos.
*Repetir indefinidamente.
*Con el pulsador P1 se detiene en cualquier momento.
*Se reinicia con Reset.
La consigna se aplicaria al circuito este:
- Tienes que ingresar para ver archivos adjuntos -
El problema lo tengo con el codigo, ya que, el que hice no cumplia con las consignas.
Espero que me puedan dar una mano.
Gracias!
-
Hola Draveox, todo me suena a taré del colegio, por lo tanto, deberías empezar tu con el código y luego ante las dudas o problemas haces tu consulta.
Un saludo.
Atte. CARLOS.
-
Hola Draveox, todo me suena a taré del colegio, por lo tanto, deberías empezar tu con el código y luego ante las dudas o problemas haces tu consulta.
Un saludo.
Atte. CARLOS.
Hola Carlos gracias por contestar..
Es una tarea de la universidad, recien estamos empezando con este tipo de programacion asique no tengo mucha idea.
El codigo que yo habia hecho es este:
Device 16F887
XTAL 4
ALL_DIGITAL true
TRISD=%00000000
TRISC=%11111111
PORTD=0
PORTC=0
Dim i As Byte
Dim l As Byte
Arriba:
l=8
For i=0 To 7
l=l-1
If l=7 Then PORTD.7=1
If l=6 Then PORTD.6=1
If l=5 Then PORTD.5=1
If l=4 Then PORTD.4=1
If l=3 Then PORTD.3=1
If l=2 Then PORTD.2=1
If l=1 Then PORTD.1=1
If l=0 Then PORTD.0=1
DelayMS 300
If PORTC.0=0 Then Stop
Next
GoTo Arriba
fin:
End
Pero los leds quedan prendidos, cuando tendria que prenderse uno, apagarse, y recien prenderse el otro. Y no entra en un bucle de repeticion.
-
Hola Draveox; es que la filosofía del foro es la de no realizar proyectos solo prestar ayuda.
Esa tarea la puedes realizar fácilmente usando el comando "ShiftLeft", si tu lenguaje lo tiene u otro comando similar para desplazamiento de bit.
Portb = %00000001
For .... repetir las veces tantos como desplazamientos necesarios
Portb = ShiftLeft(Portb, 1) 'Desplaza la variable o registro un bit a la izquierda, rellena los nuevos lugares con ceros.
pausa
next
También puedes usar este método menos elegante:
Portb = %00000001
pausa
portb= %00000010
pausa
etc.
-
El problema esta en que tenes que encender un led, esperar 300ms apagarlo y encender el otro, el tiempo de espera lo pusiste al final, o sea, se prenden todos, espera 300ms y vuelve al principio, tenes que poner el delay en cada intervalo, algo asi...
If l=7 Then PORTD.7=1
delayms 300
If l=6 Then PORTD.6=1
delayms300
If l=5 Then PORTD.5=1
delayms 300
..
..
..