TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: Layton en 01 de Abril de 2010, 14:36:19

Título: no consigo encontrar el fallo
Publicado por: Layton en 01 de Abril de 2010, 14:36:19
hola tengo estoy haciendo un programilla que si le das al boton las luces se enciendan y si le das otra vez se apaguen.

(http://img253.imageshack.us/img253/9088/20100401193006748x520.png)

x VAR BYTE
LEDS VAR PORTB
TRISB=0
TRISA=1
     
     LEDS=1    ' %00000001
INICIO:
        IF PORTA.0=0 THEN PROG
       
GOTO INICIO
PROG:
 FOR x = 1 TO 4
  LEDS=LEDS<<1
  PAUSE 100
    IF PORTA.0=0 THEN INICIO
  NEXT
 
 FOR x = 1 TO 4
  LEDS = LEDS >> 1
  PAUSE 100
    IF PORTA.0=0 THEN INICIO
  NEXT

GOTO PROG
   END

hace cosas raras... vamos de todo menos lo que quiero  :D

saludos
Título: Re: no consigo encontrar el fallo
Publicado por: Fer_TACA en 02 de Abril de 2010, 08:01:19
En primer lugar y para ir eliminando cosas colocararia un retardo software para eliminar los rebotes que se producen al accionar los intgerruptores, pulsadores,........


Fer.
Título: Re: no consigo encontrar el fallo
Publicado por: Layton en 02 de Abril de 2010, 11:00:27
gracias Fer
Título: Re: no consigo encontrar el fallo
Publicado por: Chrisbaf en 18 de Abril de 2010, 01:01:14
apaga los comparadores cmcon = 7
Título: Re: no consigo encontrar el fallo
Publicado por: kamisama en 19 de Junio de 2010, 00:22:48
Yo te recomendaria usar GOTO y RETURN, quiz'a tenes un problema de stack al hacer las llamadas una y otra vez y no regresar.

ESTE SERIA EL PSEUDOCODIGO PARA EL ENUNCIADO, NO ASI PARA LO QUE POSTEASTE como ejemplo.

DIM BANDERA AS BYTE
inicio:
IF PORTA.0=0 THEN
      DO
      UNTIL PORTA.0=1

      IF BANDERA=0 THEN
              BANDERA=1     
              GOSUB PROG
      ELSE
              BANDERA=0
              GOSUB APAG
      ENDIF
ENDIF
GOTO INICIO:

APAG:
      PORTB=0
      RETURN
PROG:
      PORTB=255
      RETURN
END