??? 06/25/09 00:47 Read: times |
#166433 - Re: use a cast Responding to: ???'s previous message |
Hi Maarten,
Maarten said: I suspect that your compiler sends the small (<256) number 1 as a char to the printf function which interprets it as an unsigned int. So it reads 0x01FF of which only 0x01 was really sent to it. Try casting the constant to unsigned int. I have declared unsigned int variable and assigned to a constant value but the data received on the HyperTerminal is not reliable: Code: //Declaration: xdata unsigned int data1=1; xdata unsigned int data2=1550; xdata unsigned int data3=15550; //Output to UART: printf("DATA 1:%un",data1); //Output result to UART printf("DATA 2:%un",data2); //Output result to UART printf("DATA 3:%un",data3); //Output result to UART Output on HyperTerminal: DATA 1:53925 DATA 2:53926 DATA 3:30127 ;-------------------------------------- I have also tested by using "printf" to send string and SBUF to send data, but nothing come up on the terminal: e.g. void serial_init(void) { //Configure UART T3CON = 0x83; //configure timer 3... T3FD = 0x12; //...for 9600 baud SCON = 0x50; TI=1; //Initialise to send } printf("DATA 1:"); SBUF=data1; while(! TI) {} // Wait for transmission completion TI =0; // Clear the interrupt ;-------------------------------------- Do you have any idea why it went wrong? |