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)
-   -   Cách tính trong CCS??? (http://www.picvietnam.com/forum/showthread.php?t=1828)

dtdat1909 19-12-2007 12:13 AM

Cách tính trong CCS???
 
Bác nào giúp mình với. không biết trong CCS tính toán số thực như thế nào? mình có thể dùng cách ép kiểu như trong C được không?

VD:
float a=2.78;
int b;
b=(int)(a*100);

vậy b=278 có đúng không vậy các bác? kiểu int mặc định là 16 bit đúng vậy không các bác?

cám ơn các bác nhiều.

namqn 20-12-2007 08:22 AM

Theo tài liệu hướng dẫn sử dụng của CCS C, số thực (float) được hỗ trợ đầy đủ, do đó bạn có thể thực hiện việc chuyển kiểu (casting) theo ý muốn (mặc dù trình biên dịch tự động chuyển kiểu).

Cũng theo tài liệu trên, int mặc định là int8 (số nguyên 8-bit). Bạn nên dùng int16 hay long nếu muốn chắc chắn dữ liệu có độ dài 16-bit.

Tôi có 2 đề nghị với bạn:

1. Download tài liệu hướng dẫn sử dụng của CCS C ở link http://www.ccsinfo.com/downloads/CReferenceManual.pdf

2. Viết thử đoạn chương trình của bạn, thêm vào các lệnh xuất dữ liệu (ra cổng RS232 để hiển thị trên một PC chẳng hạn), rồi biên dịch bằng CCS C, sau đó chạy thử chương trình xem kết quả ra sao. Một khi bạn đã đầu tư cho việc học CCS C, tôi tạm giả thiết là bạn đã có phần cứng để thử nghiệm.

Thân,

hanhluckyly 20-12-2007 09:03 AM

Chào bạn


Theo mình thấy cách ép kiểu như vậy là đúng đó bạn. Nhưng đoạn code có vấn đề vì 278 lớn hơn kiểu định dạng int chỉ có 255 thôi

dtdat1909 21-12-2007 08:20 AM

ah, mình phát hiện ra rồi. chỉ có kiểu int có độ dài 4 byte (bằng với kiểu float) mới đúng. Có nghĩa là để ép thành kiểu int từ kiểu float thì ta dùng kiểu ép là int32.

float a=2.78;
int32 b;
b=(int32)(a*100);

dtdat1909 21-12-2007 08:21 AM

thanks các bác nhiều nha !


Múi giờ GMT. Hiện tại là 12:17 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