Bill, Try this code. I have used it in a recent project. I hope it helps Peter. ; *************************************************************************** ; ASSIGN LABELS TO THE VARIOUS (RAM) DATA FILE REGISTERS USED ; *************************************************************************** R0 RES 1 ; DECIMAL STORE FOR 1S DIGIT R1 RES 1 ; DECIMAL STORE FOR 10S DIGIT R2 RES 1 ; DECIMAL STORE FOR 100S DIGIT DIGIT1 RES 1 ; STORE FOR RIGHT DISPLAY DATA DIGIT2 RES 1 ; STORE FOR R/MIDDLE DISPLAY DATA DIGIT3 RES 1 ; STORE FOR L/MIDDLE DISPLAY DATA DIGIT4 RES 1 ; STORE FOR LEFT DISPLAY DATA ; ******************************************************* ; * BCD CONVERSION ; ******************************************************* B2_BCD MOVFW COUNTER_LOW MOVWF IPBUFFL MOVFW COUNTER_HIGH MOVWF IPBUFFH BCF STATUS,CARRY ; NOW CONVERT THE 16 BIT NUMBER MOVLW 16 ; INTO 5 BCD CHARACTERS - THE UPPER BCD MOVWF COUNT1 ; IS NOT DISPLAYED BUT HAS BEEN LEFT IN CLRF R0 ; FOR FUTURE USE CLRF R1 CLRF R2 LOOP16 RLF IPBUFFL,F ; COUNT BUFFER LOW BYTE RLF IPBUFFH,F ; COUNT BUFFER HIGH BYTE RLF R2,F RLF R1,F RLF R0,F DECFSZ COUNT1,F ;DECRIMENT AND SKIP IF ZERO GOTO ADJDEC GOTO BCDCON ADJDEC MOVLW R2 MOVWF FSR CALL ADJBCD MOVLW R1 MOVWF FSR CALL ADJBCD MOVLW R0 MOVWF FSR CALL ADJBCD GOTO LOOP16 BCDCON ; CONVERT THE 4 BCD DIGITS INTO THE CORRECT SWAPF R1,W ; FORMAT FOR THE LED BIT PATTEN. ANDLW 0FH ; STRIP UPPER BITS CALL GETCHAR MOVWF DIGIT4 MOVFW R1 ANDLW 0FH ; STRIP UPPER BITS CALL GETCHAR MOVWF DIGIT3 SWAPF R2,W ANDLW 0FH ; STRIP UPPER BITS CALL GETCHAR MOVWF DIGIT2 MOVFW R2 ANDLW 0FH ; STRIP UPPER BITS CALL GETCHAR MOVWF DIGIT1 RETURN ;*************************************************************************** ** ; ADJUST FOR BCD ;*************************************************************************** ** ADJBCD MOVLW 3 ADDWF 0,W MOVWF TEMP BTFSC TEMP,3 ; TEST IF RESULT > 7 MOVWF 0 MOVLW 30H ADDWF 0,W MOVWF TEMP BTFSC TEMP,7 ; TEST IF RESULT > 7 MOVWF 0 ; SAVE AS MSD RETLW 0 ;*************************************************************************** ** ; GET A DISPLAY CHARACTER BIT PATTERN BY CONVERTING 'W' TO DISPLAY CODE ;*************************************************************************** ** GETCHAR ADDWF PC,F ; USE 'W' AS AN OFFSET FOR 'PC' RETLW B'00111111' ; RETURN WITH "0" DISPLAY CODE RETLW B'00000110' ; RETURN WITH "1" DISPLAY CODE RETLW B'01011011' ; RETURN WITH "2" DISPLAY CODE RETLW B'01001111' ; RETURN WITH "3" DISPLAY CODE RETLW B'01100110' ; RETURN WITH "4" DISPLAY CODE RETLW B'01101101' ; RETURN WITH "5" DISPLAY CODE RETLW B'01111101' ; RETURN WITH "6" DISPLAY CODE RETLW B'00000111' ; RETURN WITH "7" DISPLAY CODE RETLW B'01111111' ; RETURN WITH "8" DISPLAY CODE RETLW B'01100111' ; RETURN WITH "9" DISPLAY CODE RETLW B'01110111' ; RETURN WITH "A" DISPLAY CODE RETLW B'01111100' ; RETURN WITH "B" DISPLAY CODE RETLW B'00111001' ; RETURN WITH "C" DISPLAY CODE RETLW B'01011110' ; RETURN WITH "D" DISPLAY CODE RETLW B'01111001' ; RETURN WITH "E" DISPLAY CODE RETLW B'01110001' ; RETURN WITH "F" DISPLAY CODE ==================================== Remember .... Every Silver Lining Has It's Cloud ==================================== Mailto:efoc@cyberstop.net