Autor Tema: no consigo encontrar el fallo  (Leído 1948 veces)

0 Usuarios y 2 Visitantes están viendo este tema.

Desconectado Layton

  • PIC10
  • *
  • Mensajes: 4
no consigo encontrar el fallo
« 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.



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

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: no consigo encontrar el fallo
« Respuesta #1 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.
Todos los días se aprende algo nuevo.

Desconectado Layton

  • PIC10
  • *
  • Mensajes: 4
Re: no consigo encontrar el fallo
« Respuesta #2 en: 02 de Abril de 2010, 11:00:27 »
gracias Fer

Desconectado Chrisbaf

  • PIC16
  • ***
  • Mensajes: 178
Re: no consigo encontrar el fallo
« Respuesta #3 en: 18 de Abril de 2010, 01:01:14 »
apaga los comparadores cmcon = 7

Desconectado kamisama

  • PIC16
  • ***
  • Mensajes: 151
Re: no consigo encontrar el fallo
« Respuesta #4 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


 

anything