TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Draveox en 15 de Junio de 2016, 19:46:01

Título: Ayuda con proyecto pic16f887
Publicado 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!
Título: Re:Ayuda con proyecto pic16f887
Publicado por: Chaly29 en 15 de Junio de 2016, 20:11:48
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.

Título: Re:Ayuda con proyecto pic16f887
Publicado por: Draveox en 15 de Junio de 2016, 20:25:41
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:
Código: [Seleccionar]
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.
Título: Re:Ayuda con proyecto pic16f887
Publicado por: dogflu66 en 15 de Junio de 2016, 20:34:12
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.
Título: Re:Ayuda con proyecto pic16f887
Publicado por: wolfman77 en 17 de Junio de 2016, 20:07:14
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
..
..
..