#include <90s8515.h> #include c:\cvavr\inc\stdio.h #include c:\cvavr\inc\ftoa.h #include c:\cvavr\inc\atof.h char instr[10], outstr[10]; float fltin, fltout; //====================================== float getfloat() //get chars, print them back, handle backspace, //add decimal if it is not in input (to fix atof bug) { char input_dec; //flag for existing decimal char in_str[32]; //The input to be converted to a float char current_char; //the last char to be inputted char in_count; //the current char number input_dec=0; in_count=0; while ( (current_char=getchar()) != '\r' ) //carriage return { putchar(current_char); if (current_char == 0x08) //backspace --in_count; else in_str[in_count++]=current_char; if (current_char == '.') //set decimal flag input_dec=1; } putchar(current_char); //emit carriage return putchar('\n'); //line feed makes output nicer if ( input_dec == 0 ) in_str[in_count++]='.'; //add decimal if necessary in_str[in_count]=0x00; //null terminate return atof(in_str); } //====================================== void main(void) { UCR = 0x10 + 0x08 ; UBRR = 25 ; putsf("\r\n pgm start\r\n"); while(1) { putsf("Enter a float.\r"); fltin = getfloat(); ftoa(fltin/2,2,outstr); printf("input/2=%s\r\n\r\n",outstr); } }