TODOPIC
Microcontroladores PIC => Lenguaje Basic para microcontroladores PIC => Mensaje iniciado 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
-
La variable Cont está definida como byte y por lo tanto solo puede variar de 0 a 255, declarala como word.
Un saludo
-
Ahora lo pruebo y te cuento :-/ , muchas gracias por tu gentileza y pronta respuesta.
Salu2
-
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
-
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
-
Como Word tu variable puede llegar a contener hasta 65535.
-
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
-
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.
-
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
-
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.
-
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
-
entonces por metodos normales word es una variable de hasta 65.000
Hola:
Exactamente es 65535 :-)
-
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:
-
Me parece una solucion ingeniosa 8) la voy probando y te comento.
Salu2
-
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:
-
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
-
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:
-
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.
-
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.
-
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:
-
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.