Que hay gente del foro tengo un problema con este programa que se supone multiplica con punto flotante pero no lo e podido comprobar ya que no me funciona no ce donde esta el error o que me falta declarar la verdad es que lo descarge de un generador de codigo de una pagina de internet e aqui el codigo:
Si alguien me puede explicar lo que me hace falta o que esta mal del codigo se los agradecere.
Saludos, Elemos13
Código:
; multi = multi * 1.15
; Temp = insta
; multi size = 10 bits
; Error = 0.1 %
; Bytes order = little endian
; Round = no
; ALGORITHM:
; Clear accumulator
; Add input * 1 to accumulator
; Add input / 8 to accumulator
; Add input / 64 to accumulator
; Add input / 128 to accumulator
; Add input / 1024 to accumulator
; Move accumulator to result
;
; Approximated constant: 1.14941, Error: 0.0509511 %
; Input: multi0 .. multi1, 10 bits
; Output: multi0 .. multi1, 11 bits
; Code size: 56 instructions
#include<p16f877.inc>
list p=16f877
#DEFINE multi 0x78
insta EQU 0x22
org 00
goto inicio
inicio bsf STATUS,RP0
MOVLW B'00000000'
MOVWF TRISD
BCF STATUS,RP0
cblock 0x22
multi0
multi1
insta0
insta1
endc
;copy accumulator to temporary
movf multi1, w
movwf insta1
movf multi0, w
movwf insta0
clrc;shift accumulator right 3 times
rrf multi1, f
rrf multi0, f
clrc
rrf multi1, f
rrf multi0, f
clrc
rrf multi0, f
;add temporary to accumulator
clrf multi1
addwf multi0, f
movf insta1, w
skpnc
incfsz insta1, w
addwf multi1, f
;shift accumulator right 1 times
rrf multi1, f
rrf multi0, f
;add temporary to accumulator
movf insta0, w
addwf multi0, f
movf insta1, w
skpnc
incfsz insta1, w
addwf multi1, f
;shift accumulator right 3 times
rrf multi1, f
rrf multi0, f
clrc
rrf multi1, f
rrf multi0, f
clrc
rrf multi1, f
rrf multi0, f
;add temporary to accumulator
clrf multi1
movf insta0, w
addwf multi0, f
movf insta1, w
skpnc
incfsz insta1, w
addwf multi1, f
;shift accumulator right 3 times
rrf multi1, f
rrf multi0, f
CLRC
rrf multi1, f
rrf multi0, f
CLRC
rrf multi1, f
rrf multi0, f
;add temporary to accumulator
clrf multi1
movf insta0, w
addwf multi0, f
movf insta1, w
SKPNC
incfsz insta1, w
addwf multi1, f
END
Saludos, Elemos13
Última edición por un moderador: