value multiplied 256

Status
Not open for further replies.

hi,
By changing the 'bit counter' value to 40 from 32 you are trying process 5 bytes, but you only have 4 bytes to work with, so you are overflowing the conversion and so you are 'losing' the MSD ie: the "1".
 
hi,
This is a fragment of the code I used to test the Bin2BCD/Disp, it works using the method stated in earlier posts.



Code:
;this is test data to check out the Bin2BCD and DispFreq Subr

;enter with a predivided value 100MHZ by 256 = 390.625
;the 0.625 is 'lost' so the final displayed value is 99,840

start:
	movlw 0x86; load the reg with 390.625 == 100,000/256
	movwf Result+3
	movlw 0x1
	movwf Result+2
	movlw 0x0
	movwf Result+1
	movlw 0x0
	movwf Result

;reposition the reg values == 390 * 256 
	movf Result+2,w
	movwf Result+1	;
	movf Result+3,w
	movwf Result+2
	movlw 0x0
	movwf Result+3

	call Bin2BCD
	call DispFreq; displayed value 99,840
	
lp1: goto lp1

 goto start
 
ericgibbs said:
hi,
By changing the 'bit counter' value to 40 from 32 you are trying process 5 bytes, but you only have 4 bytes to work with, so you are overflowing the conversion and so you are 'losing' the MSD ie: the "1".
Finally i got the code to work right.
I change the 'bit counter' value to 40 from 32 and i add one byte BCD4.
Thank all for the help.
 
Status
Not open for further replies.
Cookies are required to use this site. You must accept them to continue using the site. Learn more…