Salut les gens, j'ai lu vite fait votre post, mais le programme ci dessus permet uniquement des division par puissance de 2. En effet en binaire une operation de shift droit correspond a une division par 2 et dans le programme il en fait 3.. d'ou 2^3=8.Iridium a écrit :Normalement , voila le nouveau code à intégré a au fichier.
D'après le site que tu as posté.....
il ne me reste plus qu'a obtenir un 12F683 pour essayé..
a+
; ACC = ACC * 1.12
; Temp = TEMP
; ACC size = 16 bits
; Error = 0.5 %
; Bytes order = little endian
; Round = no
; ALGORITHM:
; Clear accumulator
; Add input * 1 to accumulator
; Add input / 8 to accumulator
; Move accumulator to result
;
; Approximated constant: 1.125, Error: 0.446429 %
; Input: ACC0 .. ACC1, 16 bits
; Output: ACC0 .. ACC2, 17 bits
; Code size: 19 instructions
cblock
ACC0
ACC1
ACC2
TEMP1
endc
;copy accumulator to temporary
movf ACC1, w
movwf TEMP1
movf ACC0, w
;shift accumulator right 3 times
clrc
rrf ACC1, f
rrf ACC0, f
clrc
rrf ACC1, f
rrf ACC0, f
clrc
rrf ACC1, f
rrf ACC0, f
;add temporary to accumulator
addwf ACC0, f
movf TEMP1, w
skpnc
incfsz TEMP1, w
addwf ACC1, f
clrf ACC2
rlf ACC2, f
Donc vu le programe les seules valeurs que l'on peut reprogramé sont 2,4,8,16,32.....
Voilou