//****************************************************************************************** // Project : // Program Name : // Programer : // Create date : // History : // Language : Cygwin //****************************************************************************************** // Description // //****************************************************************************************** #include #include #define PI_MAX_data 100 #define PI_PI 3.141593 #define PI_FILENAME "work.dat" void toBIN(FILE *, unsigned char); void toBIN_2(FILE *,unsigned char); main() { unsigned int lp; float sin_data_f; unsigned int sin_data_i; unsigned char sin_data_c; FILE *fp; unsigned char CR=0x0d,LF=0x0a,COT='"',CNM=','; int crlf_index; // ********************* // 1. Initialize // ********************* fp = fopen(PI_FILENAME,"w"); // ********************* // 2. Program main // ********************* fprintf(fp," "); crlf_index = 1; for(lp=0;lp<(PI_MAX_data *2);lp++){ sin_data_f = sin(PI_PI / PI_MAX_data * (float)lp); sin_data_f = sin_data_f * 100 + 100; sin_data_i = sin_data_f + 0.5; sin_data_c = (char)sin_data_i; fprintf(fp,"%c", COT); toBIN(fp, sin_data_c); fprintf(fp,"%c%c", COT,CNM); if(crlf_index > 9){ crlf_index = 0; fprintf(fp,"%c%c ",CR,LF); } crlf_index++; } // ********************* // 3. Terminate // ********************* fclose(fp); } //****************************************************************************************** // Function Name : toBIN // Title : // Input : // Output : //****************************************************************************************** void toBIN(FILE *fp,unsigned char in_c) { toBIN_2(fp,(in_c >> 4 )); // toBIN_2(fp,in_c); } void toBIN_2(FILE *fp,unsigned char in_c) { switch((in_c & 0x0f)){ case 0: fprintf(fp,"%s","0000"); break; case 1: fprintf(fp,"%s","0001"); break; case 2: fprintf(fp,"%s","0010"); break; case 3: fprintf(fp,"%s","0011"); break; case 4: fprintf(fp,"%s","0100"); break; case 5: fprintf(fp,"%s","0101"); break; case 6: fprintf(fp,"%s","0110"); break; case 7: fprintf(fp,"%s","0111"); break; case 8: fprintf(fp,"%s","1000"); break; case 9: fprintf(fp,"%s","1001"); break; case 10: fprintf(fp,"%s","1010"); break; case 11: fprintf(fp,"%s","1011"); break; case 12: fprintf(fp,"%s","1100"); break; case 13: fprintf(fp,"%s","1101"); break; case 14: fprintf(fp,"%s","1110"); break; case 15: fprintf(fp,"%s","1111"); break; default: fprintf(fp,"%s","****"); break; } }