PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Các ngôn ngữ lập trình khác (CCS C, HT PIC,...) (http://www.picvietnam.com/forum/forumdisplay.php?f=12)
-   -   Lại thắc mắc lệnh printf("%u",val_adc) , ADC 10 bit (http://www.picvietnam.com/forum/showthread.php?t=4081)

phandinh 07-05-2009 10:59 PM

Lại thắc mắc lệnh printf("%u",val_adc) , ADC 10 bit
 
Em đã làm dc giao tiếp ADC 8 bit gởi lên PC , bây giờ e đang làm 10 bit nhưng đang bí mong các bác chỉ giúp các thắc mắc sau:
#############thắc mắc 1 ##################
int16 val_adc ; //biến đọc 10 bit ADC
.....
val_adc = read_adc();
printf("%u",val_adc);// khi dịch thì chương trình báo lỗi " printf format type is invalid "
// nếu em khai báo " int val_adc; " thì không báo lỗi.
trong C thì int có kích thước là 2 byte. CCS thì int có kích thước 1 byte, int16 có kích thước 2 byte.Thực hư là thế nào ?
Vậy với yêu cầu đọc ADC 10 bit em khai báo " int16 val_adc ;" là đúng chứ ?
mà sao khi dịch thì bị báo lỗi như trên.
############ thắc mắc 2 ###################
Ví dụ: val_adc = 1023 ;
printf("%u",val_adc); // có phải sẽ gửi lần lượt gửi 1 ,0 , 2 , 3, không ?


Rất mong các bác chỉ giúp
thanks

thienthanhomenh 08-05-2009 10:09 AM

bạn xem kỷ lại xem trong hàm printf("%u",val_adc) biến nhập vào (val_adc) là dạng biến ji theo mình nó là unsigned char trong ccs nó là unsigned int8 do bạn
biến nhập hiện tại bạn đua vào là int16 báo lổi là chính xác %u là cho u int8

chú ý là bạn nên khai báo chình xác unsigned int16
hoặc là signed int16 thì se dùng:
printf("%Lu",val_adc) hoặc printf("%Lu",val_adc)
xem bảng này nha
//=============
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.


//=============
>>Ví dụ: val_adc = 1023 ;
>>printf("%u",val_adc); // có phải sẽ gửi lần lượt gửi 1 ,0 , 2 , 3, >>không ?
theo mình là không ....

cskiller 08-05-2009 10:45 AM

%u in số 8 bits không dấu
%Lu in số 16 bits không dấu

Trích:

Ví dụ: val_adc = 1023 ;
printf("%u",val_adc); // có phải sẽ gửi lần lượt gửi 1 ,0 , 2 , 3, không ?
đang in số không dấu 8 bits -> kết quả là 255

cskiller 08-05-2009 10:45 AM

%u in số 8 bits không dấu
%Lu in số 16 bits không dấu

phandinh 08-05-2009 11:54 AM

A ! em làm dc rồi.Vui quá !!!!!!!!!!!!!!!!! Cảm ơn các bác nhiều
Thank u so much much

minhbien 27-11-2010 05:41 AM

Cho em hỏi là lệnh printf này thực hiện trong bao lâu, em tìm hoài không thấy...cảm ơn các anh trước!

truongqt 26-11-2011 10:56 PM

Trích:

Nguyên văn bởi phandinh (Post 25583)
A ! em làm dc rồi.Vui quá !!!!!!!!!!!!!!!!! Cảm ơn các bác nhiều
Thank u so much much

Anh ơi cho em xin đoạn code đó anh nhé, em làm mãi mà không được. Em chân thành cảm ơn anh nhiều lắm.


Múi giờ GMT. Hiện tại là 05:41 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam