Programación Específica > Microcontroladores
Pic 16f87x
ramirojuan:
Gracias por tu ayuda, le voy a dar unas vueltas y te aviso.
ramirojuan:
Funciona pero multiplicando 256 la parte alta, gracias. Pero me queda la duda, tienes alguna nocion de como hacerlo en el programa del PIC, sigo buscando en la red, ya que no se me ocurre como, pero no encuentro nada.
Se debe poder que crees tu?
© Jonathan ©:
Hola, mira, aunque no me creas di muchas vueltas buscando informacion para ayudarte, pero cero resultados.
Intente hacer el programa para el pic, pero imposible, si quieres intentamos hacerlo, eso si, tendrias que comenzarlo y de ahi te ayudo ya que el tiempo libre cada vez se me hace menos. Poder si se puede, en esto no hay imposible a menos que el micro no te lo permita.
Espero tu respuesta, saludos y suerte. :hola:
ramirojuan:
Revisando en internet y segun lo que quiero hacer, al parecer se puede realizar pero restando, me dijeron que restando se podia, por ejemplo si yo tengo el numero 1023 le resto 1000 y si tengo resultado 0 es porque tengo Unidad de Mil, luego al ser cero paso a las centenas resto 100 evaluo el resultado hasta que sea 0 o me de resto, luego con las decenas y asi hasta la unidad pero como lo pongo en el programa PIC ya que eso es lo que me complica un poco, al saber si tengo unidad de mil es facil ya que el resultado no puede ser mas alla de mil por lo que enviaria al pc un 30h o un 31h si hay unidad de mil o sino la hay envia un cero, asi con los demas, perome complica un poco la programacion en pic.
Ahora tambien me complica el tomarlo de los registros despues del conversor, lo puedo convertir a Hexa (eso lo tengo ok) pero luego puedo ir sumando los resultados que tenga en hexa para sumarlos?
Me entiendes la idea? Estoy un poco enredado con mis ideas...
Espero tus comentarios
Saludos.
© Jonathan ©:
Bueno, lo que ahora te voy a comentar lo saque en un ratito, minutos despues de leer el ultimo mensaje que posteaste. No se si funcionaria, pero intentar no cuesta nada.
El resultado del conversor es de 10 bits, dentro de un regustro de 16.
Supongamos que la parte baja esta en ADRESL y la parte alta en ADRESH.
Tenemos el siguiente resultado del conversor analogico digital:
_____________________________________
| 1 | 0 | 1 | 0 | 0 | 0 | 0 | 0 | 0 | 1 |
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
512 256 128 64 32 16 8 4 2 1
El numero corresponde al 641 en decimal y al 281 en Hexa... lo que nosotro queremos es que envie el numero en decimal a la PC.
Leemos la parte baja del resultado del conversor y la convertimos en hexadecimal, la guardamos en un registro y leemos la parte alta del resultado del conversor, a esa lectura tambien la convertimos en hexa y luego se la sumamos a la conversion que hoy hicimos la cual habiamos guardado en un registro.
Ahi lo que hicimos es tomar el resultado del conversor analogico digital y convertirlo a Hexa.
Bien, ahora al tener el resultado convertido en vez de ser el binario '1010000001' seria el Hexadecimal '281' el cual sera trabajado para ser convertido a decimal.
Una vez obtenido el valor Hexa, haremos la parte mas complicada, la cual te explicare con palabras simples, el tema sera hacerlo fucnionar en el pic.
Tomas el primer digito del valor Hexa que seria de '281' el caracter '2' y haces lo siguiente:
2
2*(16) ; dos por diesciseis al cubo
y lo guardas en un registro. Luego lees el siguiente digito y haces lo mismo para en vez de hacerlo al cuadrado lo haces por 1:
1
8*(16) ; ocho por diesciseis a la uno
Al resultado le sumas el valor que habiamos registrado anteriormente y lo guardas en el registro. Luego haces lo mismo con el ultimo digito pero esta vez por 0:
0
1*(16) ; uno por uno
Esto ultimo se lo sumas al valor que habiamos guardado anteriormente.
Hasta ahi, si todo esta bien, las sumas que hemos hecho de las conversiones de hexa a dec seria de 641, ese es el valor de la conversion del numero binario a decimal.
Bueno, esta es una de mis ideas, la cual si fuera muy necesario haria funcionar, ahi tienes como para pensar y hacer funcionar lo que necesitas. Cualquier duda me consultas. Saludos y hasta pronto. :hola: :blink:
Navegación
[#] Página Siguiente
[*] Página Anterior
Ir a la versión completa