• Domingo 29 de Septiembre de 2024, 03:23

Autor Tema:  Necesito Multiplicar Un Registro De 2 Bytes  (Leído 3330 veces)

RJC

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
    • http://www.tigresvaldivia.tk
Necesito Multiplicar Un Registro De 2 Bytes
« en: Domingo 18 de Junio de 2006, 09:14 »
0
Necesito multiplicar ADRESH y ADRESL (en realidad solo 10 bites) de este registro, por una constante. alguien sabe com lo puedo hacer?

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #1 en: Domingo 18 de Junio de 2006, 13:44 »
0
Hola!
Que micro usas? La familia 18F permite la multiplicación por hardware...
Asembler o C?
Cuál es la constante a multiplicar?

En la página de Microchip encontrarás varias notas de aplicación (AN) matemáticas, puedes buscar la que más te convenga...

De todas maneras responde y vemos que se hace.

Saludos

RJC

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
    • http://www.tigresvaldivia.tk
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #2 en: Domingo 18 de Junio de 2006, 17:26 »
0
Hola, estoy usando pic16f873 y programo en assembler. y estuve leyendo los AN de microchip, pero la verdad es no no entendi mucho.. ojala que puedas ayudarme.. gracias

Toph

  • Moderador
  • ******
  • Mensajes: 420
  • Nacionalidad: sv
    • Ver Perfil
    • http://www.electronicayotros.blogspot.com/
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #3 en: Lunes 19 de Junio de 2006, 00:51 »
0
Citar
Necesito multiplicar ADRESH y ADRESL (en realidad solo 10 bites) de este registro, por una constante. alguien sabe com lo puedo hacer?

 :huh: como sabes la multiplicacion es una suma abreviada, en tu caso quieres multiplicar 10 bits con una constante, o sea que debes sumar el registro el numero de veces de la constante.
voy a buscar una rutina que tengo que hace esto exactamente para posteartela  :comp:



saludos  :hola:
Por favor leer esto antes de postear. Gracias
NO alimenten al TROLL y morirá
¿Querés ayudar?, pues doná comida gratis con un simple clic aqui ,sin trucos
photobucket , Google , wine y cutepdf Rock!!!


programacion,c,c++,
Microcontroladores,java,linux,videojuegos,
,.NET,asm,codigo
por favor este 2012 que sea

RJC

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
    • http://www.tigresvaldivia.tk
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #4 en: Martes 20 de Junio de 2006, 19:25 »
0
el numero que quiero multiplicar es 0.196 (extraño??) la verdad es k si se puede hacer, un amigo lo hizo pero no lo puedo ubicar ( pk ya esta en su tesis) el me dio una pagina dnde se genera automaticamente la rutina con soo ponerle la cte, pero la probe y no me funciona, es esta, por si les srive http://www.golovchenko.org/cgi-bin/constdivmul

el codigo k genera es este

; binaro = binaro * 0.196
; Temp = TEMP
; binaro size = 8 bits
; Error = 0.5 %
; Bytes order = little endian
; Round = no

; ALGORITHM:
; Clear accumulator
; Add input / 8 to accumulator
; Add input / 16 to accumulator
; Add input / 128 to accumulator
; Move accumulator to result
;
; Approximated constant: 0.195312, Error: 0.350765 %

;     Input: binaro0, 8 bits
;    Output: binaro0, 6 bits
; Code size: 15 instructions

   cblock
   binaro0
   endc

;copy accumulator to temporary
   movf   binaro0, w


;shift accumulator right 3 times
   clrc
   rrf   binaro0, f
   clrc
   rrf   binaro0, f
   clrc
   rrf   binaro0, f

;add temporary to accumulator
   addwf   binaro0, f

;shift accumulator right 1 times
   rrf   binaro0, f

;add temporary to accumulator
   addwf   binaro0, f

;shift accumulator right 3 times
   rrf   binaro0, f
   clrc
   rrf   binaro0, f
   clrc
   rrf   binaro0, f


lo prbe con el mplab, y no veo en ninguna parte el resultado de la multiplicacion (le cargo 11111111 al binario0 y deberia dar aprox 200 (en binario por supuesto) y no lo veo (le pongo k lo deje en w) si pueden lo prueban y me dicen ok?  gracias

Huguen_aus_Tirol

  • Miembro MUY activo
  • ***
  • Mensajes: 318
    • Ver Perfil
    • http://www.erhard-automation.co.cc
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #5 en: Martes 20 de Junio de 2006, 19:50 »
0
No se cuanta precición necesitas, pero fijate que tu constante es 0.196, por 10 es 1.96. Podemos decir que es 2, y si rotamos un registro una posición a la izquierda, lo estamos multiplicando por 2 ;)
En una de esas puedes hacer así, y tienes tu resultado (multiplicado por 10). Todo depende de la exactitud que necesites.
Tal vez puedas compensar tu error luego, por rangos, por ejemplo...
Lo más simple y rápido es progamarlo en C...

Espero haber ayudado, nos cuentas!

Saludos

RJC

  • Nuevo Miembro
  • *
  • Mensajes: 6
    • Ver Perfil
    • http://www.tigresvaldivia.tk
Re: Necesito Multiplicar Un Registro De 2 Bytes
« Respuesta #6 en: Martes 20 de Junio de 2006, 20:36 »
0
gracias, la rutina k me entrega la pagina estaba bien, fue un error mio, estaba viendo el resultado en otro registr (cosas que pasan) de todas maneras les sirve a todos pk la paina que hace la multiplicacion esta bine buena