Autor Tema: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion  (Leído 25942 veces)

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

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #60 en: 14 de Enero de 2010, 16:24:55 »
bueno he estado todos estos dias lellendo todos vuestros comentarios e instrucciones de como resolver el problema,  en la circunstacia de cuando se teniamos 5 pulsados y solo dos encendidos pues ke cuando se dejabande pulsar los dos pulsadores ke correspondian a los dos led encendidos se kedaban los otros tres apagados pues como dije no le dimos prioridad, pero ¿¿¿¿y si le dieramos la prioridad de por ejemplo el ke ocupara el numero mas alto????
O ke en esa situacion volviera a mirar los pulsadores uno a uno y asi encenderia 2 nuevos.
Tambien os recordaré ke en la realidad lo  quiero hacer con 8 entradas y 8 salidas pero no se cual seria el pic mas adecuado y si sabeis de alguno ke por diversidad de operaciones (funciones ) papaz de realizar simplificaria o facilitaria el programa. y dispongo de un16f887 ke tiene mas funciones ke el 16f84a
o si conoceis otro mejor pues proponermelo para buscarlo y pincharlo en mi simulador. y otracosa en microbasic para poner los pines todos como entrada salida es con la instruccion ANSEL = 0 ,ANSELH = 0 (para el pic 16f887) pero como se haria en buestros compiladores , es que estoy haciendo pruebas con buestros codigos con este pic


Gracias

Janiro74

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #61 en: 14 de Enero de 2010, 17:27:31 »
 Bueno en principio para lo que planteas creo que es mas que suficiente con el 16F887.
Si quieres utilizar 8 entradas -8 salidas pues ya sabes en los ejempls hemos puesto 4 pues seria añadir los restantes para las i/o que quedan.
Respecto a las prioridades pues segun sean así deberan ser las condiciones de test y de accion.
Por ultimo por ejemplo para el Pic Simulator IDE que no he probado me imagino que es con las correspondientes instrucciones TRIS(puerto)= 0 para salida y =1 cuando sean entradas.
Con el compilador proton tambien es asi.
Te digo que creo que es asi por que la version que tengo de PSI es la 6.65 y no soporta tu micro, en el momento que necesite utilzar alguno de la serie 16F88x me actualizare la version.

Fermin
Todos los días se aprende algo nuevo.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #62 en: 18 de Enero de 2010, 02:48:18 »
Bueno en principio para lo que planteas creo que es mas que suficiente con el 16F887.
Si quieres utilizar 8 entradas -8 salidas pues ya sabes en los ejempls hemos puesto 4 pues seria añadir los restantes para las i/o que quedan.
Respecto a las prioridades pues segun sean así deberan ser las condiciones de test y de accion.
Por ultimo por ejemplo para el Pic Simulator IDE que no he probado me imagino que es con las correspondientes instrucciones TRIS(puerto)= 0 para salida y =1 cuando sean entradas.
Con el compilador proton tambien es asi.
Te digo que creo que es asi por que la version que tengo de PSI es la 6.65 y no soporta tu micro, en el momento que necesite utilzar alguno de la serie 16F88x me actualizare la version.

Fermin

Yo diria que es demansiado usar el 16f887, en todo caso deberias usar uno mas pequeño como el 16F627A o posiblemente un GAL16V8, pero si es lo que tienes al alcance pues ni modo, recordemos que a la hora de diseñar se trabaja con lo que se tiene no con lo que se bebe.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado dogflu66

  • Moderador Local
  • DsPIC30
  • *****
  • Mensajes: 3510
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #63 en: 18 de Enero de 2010, 07:42:17 »
La verdad es que para un programa tan simple lo mejor es una GAL, ya que con los micros no basta que el programa haga la tarea encomendada, también hay que añadirle las protecciones de bloqueos y protecciones antiparasitarias varias por soft, más las protecciones antiparasitarias por hard o componentes físicos en la placa de circuito impreso para esta función. Si no hacemos esto corremos el riesgo de que funcione el circuito en el laboratorio y en el simulador, pero no funcione o de problemas en el sitio. Las GAL por su estructura interna en general simplifican todo esto, pero el uso de las GAL conlleva otro tipo de método o entorno de desarrollo con sus propias particularidades.
Saludos desde Granada, España.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #64 en: 18 de Enero de 2010, 19:31:06 »
no sabia de la existencia de esas gal pero por lo ke he mirado me inclino mas a algo parecido al 16F627A ke me decis pero si existiera uno ke solo tuviera un porta y un portb y sus patillas solo como I/O simplificaria un poco todo. me evitaria la instruccion de configurar todo como I/O ke tengo ke hacer en el pic16f887 con ANSEL = 0  Y ANSELH = 0

Porcierto no consigo establecer la prioridad ke corrigiera el estado de !!  indecision del pic !!! de encender ke dos led cuando habian 3 simultaneos .
lo he intentado hacer (en papel primero pero no se plantearlo ) por prioridad de los 2 bit mas altos o mas bajos de los pulsados ya ke hasta ke no sepa como hacerlo segun las temperaturas leidas por los ds1820 ke espero poder ser capaz algundia de programar me tengo ke conformar con decisione numericas
« Última modificación: 18 de Enero de 2010, 19:33:09 por janiro74 »

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #65 en: 19 de Enero de 2010, 06:46:03 »
Podrias utilizar para esos menesteres el PIC16F84 o 16F84A estos solo tiene I/O digitales, sin dada adicional, aunque estan en proceso de dejarse de fabricar, creo.
Un sustituto natural a ellos puede ser el PIC16F88

Fermin
Todos los días se aprende algo nuevo.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #66 en: 19 de Enero de 2010, 14:30:55 »
Podrias utilizar para esos menesteres el PIC16F84 o 16F84A estos solo tiene I/O digitales, sin dada adicional, aunque estan en proceso de dejarse de fabricar, creo.
Un sustituto natural a ellos puede ser el PIC16F88

Fermin

Tengo entendido que el PIC16F84A en la actualidad es más caro que el PIC16F627A y este ultimo posee mejores prestaciones que el primero.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #67 en: 19 de Enero de 2010, 15:29:58 »
Efectivamente Bigluis tienes razon.
Mi razon para esponer el 16F84 fue debido a que el creador del post preguntaba que si no habia un micro con solo los pines de I/O para evitar complicaciones a la hora de las configuraciones iniciales.

fermin
Todos los días se aprende algo nuevo.

Desconectado bigluis

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 511
    • Tutoriales de Qt C++
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #68 en: 19 de Enero de 2010, 17:30:25 »
Otra razon por la que aconsejo que uses el PIC16F627A es que lo puedes configurar para que tenga 16 pines de I/O, es decir podrías usar 8 como entradas y 8 como salidas. El 16F88 también tiene esa característica.

Pero tambien puedes hacer un teclado matricial de 4x2 o 3x3 para obtener 8 ó 9 botones de entrada, y solo utilizarías 6 pines, con lo cual el 16F84 te serviría.
Tutoriales de Qt C++

No es necesario que hagamos Grandes cosas, sino que lo que hagamos sea importante.

SI la NECESIDAD es la MADRE del CONOCIMIENTO, SEGURAMENTE la PEREZA su TÍA.

Cuando el ARTE requiere de PRECISION le llamamos CIENCIA

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #69 en: 19 de Enero de 2010, 19:04:54 »
pufff lo ke me faltaba complicarlo todo aun mas con un teclado , pero sitodavia no he reuelto el problema con pulsadores simles ya ke estoy probando con las 8 in y 8 out con el pic16f887 pero voy a empezar a hacer pruebas con el 16f627a ke me decis pero pregunto las intruccione s de inicio son tambien ansel y anselh = 0 como en el 16f887 ???

Desconectado Fer_TACA

  • Moderadores
  • DsPIC33
  • *****
  • Mensajes: 4069
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #70 en: 20 de Enero de 2010, 15:33:30 »
Amigo hay que mirar el datasheet y hay explica como configurarlo.

Cada uno tiene su forma de realizarlo.

Fermin
Todos los días se aprende algo nuevo.

Desconectado Strepto

  • PIC16
  • ***
  • Mensajes: 159
    • Pictronics
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #71 en: 20 de Enero de 2010, 18:29:50 »
En mi caso por ejemplo, usando el Proton, para configurar los puertos es casi todo el rato lo mismo, lo unico que si tiene conversores adc tengo que añadir la linea all_digital = true y todo solucionado  :lol:

Un saludo!

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #72 en: 23 de Enero de 2010, 19:29:40 »
bueno pues yo sigo con lo mio y ya estoy intentandolo paso a paso pero ahora con el pic 16f628a pero resulta ke no se encienden los led de portb.6 ,7 y 8. este es el codigo



program ecli

trisa.0 = 1
trisa.1 = 1
trisa.2 = 1
trisa.3 = 1
trisa.4 = 1
trisa.5 = 1
trisa.6 = 1
trisa.7 = 1
trisb.0 = 0
trisb.1 = 0
trisb.2 = 0
trisb.3 = 0
trisb.4 = 0
trisb.5 = 0
trisb.6 = 0
trisb.7 = 0
CMCON=7
main:

portb = %00000000
                     '
WHILE TRUE
while (porta.0 + porta.1 + porta.2 + porta.3 + porta.4 + porta.5 + porta.6 + porta.7) <=2

if  porta.0 = 1  then portb.0 = 1 else   portb.0 = 0  delay_ms(20)
end if
if  porta.1 = 1  then portb.1 = 1 else   portb.1 = 0  delay_ms(20)
end if
if  porta.2 = 1  then portb.2 = 1 else   portb.2 = 0  delay_ms(20)
end if
if  porta.3 = 1  then portb.3 = 1 else   portb.3 = 0  delay_ms(20)
end if
if  porta.4 = 1  then portb.4 = 1 else   portb.4 = 0   delay_ms(20)
end if
if  porta.5 = 1  then portb.5 = 1 else   portb.5 = 0   delay_ms(20)
end if
if  porta.6 = 1  then portb.6 = 1 else   portb.6 = 0  delay_ms(20)
end if
if  porta.7 = 1  then portb.7 = 1 else   portb.7 = 0  delay_ms(20)
end if
wend
wend
end.

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #73 en: 24 de Enero de 2010, 08:38:42 »
me corijo queria decir los led de porta.5, 6 y 7

Desconectado janiro74

  • PIC10
  • *
  • Mensajes: 44
Re: hacer funcionar 5 salidas comandadas por 5 pulsadores con una condicion
« Respuesta #74 en: 24 de Enero de 2010, 18:49:46 »
He adaptado el codigo de dogflu66 para ke funcione con el pi16f628a , para 8 entradas 8 salidas , y para mikrobasic . Lo de los parentesis en (flag=0) los he puesto porque daba error al compilarlo pero lo ke pasa es ke no se enciende ningun los led de portb al pulsar porta. veis si se me ha pasado algo???


program ecli
Dim contador As Byte
Dim flag As Byte
TRISA = %11111111
TRISB = %00000000
Cmcon=7
main:
flag = 0
contador = 0
portb = %00000000
If PORTA.0 = 1 And (flag=0) Then
         PORTB.0 = 1
 Else
    If PORTA.0 = 0 And (flag = 0) Then
                PORTB.0 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

   If PORTA.1 = 1 And (flag = 0) Then
      PORTB.1 = 1
   Else
      If PORTA.1 = 0 And (flag = 0) Then
         PORTB.1 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

   If PORTA.2 = 1 And (flag = 0) Then
      PORTB.2 = 1
   Else
      If PORTA.2 = 0 And (flag = 0) Then
         PORTB.2 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

   If PORTA.3 = 1 And (flag = 0) Then
      PORTB.3 = 1
   Else
      If PORTA.3 = 0 And (flag = 0) Then
         PORTB.3 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

   If PORTA.4 = 1 And (flag = 0) Then
      PORTB.4 = 1
   Else
      If PORTA.4 = 0 And (flag = 0) Then
         PORTB.4 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit
If PORTA.5 = 1 And (flag = 0) Then
      PORTB.5 = 1
   Else
      If PORTA.5 = 0 And (flag = 0) Then
         PORTB.5 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

If PORTA.6 = 1 And (flag = 0) Then
      PORTB.6 = 1
   Else
      If PORTA.6=0 And (flag = 0) Then
         PORTB.6 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit

If PORTA.7 = 1 And (flag = 0) Then
      PORTB.7 = 1
   Else
      If PORTA.7 = 0 And (flag = 0) Then
         PORTB.7 = 0
         Delay_ms (100)
      End if
   End if
   Gosub ctrol_nbit



Goto main

ctrol_nbit:
   contador = 0
   flag = 0
   If PORTA.0 = 1 Then contador = contador + 1
   If PORTA.1 = 1 Then contador = contador + 1
   If PORTA.2 = 1 Then contador = contador + 1
   If PORTA.3 = 1 Then contador = contador + 1
   If PORTA.4 = 1 Then contador = contador + 1
        If PORTA.5 = 1 Then contador = contador + 1
   If PORTA.6 = 1 Then contador = contador + 1
   If PORTA.7 = 1 Then contador = contador + 1
        If contador > 2 Then flag = 1
        end if
        end if
        end if
        end if
        end if
        end if
        end if
        end if
        end if
Return

end.


 

anything