Autor Tema: División 16 bits/8 bits, cómo lo hago?  (Leído 9882 veces)

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

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
División 16 bits/8 bits, cómo lo hago?
« en: 02 de Marzo de 2009, 12:25:17 »
Dios, he mirado 100 ejemplos pero son tan liosos que parece mas bien una pizarra llena de fórmulas de la teoría de las cuerdas  :mrgreen:

Tán difícil es dividir por ejemplo 27 10 h / 04h = 09 C4 ? (10000 decimal/4 decimal= 2500decimal )
Todo lo que quiero es dividir 2 bytes por 4.

Alguien tiene algún link para una rutinita que no me ocupe 4 gigas de memoria del PIC?  :D
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #1 en: 02 de Marzo de 2009, 13:48:12 »
Si solo quieres dividir entre 4 puedes usar desplazamientos hacia la derecha, ahora si quieres hacer divisiones entre cualquier numero podrias buscar en Microchip , ellos ya tienen rutinas listas.

Saludos
« Última modificación: 05 de Marzo de 2009, 20:25:46 por sander »
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado Javicho

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 570
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #2 en: 02 de Marzo de 2009, 14:25:34 »
Ahi te va una subrutina a 16bits a ver si te sirve.

Javicho.

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #3 en: 02 de Marzo de 2009, 14:38:29 »
juas, que fácil era. Gracias

un par de RRF a cada byte y listo  :mrgreen:
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #4 en: 02 de Marzo de 2009, 14:39:52 »
Gracias Javi, esa me sirve por si quiero dividir por NO multiplos de 2
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado migsantiago

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 8257
    • Sitio de MigSantiago
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #5 en: 02 de Marzo de 2009, 14:51:30 »
juas, que fácil era. Gracias

un par de RRF a cada byte y listo  :mrgreen:

Si es un PIC16, las instrucciones RRF y RLF se hace a través del Carry de Status, hay que poner a cero el carry para lograr lo que necesitas.  :wink:

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #6 en: 02 de Marzo de 2009, 14:54:08 »
Hola.

Meto la cucharada aca ... no es lo mismo dividir que hacer divisiones sucesivas?
El papel lo aguanta todo

Desconectado sander

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 627
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #7 en: 02 de Marzo de 2009, 17:01:26 »
sera restas sucesivas, y si se puede implementar un algoritmo para dividir usando restas sucesivas.

Saludos
La electrónica es el arte de manipular señales eléctricas que transportan información
Jan Davidse

Visita mi blog
Visita mi canal de youtube

Desconectado MLO__

  • Colaborador
  • DsPIC33
  • *****
  • Mensajes: 4581
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #8 en: 02 de Marzo de 2009, 17:08:32 »
eso, restas sucesivas .... estaba en mi cabeza lo de la division.
El papel lo aguanta todo

Desconectado pibe

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 635
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #9 en: 02 de Marzo de 2009, 18:03:53 »
Fantástico.
He logrado tomar 4 valores analógicos, sumarlos y hacer una media de los 4 . ((a+b+c+d)/4)
Gracias chicas!   :-/ :mrgreen:


Ahora , me hago una pregunta: Qué pasa cuando sumamos dos bytes, por ejemplo FF+ FF? Eso daría un valor que excedería un byte, o sea que el resultado debería ponerse en 2 bytes. Y qué pasa cuando hacemos ?:

addwf variable (W trae un 0xff y la variable tiene otro 0xff)

Tenemos que tener siempre en cuenta que el resultado no exceda FF?
Ya sé que se activa el carry, pero digo.... cuando trabajamos con muchas variables y movemos datos de aqui para allá... es dificil que no se nos escape un simple "overflow".
A ver para cuando los PICs inteligentes!  :mrgreen:
Mi jefe mirando el prototipo que estoy creando: "Y eso va a funcionar?"

Desconectado RICHI777

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1498
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #10 en: 02 de Marzo de 2009, 23:47:39 »
Hola Pibe, en todo programa sea cual sea el lenguaje las variables tienen un alcanze que depende de cosa queres almacenar en ella, ejemplo si queres contar segundos con un byte te alcanza ya que el alcance es de 0 a 59, ahora si queres contar los minutos en un dia ( 1440 ) un byte no alcanza entonces necesitas un word ( 2 bytes ), para ese caso si vas a operar con la suma, necesitas incrementar en uno el byte menos significativo ( big endian ) y despues verificar el carry, si este se produjo es necesario incrementar el segundo byte correspondiente al byte mas significativo, la resolucion de la variable es igual a 2 elevedo a la cantidad de bits.

byte = 256 ( 1 byte )
word = 65.535 ( 2 bytes )
24bits( no tiene nombre standart )  = 16.777.216 ( 3 bytes )
dword = 4.294.967.296 ( 4 bytes )

Con la resta es similar.

Saludos !
« Última modificación: 03 de Marzo de 2009, 00:10:08 por RICHI777 »

Desconectado Leon Pic

  • Colaborador
  • DsPIC30
  • *****
  • Mensajes: 3610
    • Impresiones en 3D
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #11 en: 03 de Marzo de 2009, 12:34:16 »
Justamente, para ello está el bit C. Si este acusa desbordamiento, tienes que incrementar la segundo word.

Yo sufrí un gran problema con las rutinas de microchips para dividir. Hay dos programas para dividir. La más rápida funciona mal y la mas lenta funciona de maravilla, pero tarda una eternidad. Por ese motivo, me cree mi propia rutina de división que es por medio de la resta.

Si buscas en el tema Rutinas para compartir las encontrarás alli.
Jesús dijo, yo soy el CAMINO, la VERDAD y la VIDA, nadie llega al PADRE si no es por mi.

Desconectado Chenao

  • PIC18
  • ****
  • Mensajes: 414
Re: División 16 bits/8 bits, cómo lo hago?
« Respuesta #12 en: 05 de Marzo de 2009, 20:16:35 »
Un saludo

Estoy de acuerdo hacer división rotando jamás lo he entendido si alguién me hace el favor se lo agradeceria por que la verdad lo único que hago es copiar y pegar las rutinas de microchip :D  :D :D.

Un saludo desde Pereira - Colombia
Un saludo desde Pereira - Colombia