TODOPIC

Microcontroladores PIC => * PROYECTOS * => Mensaje iniciado por: dr cerebro en 19 de Agosto de 2011, 01:11:47

Título: Auto fantastico con pic 16f690
Publicado por: dr cerebro en 19 de Agosto de 2011, 01:11:47
Hola a todos.

Esto aprendiendo a programar controladores con el libro "Microcontroladores Pic programación en basic - Carlos a Reyes." Pero al llegar a la pagina 51 y tratar de realizar el ejercicio 5.2.2 Luces del auto fantástico, algo sale mal. En la simulación en Pic simulator Ide, el primer led enciende, luego se apaga y no pasa nada. en el circuito real sucede lo mismo.

Este es el programa que escribi es este.

Código: [Seleccionar]
'****************************************************************
'*  Name    : UNTITLED.BAS                                      *
'*  Author  : Dr cerebro                                        *
'*  Notice  : Copyright (c) 2011                                *
'*          : All Rights Reserved                               *
'*  Date    : 15/08/2011                                        *
'*  Version : 1.0                                               *
'*  Notes   :                                                   *
'*          :                                                   *
'****************************************************************
DEFINE OSC 4
n var byte ' Defino la variable del contador
SYMBOL Leds = PORTC ' El puerto C se llama Leds
TRISC = 0 ' TODO EL PUERTO C ES SALIDA

Leds = %00000001
pause 1000 'espero un segundo para verificar que el led enciende

inicio:
    for n = 1 to 4
        leds = leds >> 1
        PAUSE 200
    next
    for n = 1 to 4
        leds = leds << 1
        PAUSE 200
    next                         
   
    goto inicio 
end

Saludos.
Título: Re: Auto fantastico con pic 16f690
Publicado por: fabianjsm en 19 de Agosto de 2011, 03:25:08
Al principio Leds vale uno, luego desplazas a la derecha, de modo que valdrá 0, después de esto todos los desplazamientos son inútiles: seguirá valiendo cero.
Podrías inicializar Leds con 16 (o con 4 y realizar solo tres desplazamientos en ambos bucles).

Deberías ver en el manual de tu compilador si al desplazar a la derecha agrega a la izquierda el bit desplazado (creo que recibirías mejor ayuda si hubieras realizado el POST en 'Lenguaje Basic para microcontroladores PIC').

Si te parece que el código es incorrecto, podrías buscar en internet la fe de erratas para tu libro, si existe.
Título: Re: Auto fantastico con pic 16f690
Publicado por: rivale en 19 de Agosto de 2011, 09:46:58
intercambia el sentido de tus desplazamientos, primero corre el bit hacia la izquierda y luego hacia la derecha
Título: Re: Auto fantastico con pic 16f690
Publicado por: fabianjsm en 19 de Agosto de 2011, 16:18:37
Bien ahí rivale, no se me había ocurrido!
En ese caso, el cuarto desplazamiento no esta haciendo cero la variable?
Título: Re: Auto fantastico con pic 16f690
Publicado por: rivale en 19 de Agosto de 2011, 16:29:53
no se de que tamaño sea el puerto, pero solo se podrias hacer n-1 si el puerto es de n bits para que se vea completo
Título: Re: Auto fantastico con pic 16f690
Publicado por: dr cerebro en 20 de Agosto de 2011, 01:34:57
intercambia el sentido de tus desplazamientos, primero corre el bit hacia la izquierda y luego hacia la derecha

He invertido el sentido pero sucede lo mismo.

Las capturas del simulador.

Inicio del programa:
(http://img812.imageshack.us/img812/9986/13276225.jpg) (http://imageshack.us/photo/my-images/812/13276225.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)

Un instante despues el led se apaga igual:

(http://img40.imageshack.us/img40/2110/68001259.jpg) (http://imageshack.us/photo/my-images/40/68001259.jpg/)

Uploaded with ImageShack.us (http://imageshack.us)


De antemano muchas gracias.
Título: Re: Auto fantastico con pic 16f690
Publicado por: dr cerebro en 20 de Agosto de 2011, 01:38:54
no se de que tamaño sea el puerto, pero solo se podrias hacer n-1 si el puerto es de n bits para que se vea completo

El bucle for lo he limitado a 4 porque estoy empleando como hadware el pickit2, el cual tiene cuatro leds conectados a PORTC.0, PORTC.1, PORTC.2 Y PORTC.3

Gracias.

ummmm. Aunque deberia ser 3. o no? voy a probar con 3 en lugar de 4 e invertir la rotacion en ambos sentidos a ver que pasa.