TODOPIC

Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado por: masterias en 11 de Septiembre de 2007, 22:41:10

Título: contar mas alla de 255
Publicado por: masterias en 11 de Septiembre de 2007, 22:41:10
Hola Gente.
Soy nuevo en el foro. Como como es mi primer post, les pido sepan disculpar.

Estoy haciendo un contador up/down con display lcd, con unos pulsadores, que suman o restan, mi problema es que empiezo con el cont=cont+1 pero llego al 254 y se pone a cero y comienza nuevamente, como puedo lograr contar digamos "hasta 99999" o mas, aclaro que soy principiante, aunque seguro se nota   :D asi que no estoy seguro de como definir una variable asi en pbp, pongo una parte del codigo a continuacion.
Saludos a todos.
-------------------------------------------------------------------------------------------------------------------
contar:
Cont  var byte[99999]
cont=000000
cont=cont+1
lcdout #cont
goto contar
Título: Re: contar mas alla de 255
Publicado por: jfh900 en 11 de Septiembre de 2007, 22:42:44
La variable Cont está definida como byte y por lo tanto solo puede variar de 0 a 255, declarala como word.

Un saludo
Título: Re: contar mas alla de 255
Publicado por: masterias en 11 de Septiembre de 2007, 22:52:41
Ahora lo pruebo y te cuento :-/ , muchas gracias por tu gentileza y pronta respuesta.
Salu2
Título: Re: contar mas alla de 255
Publicado por: LordLafebre en 12 de Septiembre de 2007, 01:20:45
Hola:

Ponle tambien una pausa, sinó no veras casi nada el conteo:

Cont  var byte[99999]
cont=000000
cont=cont+1
lcdout #cont
PAUSE 1000 ---------> retardo de 1 segundo.
goto contar
Título: Re: contar mas alla de 255
Publicado por: masterias en 15 de Septiembre de 2007, 00:55:28
Hola gente.
Se me rompio el zocalo de mi programador, recien hoy pude probar, las soluciones, muchas gracias esa parte ya esta funcionando, le puse la pausa tambien ahora vo lo que muestra :-) logre que cuente hasta 65.000.

Salu2 y gracias
Título: Re: contar mas alla de 255
Publicado por: MGLSOFT en 16 de Septiembre de 2007, 17:00:13
Como Word tu variable puede llegar a contener hasta 65535.
Título: Re: contar mas alla de 255
Publicado por: masterias en 16 de Septiembre de 2007, 21:02:01
Como curiosidad, si quiero llegar a 99999 o 100.000 en vez de 65535, existe alguna forma? o es un limite absoluto

Saludos y muchas gracias

Título: Re: contar mas alla de 255
Publicado por: LordLafebre en 17 de Septiembre de 2007, 18:42:43
Hola:

Pues podrías hacerlo por bucles diferentes, dos variables distintas, y para visualizar en el lcd, pues solo les mandas a mostrar de tal forma que se vean como un solo número.
Título: Re: contar mas alla de 255
Publicado por: Gorgonas en 17 de Septiembre de 2007, 19:16:26
Hombre tambien esta la variable del tipo Long de 0 a 4,294,967,295
Aunque he ledio por ahi esto
"El tipo "Long" solo esta disponible mediante un modulo opcional al PIC SIMULATOR IDE"
No se muy bien a que se refiere, pero vamos no creo que el word sea su variable de mayor tamaño :S
Título: Re: contar mas alla de 255
Publicado por: LordLafebre en 17 de Septiembre de 2007, 19:28:16
Hola:

Hombre, estamos hablando de basic para PIC, en específico PBP, solo soporta tres tipos de variables, Bit, Byte y Word, long no lo soporta ni Protón.
Título: Re: contar mas alla de 255
Publicado por: masterias en 17 de Septiembre de 2007, 21:49:13
Muchas gracias.

Me sacaron una duda :-) existencial, asi no sigo intentando cosas sin sentido, entonces por metodos normales word es una variable de hasta 65.000 y poco, a lo mejor podria poner una variable, que cuente las veces que se puso a cero, como una variable testigo.

Saludos
Título: Re: contar mas alla de 255
Publicado por: LordLafebre en 17 de Septiembre de 2007, 22:00:34
entonces por metodos normales word es una variable de hasta 65.000

Hola:

Exactamente es 65535  :-)
Título: Re: contar mas alla de 255
Publicado por: MGLSOFT en 17 de Septiembre de 2007, 22:51:28
El truco seria el siguiente:
Llevas la cuenta hasta 9999 dentro de la variable de tipo Word, una vez que llegas a ese valor sumas un uno en otra variable de tipo Byte y pones la variable de tipo Word en cero.
Si bien malutilizas ambas variables, con la variable Byte en 99 y la variable Word en 9999 tendras una cuenta hasta 999999, es decir un millon de conteos.
El unico problema es que debes comparar y tomar decisiones con rutinas creadas a tal fin... :mrgreen:
Título: Re: contar mas alla de 255
Publicado por: masterias en 18 de Septiembre de 2007, 01:00:47
Me parece una solucion ingeniosa  8) la voy probando y te comento.

Salu2
Título: Re: contar mas alla de 255
Publicado por: Mario en 18 de Septiembre de 2007, 04:19:56
El truco seria el siguiente:
Llevas la cuenta hasta 9999 dentro de la variable de tipo Word, una vez que llegas a ese valor sumas un uno en otra variable de tipo Byte y pones la variable de tipo Word en cero.
Si bien malutilizas ambas variables, con la variable Byte en 99 y la variable Word en 9999 tendras una cuenta hasta 999999, es decir un millon de conteos.
El unico problema es que debes comparar y tomar decisiones con rutinas creadas a tal fin... :mrgreen:

¡¡¡Ha!!!
Llegué tarde, algo parecido se tenía pensado  :shock:
Título: Re: contar mas alla de 255
Publicado por: jfh900 en 18 de Septiembre de 2007, 13:06:20
El truco seria el siguiente:
Llevas la cuenta hasta 9999 dentro de la variable de tipo Word, una vez que llegas a ese valor sumas un uno en otra variable de tipo Byte y pones la variable de tipo Word en cero.
Si bien malutilizas ambas variables, con la variable Byte en 99 y la variable Word en 9999 tendras una cuenta hasta 999999, es decir un millon de conteos.
El unico problema es que debes comparar y tomar decisiones con rutinas creadas a tal fin... :mrgreen:

El resultado de esa operación no es 999999, si no 989901 que es igual al producto de 99*9999.

Por otra parte dependiendo del compilador de basic y del pic tendremos otras variables como dword y float que permitirian llegar hasta valores más altos.

Un saludo

Título: Re: contar mas alla de 255
Publicado por: MGLSOFT en 18 de Septiembre de 2007, 13:57:20
Creo que no leiste bien el texto que puse.
Alli nunca hablo de multiplicar esos valores, sino de usarlos en diferentes variables...
Si quieres representarlos en un display deberas sacar el valor BCD de cada digito por separado y enviarlo al digito correspondiente de tu display, hasta alli es lo mismo hacerlo con solo una variable del tipo float (te recuerdo que por norma IEC la variable Float tiene 4 Bytes) que con tres Bytes (uno que contiene hasta 99 en decimal y dos que hacen una word que contienen hasta 9999 en decimal).
Para representar hasta 999999 precisas 6 digitos, PBP creo que traia la conversion a BCD hasta el quinto digito.
Para mostrar en el display necesitas solo dos para mostrar 99 y cuatro mas para mostrar 9999.

Ahora se entendio?? :mrgreen:
Título: Re: contar mas alla de 255
Publicado por: jfh900 en 18 de Septiembre de 2007, 14:15:53
Haber, si cuentas 9999 en una variable y repites ese conteo 99 veces el resultado es 9999*99 = 989901, por simple lógica. Para que diera lo más parecido a lo que tu dices abria que contar en una variable hasta 10000 y en la segunda 100 veces, entonces daría 10000*100 = 1000000 que es el valor más proximo a 999999.

Un saludo.
Título: Re: contar mas alla de 255
Publicado por: Mario en 18 de Septiembre de 2007, 17:21:29
Para representar hasta 999999 precisas 6 digitos, PBP creo que traia la conversion a BCD hasta el quinto digito.
Para mostrar en el display necesitas solo dos para mostrar 99 y cuatro mas para mostrar 9999.

Algo así era, utilizando el modificador DIG del PBP.
Título: Re: contar mas alla de 255
Publicado por: MGLSOFT en 18 de Septiembre de 2007, 21:35:36
Haber, si cuentas 9999 en una variable y repites ese conteo 99 veces el resultado es 9999*99 = 989901, por simple lógica. Para que diera lo más parecido a lo que tu dices abria que contar en una variable hasta 10000 y en la segunda 100 veces, entonces daría 10000*100 = 1000000 que es el valor más proximo a 999999.

Un saludo.

Bueno, bueno!!
Tienes razon en tu cuenta, lo que yo no dije es que el rollover se produce al encontrar el numero superior a 99 o 9999, que como dices tu es 100 o 10000.
O me exprese mal o fue malinterpretada mi idea, en cualquier caso gracias por corregirme!!
 :mrgreen:
Título: Re: contar mas alla de 255
Publicado por: jfh900 en 19 de Septiembre de 2007, 09:44:00
Gracias a tí por tu idea y aporte, la idea es buena, de echo es la´única posible en el caso de utilizar solo variables de tipo word,  lo que yo queria era hacer notar la diferencia entre lo marcado y lo contado.

Un saludo.