Haz una pregunta
  Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos
Foros Registrarse ¿Olvidaste tu contraseña?

Temas similares

26/03/2011 #1

Avatar de Natanjimenez

Como dividir dos bytes con un bytes en asm
Saludos Amigos tengo un problema necesito dividir un numero proveniente de un proceso que viene del un temporizador dándome como posibilidad 2 byte estos valores lo necesito dividir con una constante que es 230 (en decimal) es decir que es una constante de 1 Byte por favor ayúdenme con una librería de división que funcione ya he probado varias sin éxito estoy trabajando con un 18F
27/03/2011 #2

Avatar de foso

esta es la que uso yo con los pic de baja gama. Igual creo que los 18F tienen instrucciones de hardware para dividir. saludos
27/03/2011 #3

Avatar de Natanjimenez

Muy bueno eso aunque resolví mi problema porque como la división era por una constante encontré un datazo en un foro de Microchip

X/230= X*(65536/230)

En conclusión resolví mi división con una multiplicación pero estaré pendiente para usar esa en otra oportunidad así mismo de hacer una librería completa de operaciones matemáticas
27/03/2011 #4

Avatar de Eduardo

Natanjimenez dijo: Ver Mensaje
Muy bueno eso aunque resolví mi problema porque como la división era por una constante encontré un datazo en un foro de Microchip
X/230= X*(65536/230)
En conclusión resolví mi división con una multiplicación pero estaré pendiente para usar esa en otra oportunidad así mismo de hacer una librería completa de operaciones matemáticas
65536/230 = 284.94391.. ==> Menos error si multiplicás por 285.

Tenés que tener en cuenta que para algunos valores el resultado va a tener error de +/- 1 --> Si en tu aplicación eso no importa, entonces todo OK.
27/03/2011 #5

Avatar de Natanjimenez

correcto
así lo hice y el resultado es espectacular! es una división entre un resultado que me da el TMR3 de un ancho de un pulso de un sensor ultrasonico a veces la respuesta mas simple es la indicada éxitos !1
24/07/2011 #6

Avatar de Natanjimenez

saludos intentando ahora usar esa rutina no me funciona podrias explicar la logica que usas para la division
25/07/2011 #7

Avatar de Scooter

Hay varias aproximaciones para dividir. Una de ellas ir restando hasta que de negativo, el resultado es el número de veces que restaste antes de ser negativo y el resto es el resto (valga la "rebuznancia")
Otra es desplazar a la derecha ya que cada vez es dividir por dos y luego terminar restando...
Otra es una tabla lookup pero para 16 bits no es viable.
25/07/2011 #8


Puede que no te guste la opción... pero programar en C te libera de esos problemas, abriendo un montón de otras puertas.
Saludos
25/07/2011 #9

Avatar de cosmefulanito04

kuropatula dijo: Ver Mensaje
Puede que no te guste la opción... pero programar en C te libera de esos problemas, abriendo un montón de otras puertas.
Saludos
Pero tene en cuenta que trabajar con nºs flotantes en C genera mucho codigo, si no tenes problemas de poca memoria de codigo es una buena opcion, de lo contrario vas a tener que pedalear mas.
25/07/2011 #10

Avatar de Natanjimenez

saludos Scooter muy amable por tu respuesta muy lógica ahora como se hara la resta de un nuemro de 16 bits

existira una nota de plicacion de microhcip para hacer operaciones arimeticas de division
26/07/2011 #11

Avatar de Eduardo

Natanjimenez dijo: Ver Mensaje
existira una nota de plicacion de microhcip para hacer operaciones arimeticas de division
AN526 : PIC16C5X / PIC16CXXX Math Utility Routines
Respuesta
¿Tienes una mejor respuesta a este tema? ¿Quieres hacerle una pregunta a nuestra comunidad y sus expertos? Registrate

Foros de Electrónica » Diseño digital » Microcontroladores y sistemas embebidos

Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO ©2011, Crawlability, Inc.