using n-bit math
result
ready v3
turns 23 f 489
33609 3664.3145
turns 23 f 486
33606 3663.9875
turns 23 f 484
33604 3663.7694
Code:
Include "N-Bit_MATH.pbp"
enc_new VAR BYTE bank0
enc_old VAR BYTE bank0
enc_counter VAR WORD bank0
Flag var BYTE bank0
tmp var byte[4]
res var byte[4]
tmp1 var byte[4]
posn var WORD
turns var word
frac var WORD
; Set variable value @ startup
Flag = 1 ;preset a value for testing
enc_new = 0
enc_old= 0
enc_counter = 33609 ;preset a value for testing
Main_Loop:
if Flag = 1 then
turns= enc_counter /1440
frac= enc_counter //1440
serout2 PORTa.0,84, [13,10,"turns ",#turns,9,"f ",#frac ]
if frac then
@ MOVE?CP 157000, _tmp
@ MOVE?WP _frac, _tmp1
@ MATH_MUL _tmp1, _tmp, _res
@ MOVE?CP 1440000, _tmp
@ MATH_DIV _res, _tmp, _tmp1
@ MOVE?PW _tmp1, _posn
@ MOVE?CP 144, _tmp
@ MATH_DIV REG_Z, _tmp, _tmp1
@ MOVE?PW _tmp1, _frac
endif
posn=posn+turns*157
serout2 PORTa.0,84, [13,10,#enc_counter,9,dec4 posn,".",dec4 frac ]
Flag = 0
endif
goto Main_Loop
end
Bookmarks