Hello, I want to ask a little bit help. I want to use the printf instruction with the Noice debugger. I can printf char or float fine but when I try to printf int or long I get a totally different numbers throu the serial port. eg. WORKS void main (void) { unsigned char f; for (f=0;f<=255;++f) printf( %bu \n",f); } but DOESN'T WORK void main (void) { unsigned int f; for (f=0;f<=255;++f) printf( %u \n",f); } Thanks for any advice Cheer George
I haven't used that fuction very often yet, but when I was using it, I have noticed, that you should be very accurate with the types of the arguments. It is always helpful to cast the parameter. In that example that doesn't work, you might want to try to cast f.
void main (void) { unsigned int f; for (f=0;f<=255;++f) printf( %u \n", (unsigned int)f ); }
Hello, Thanks for the answers. Of course I read the c51 manual and I know type have to match with variable. I gave two examples in my post and I think both of them have a correct match. I tried to write (integer) in the printf too but still wrong. I forgett to tell when I try that short programs with Dscope both of them work fine so I have to belive the problem is in the Noice remore debugger. Cheer George
Don't forget the <pre> and </pre> tags to make code posts legible:
void main (void) { unsigned char f; for (f=0; f<=255; ++f) printf( %bu \n", f); // Works }
void main (void) { unsigned int f; for (f=0; f<=255; ++f) printf( %u \n", f); // Doesn't Work }
Maybe there is a timing issue. Do these 2 statements work? printf( "%s \n", "x" ); printf( "%s \n", "xyz" );
I think yes, they'll work but I'm going to try soon. There is no problem to printf the char, unsigned char and the strings. Cheer George
View all questions in Keil forum