BTW, the code is posted to be freely used, so use GPL, GPL2, BSD or the
licence you want to use, not a problem.

Olgierd


El mié, 05-07-2006 a las 15:30 -0400, Olgierd Eysymontt escribió:
> Hi, as I got no answer to the problem of printing floats in pic16 port,
> I made a small routine to print numbers in the form DDDDD.MMMMMMM to 8
> decimal places, it's very simple, but can be useful to somebody else.
> 
>       The usart_send_2 routine is used to send chars to the serial port, so
> can be implemented by the user in different ways.
> 
> Olgierd
> 
> ----------------------
> // code
> 
> 
> /**
>       Converts a float number into a string considering 'left_min_zeros' 
>       numbers before the decimal place and 'decimals' decimals
> 
> */
> void send_float(float val, unsigned char decimals , unsigned char
> left_min_zeros){
>       unsigned char i,j;
>       union float_long fl1;
>       unsigned char sign,et;
>       char exp;
>       char int_part[10],dec_part[10];
>       
>       unsigned long mantissa,mint,mflot,sum_dec,mask,comp;
>       
>       //Lookup Table of 1e8/2^i for calculation of decimal valued
>       unsigned long dec_vals[23]={
>               50000000 ,
>               25000000 ,
>               12500000 ,
>                6250000 ,
>                3125000 ,
>                1562500 ,
>                 781250 ,
>                 390625 ,
>                 195312 ,
>                  97656 ,
>                  48828 ,
>                  24414 ,
>                  12207 ,
>                   6103 ,
>                   3051 ,
>                   1525 ,
>                    762 ,
>                    381 ,
>                    190 ,
>                     95 ,
>                     47 ,
>                         23 ,
>                         12 };
>       
> 
>       fl1.f = val;
> 
>       sign=SIGN(fl1.l);
>       exp = EXP (fl1.l) - 127;
>       mantissa=MANT(fl1.l);
>       
> 
>       mint=mantissa;
>       for(i=0;i<23-exp;i++){
>               mint=mint >> 1;
>       }
>       et=9+exp;
>       mflot = ((mantissa << et) >> 9);
>       
>       // now do an arithemtic sum of decimals values
>       sum_dec=0;
>       for(i=0;i<23;i++){
>               mask=1ul<<i;
>               comp=mask & mflot;
>               
>               if (comp != 0ul ){
>                       sum_dec=sum_dec+dec_vals[22-i];
>               }
>       }
>       // now I print the number
>       ltoa(mint, int_part, 10);
>       ltoa(sum_dec, dec_part, 10);
>       
>       if (sign==1)
>               usart_send_2('-');
>       else
>               usart_send_2(' ');
>       
>       // check the sizes, reuse the exp variable
>       exp = left_min_zeros-strlen(int_part);
>       // do i have to add zeros a beginning
>       if(exp > 0)
>               for(i=0;i<exp;i++)
>                       usart_send_2('0');
>       // send the integer part
>       send_uint(mint);
>       usart_send_2('.');
>       
>       // check the zeros of decimal part, reuse the exp variable
>       exp = 8-strlen(dec_part);
>       if(exp > 0)
>               for(i=0;i<exp;i++)
>                       usart_send_2('0');
>       // send the decimal part
>       for(i=0;i<decimals-exp;i++)
>               usart_send_2(dec_part[i]);
>       
>       
> }
> 
> 
> 
> Using Tomcat but need to do more? Need to support web services, security?
> Get stuff done quickly with pre-integrated technology to make your job easier
> Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
> http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
> _______________________________________________
> Sdcc-user mailing list
> Sdcc-user@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/sdcc-user


Using Tomcat but need to do more? Need to support web services, security?
Get stuff done quickly with pre-integrated technology to make your job easier
Download IBM WebSphere Application Server v.1.0.1 based on Apache Geronimo
http://sel.as-us.falkag.net/sel?cmd=lnk&kid=120709&bid=263057&dat=121642
_______________________________________________
Sdcc-user mailing list
Sdcc-user@lists.sourceforge.net
https://lists.sourceforge.net/lists/listinfo/sdcc-user

Reply via email to