CCS C Software and Maintenance Offers
FAQFAQ   FAQForum Help   FAQOfficial CCS Support   SearchSearch  RegisterRegister 

ProfileProfile   Log in to check your private messagesLog in to check your private messages   Log inLog in 

CCS does not monitor this forum on a regular basis.

Please do not post bug reports on this forum. Send them to CCS Technical Support

Unable to print integer value

 
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion
View previous topic :: View next topic  
Author Message
hayee



Joined: 05 Sep 2007
Posts: 252

View user's profile Send private message

Unable to print integer value
PostPosted: Fri Sep 24, 2010 2:22 am     Reply with quote

Hi,
I am afraid why this is happening. I want to display integer number on hyper terminal. The 8-bit integer is from 0-255 if we use simple int or unsigned int and -128 to 128 if we use signed int.
But when I print the unsigned int it shows the value b/w -128 to 128.
Then I thought that maybe my program is creating an error. I write a small separate program but it is also happening here. Can someone tell me where I am wrong? Following is my code.
Code:

#include <18f252.h>
#fuses HS,NOWDT,NOLVP,PUT,NOBROWNOUT                       
#use delay(clock=20000000)                                       
#use rs232(xmit=PIN_C6, rcv=PIN_C7, baud=9600) 


unsigned int a;

void main ()
{
 while(1)
 {
  a++;
  printf(" %d ",a);
  if(a>250)                                         
  {
   a=0;
  }
  delay_ms(500);
 }



Result on hyper terminal is like that
Quote:

00 -99 -98 -97 -96 -95 -94 -93 -92 -91 -90 -89 -88 -87 -86 -85 -
84 -83 -82 -81 -80 -79 -78 -77 -76 -75 -74 -73 -72 -71 -70 -69 -
68 -67 -66 -65 -64 -63 -62 -61 -60 -59 -58 -57 -56 -55 -54 -53 -
52 -51 -50 -49 -48 -47 -46 -45 -44 -43 -42 -41 -40 -39 -38 -37 -
36 -35 -34 -33 -32 -31 -30 -29 -28 -27 -26 -25 -24 -23 -22 -21 -
20 -19 -18 -17 -16 -15 -14 -13 -12 -11 -10 -9 -8 -7 -6 -5 -4 -3
-2 -1 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39
40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
60 61 62 63 64 65 66 67
ckielstra



Joined: 18 Mar 2004
Posts: 3680
Location: The Netherlands

View user's profile Send private message

PostPosted: Fri Sep 24, 2010 3:13 am     Reply with quote

This is a basic C programming error. If you had studied your C learning book, or the CCS manual you would have spotted the error immediately.

From the CCS manual on the Printf command for the format specifier
Quote:
c Character
s String or character
u Unsigned int
d Signed int
Lu Long unsigned int
Ld Long signed int
x Hex int (lower case)
X Hex int (upper case)
Lx Hex long int (lower case)
LX Hex long int (upper case)
f Float with truncated decimal
g Float with rounded decimal
e Float in exponential format
w Unsigned int with decimal place inserted. Specify two numbers for
n. The first is a total field width. The second is the desired number
of decimal places.
hayee



Joined: 05 Sep 2007
Posts: 252

View user's profile Send private message

PostPosted: Fri Sep 24, 2010 3:36 am     Reply with quote

Thanks ckielstra. Ya it was a basic thing but I didn't remember that.
Display posts from previous:   
Post new topic   Reply to topic    CCS Forum Index -> General CCS C Discussion All times are GMT - 6 Hours
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum


Powered by phpBB © 2001, 2005 phpBB Group