Autor Tema: problemas con contador  (Leído 2660 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
problemas con contador
« en: 28 de Abril de 2006, 18:53:17 »
Hola, ante todo decir que soy db25, he tenido que registrarme de nuevo pues no se porque pero no me deja entrar... supongo que sera por la mudanza del foro, bueno pues tras esta aclaracion (no os creais que me copio su nombre xD) sigamos con lo que realmente importa.

el programa supuestamente tiene que hacer lo siguiente:
si se aplica masa a porta0 se enciende un led en el portb0
eso en tres puertas, eso funciona bien, cuando en porta4 se pulsa una vez  se enciende el portb7, si se pulsa otra se mantiene el 7 y se añade el 6, si se pulsa otra se mantiene el 7, 6 y se añade el 5. si se pulsa porta3 sucede lo contrario.
lo que me pasa es que si pulso 4 veces se encenderia el1º el 2º y el 3º led y la cuarta pulsacion no hace nada (logico solo son tres) pero si quiero  apagar el 3º led tengo que dar 2 pulsaciones, es como si guardara las pulsaciones en memoria. Si alguien me puede hechar una mano se lo agradeceria.

o si se puede hacer que a la 4ª pulsacion empiece desde el principio?? (me quito un pulsacor y como si fuese algun bucle)

espero que me entendais, este es el programa:

TRISA.0=0
Cont    var byte
inicio:
;programa para controlar la seleccion de bobinas que se activaran
;al realizarel disparo
        if PORTa.4=0 then   ;seleccion de potencia
           cont=cont+1
           pause 200
        if cont = 1 then
           high portb.7      ;potencia baja
           cont=1
        endif
      if cont = 2 then
         high portb.6      ;potencia media
         cont=2
      endif
      if cont = 3 then
         high portb.5      ;potencia alta
         cont=3
      endif
    endif
      if porta.3=0 then
         cont=cont-1
         pause 200
      if cont = 1 then
         low portb.6       ;potencia media
         cont=1
      endif
      if cont = 2 then
         low portb.5      ;potencia baja
         cont=2
      endif
      if cont = 3 then
         low portb.7      ;desconectado
         cont=3
      endif
   endif

-----------------------------------------------------
;programa para controlar el disparo de los SCR
      if PORTA.0 = 0 then   ;fotodetector bobina 1
           high PORTB.0      ;
             else
           low PORTB.0      ;
             endif
       
      if PORTA.1 = 0 then  ;fotodetector bobina 2
            high PORTB.1      ;
         else
         low PORTB.1      ;
         endif
         
      if PORTA.2 = 0 then  ;fotodetector bobina 3
            high PORTB.2      ;
         else
         low PORTB.2      ;
         endif
----------------------------------------------------   
 
goto inicio


Gracias de antemano, un saludo Jose Ramon

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: problemas con contador
« Respuesta #1 en: 28 de Abril de 2006, 19:39:42 »
Hola:

Efectivamente, la variable sigue almacenando el valor, por eso cuando excedas el valor maximo tendrias que asignarle el ultimo valor. ejemplo:

Código: [Seleccionar]
if cont>3 then
    cont=3
endif

Con eso si se sigue presionando el pulsante, el valor del contador sera 3, asi, si decrementas el siguiente valor, cont sera 2.

Suerte...!!!  :mrgreen:

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
Re: problemas con contador
« Respuesta #2 en: 29 de Abril de 2006, 05:19:33 »
Hola, muchas gracias, como siempre, suele ser una tontada (es lo que nos pasa a los aficionadillos).
bueno pues ya me falta menos para terminar. gracias de nuevo.

Un saludo Jose Ramon

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
Re: problemas con contador
« Respuesta #3 en: 29 de Abril de 2006, 08:37:54 »
Hola, ya estoy de nuevo dando mal, puse lo que me comentaste y funciono bien hasta que decidi dejar el nivel minimo como predefinido (que este el led siempre encendido) al aumentar funciona bien pero al disminuir solo quita 1 y de hay ya no pasa??

este es el trozo de programa

TRISA.0=0
Cont    var byte
inicio:
;programa para controlar la seleccion de bobinas que se activaran
;al realizarel disparo
high portb.3                  ;potencia baja seleccion inicial
        if PORTa.3=0 then   ;seleccion de potencia
           cont=cont+1
           pause 500
      if cont = 1 then
         high portb.4      ;potencia media
         cont=1
      endif
      if cont = 2 then
         high portb.5      ;potencia alta
         cont=2
      endif
      if cont>2 then
            cont=2
      endif
    endif
      if porta.4=0 then
         cont=cont-1
         pause 500
      if cont = 1 then
         low portb.5       ;potencia media
         cont=1
      endif
      if cont = 2 then
         low portb.4      ;potencia baja
         cont=2
      endif
      if cont>2 then
            cont=2
      endif
   endif

-----------------------------------------------------

te paso el archivo en proteus para ver si te hace lo mismo a ti.

gracias por todo, un saludo Jose Ramon

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: problemas con contador
« Respuesta #4 en: 29 de Abril de 2006, 11:57:54 »
Hola:

Código: [Seleccionar]
    if porta.4=0 then
         cont=cont-1
         pause 500
      if cont = 1 then
         low portb.5       ;potencia media
         cont=1
      endif
      if cont = 2 then
         low portb.4      ;potencia baja
         cont=2
      endif
      if cont>2 then
            cont=2
      endif
   endif

Fijate en ese codigo, es el que utilizas para decrementar en la ultima parte:

Código: [Seleccionar]
      if cont>2 then
            cont=2
      endif

esto debes corregirlo, como se esta decrementando el if debe ser asi:

Código: [Seleccionar]
      if cont<1 then
            cont=1
      endif

de tal forma que si sigues decrementando el contador sera siempre 1, y si incrementas, el valor maximo sera 2.

Eso debe ser lo que necesites, sino, me avisas....

Suerte...!!! :mrgreen:
« Última modificación: 29 de Abril de 2006, 12:00:19 por LordLafebre »

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
Re: problemas con contador
« Respuesta #5 en: 29 de Abril de 2006, 12:12:27 »
Hola, antes me funciono y no combie el simbolo <> simplemente puse lo que comentaste lo coloque en ambos contadores y funciono bien eso es lo que me estraña, que simplemente combiar lo del led y no funcionar fue todo uno.

Gracias de nuevo


Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: problemas con contador
« Respuesta #6 en: 29 de Abril de 2006, 12:48:12 »
Hola:

Te funciono ya, o no todavia?

si te funciona con ese codigo, a mi me extraña mas que solo tienes declarado como entrada el A0 y los demas pines no...

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
Re: problemas con contador
« Respuesta #7 en: 29 de Abril de 2006, 17:49:23 »
Hola, nada, esto no chuta de ninguna forma, gracias por lo de TRISA.0=0 me lo deje de otra cosa que mire antes :D.
Hay alguna otra forma de hacerlo?? porque esto es de lo mas simple no??.
Gracias, un saludo Jose Ramon

Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: problemas con contador
« Respuesta #8 en: 30 de Abril de 2006, 02:42:38 »
Hola:

db25, revisa este codigo que es para la parte que esta fallando, cuando pulsas A4 aumenta, y cuando pulsas A3 disminuye, revisalo y me cuentas si es lo que quieres...

Código: [Seleccionar]
TRISA=%11111
TRISB=0

cont var byte
PORTB=0

cont=0

inicio:
    if porta.4=0 then
        pause 250
        cont=cont+1
        if cont >3 then cont=3
        select case cont
            case 1
                high 7
            case 2
                high 6
            case 3
                high 5
        end select
    endif
    if porta.3=0 then
        pause 250
        if cont <1 then cont=1
        select case cont
            case 1
                low 7
            case 2
                low 6
            case 3
                low 5
        end select
        cont=cont-1
    endif
    goto inicio
end

Suerte...!!!  :mrgreen:

Desconectado db25.

  • PIC10
  • *
  • Mensajes: 24
Re: problemas con contador
« Respuesta #9 en: 01 de Mayo de 2006, 08:15:58 »
Hola, no he tenido tiempo hasta hace un rato, perdona la tardanza, lo he probado y este si que funciona bien, le he cambiado alguna cosa para ajustarlo al proyecto y esta perfecto, se sabe cual era el fallo en el anterior o se da por perdido?  me mosquea que antes funcionase y luego no  ¿?, de todas formas gracias por todo.

un saludo Jose Ramon
Gracias
P.d hasta la siguiente xD



Desconectado LordLafebre

  • Moderador Global
  • DsPIC30
  • *****
  • Mensajes: 3529
    • Micros & micros
Re: problemas con contador
« Respuesta #10 en: 01 de Mayo de 2006, 12:29:39 »
Hola:

Nunca probe tu codigo, pero como te dije antes, no vi en ninguna parte la configuracion de los puertos como entrada o salida, y la parte de controlar el contador cuando era menor a 1, en fin, me alegra que ya te funcione.

Citar
un saludo Jose Ramon
Gracias
P.d hasta la siguiente xD

Aqui estaremos para ayudar en lo que se pueda  :D :mrgreen:


 

anything