Autor Tema: Multiplicar ?  (Leído 3564 veces)

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

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Multiplicar ?
« en: 15 de Septiembre de 2015, 11:50:52 »
Hola y un cordial saludo:
Ha llegado a mis manos un CI de nomenclatura 74C922, decodificador de 16 teclas. Con ello he querido hacer un programa para introducir datos desde un teclado, en un micro 16F877. Utilizando el PORT D, aprovecho los pines de bits menos significativos, para dar entrada desde el circuito 74C922, que da una salida BCD y un pin que se pone a uno cada vez que se pulsa una tecla. Con este pin realizo una interrupción por RB0 y dentro de la interrupción, trato de tener una variable  "tecla"  donde almaceno los dígitos introducidos. Hasta un máximo de 5. Con ello quiero visualizar en un LCD dicha variable. El problema me surge cuando trato dentro de la interrupción, multiplicar la variable " cuenta " encargada de hacer que el numero introducido sea un valor ( tecla ) este comprendido desde 0 a 99999. Es decir tomo el primer dígito y lo visualizo " tecla ". Multiplico x 10 para crear decenas " cuenta ", y sumo a todo ello la siguiente cifra introducida, así sucesivamente hasta 5 interrupciones, que controlo mediante la variable " pulsaciones ". Para saber que ocurre en todo momento, en el LCD, hago visualizar el valor de " cuenta " y " tecla ". En ello veo perfectamente el dígito introducido en el teclado, pero sin embargo la variable " cuenta " ni se inmuta. Como si la multiplicación por 10 no se efectuara. Para dar mas datos les adjunto el programa que contiene esta definición. Lo comento por si alguien me puede indicar que error estoy cometiendo para que no funcione correctamente. Utilizo la versión 6.1.3 Plus de NIPLE.  De antemano gracias y reciban un cordial saludo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Multiplicar ?
« Respuesta #1 en: 16 de Septiembre de 2015, 07:05:02 »
Fijate que guaras el valor en teclas y no en cuentas, debe ser cuentas = cuentas + teclas. Un abrazo.
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Multiplicar ?
« Respuesta #2 en: 16 de Septiembre de 2015, 13:52:56 »
Hola lucegiar:
No se si logras entender lo que hago, pero eso es correcto en teoría......Veras la variable ( tecla ) tiene dos vertiente, por un lado,  en un momento es la tecla introducida y por otro,  y según vayamos aumentando el dígito es el numero introducido, es decir cuando introduces un numero ( tecla ) es la unidad, pero si introduces otro, lo primero que hago es multiplicar el primer numero introducido por 10 ( cuenta ) creando la decenas y sumas a ( cuenta ) el siguiente numero pulsado, al final tienes tecla con el total. Dicho de otra forma, si el primer numero es 5, aparece 5 en variable tecla. Independientemente de si introduces otro, tanto tecla como cuenta valen 5. A continuación multiplico ese numero por 10 para crear decenas, si se pulsa otra tecla más. Imaginemos que ahora pulsamos 8, entonces la variable tecla sera, 5 x 10 = 50 y 50 + 8 = 58. Valor que nos debe aparecer en el LCD y sobre todo valor que toma la variable tecla. Con este fin, tengo una variable tecla que puedo comparar lo introducido con cualquier otro dato, ya sea un código, un tren de impulsos, un valor analógico después de conversión etc, etc. Muchas gracias lucegiar por tu interés y ayuda. Espero que esta respuesta logres entenderme. Si tienes alguna otra idea de lo que me puede estar pasando, te lo agradecería enormemente. Un cordial saludo, y de antemano muchas gracias por tu colaboración.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Multiplicar ?
« Respuesta #3 en: 17 de Septiembre de 2015, 08:16:37 »
No digo que estés operando mal, solo que la que incrementas es tecla y no cuenta, por lo que verás eso, solo tecla refleja el incremento, esto respecto de tu comentario "En ello veo perfectamente el dígito introducido en el teclado, pero sin embargo la variable " cuenta " ni se inmuta". Entiendo perfectamente lo que haces, no tiene ningún secreto, por ello es que te indiqué donde creo está el problema, probá haciendo "cuenta = cuenta * 10 + tecla" y tendrás tu valor en ella. Como está solo se refleja el primer valor de "cuenta = tecla" pues solo se realiza cuando el conteo es 1, no en los siguientes 4. Un abrazo
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Multiplicar ?
« Respuesta #4 en: 18 de Septiembre de 2015, 16:49:47 »
Hola Lucegiar:
Eres un crack, va perfectamente. Por otro lado aun estoy intentando comprender que es lo que piensa el pic. Muchas gracias por tu ayuda y aclaración. Y voy a ver si lo digiero lentamente. He hecho lo que me comentabas, utilizando la variable cuenta para reflejar el valor total de los dígitos introducidos y genial.........Mucha gracias........ Me gustaría hacerte una pregunta y no se si este es el medio adecuado, pero si lo consideras y lo tienes a bien, me podrías indicar que metodología sería la más adecuada para contar impulsos de un motor con sensor óptico, que cuenta pasos?. Un cordial saludo y una vez más agradecerte tu aportación.

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Multiplicar ?
« Respuesta #5 en: 18 de Septiembre de 2015, 17:12:24 »
Para contar impulsos hay 2 opciones buenas:
- Conectar la salida del sensor al pin RB0 y activar un interrupción por flanco descendente. Cada interrupción incrementas un registros "contador".
- Utilizar le PIn de T0CKI del pic que utilices . este pin sirve como entrada de contaje.
Todos los días se aprende algo nuevo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Multiplicar ?
« Respuesta #6 en: 18 de Septiembre de 2015, 20:09:07 »
Ya Fermín te dió una exelente respuesta, trataré de darte otra forma. Con una entrada digital puedes contar según el estado, esperas que el pulso sea alto, y entonces monitoreas cuando baja, al hacerlo incrementas el contador, y vuelves a esperar que esté en alto para habilitar el conteo cuando descienda. Si te fijas tambien se puede activar en TMR1 el conteo de frecuencia, que creo que es lo que buscas.
- Santiago -

Desconectado luisesteban

  • PIC10
  • *
  • Mensajes: 24
Re: Multiplicar ?
« Respuesta #7 en: 20 de Septiembre de 2015, 06:42:21 »
Hola:
Muchas gracias por las respuestas y sobre todo recalcar, que muchos ya habíamos dejado de interesarnos por la programación de pic, si no fueran por personas desinteresadas que nos están apoyando sin interés alguno. Una vez más agradecer su tiempo y esfuerzo.
Reciban ambos un cordial saludo.

Desconectado lucegiar2005

  • PIC24F
  • *****
  • Mensajes: 504
Re: Multiplicar ?
« Respuesta #8 en: 20 de Septiembre de 2015, 08:50:23 »
Luis: por mi parte recibí de Fermín y otros amigos del foro la ayuda que te pueda brindar, se los agradesco con el corazón, pero creo que lo que todos los que andamos por acá deseamos es que se siga compartiendo conocimientos y no se oculte por egoismos estúpidos. Siempre espero una sola forma de agradecer, que compartas con otros y comigo lo que aprendas, todos necesitamos aprender algo que otro, a veces el que jamás pensariamos, ya sabe. Un abrazo y a tus ordenes cuando pueda.
- Santiago -

Desconectado Fer_TACA

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 4154
Re: Multiplicar ?
« Respuesta #9 en: 21 de Septiembre de 2015, 12:38:29 »
 :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops: :oops:
Todos los días se aprende algo nuevo.