Cách Sử Dụng Hàm ITOA()
chào các bác!
em có chút thắc mắc! mong các bác xem xét jum`! em lập trình trên PIC24fj128ga010 bằng CCS, sử dụng hàm itoa() để chuyển đổi số sang ký tự! nhưng không hiểu tại sao lại không sử dụng được! sau khi chuyển đổi, em hiện thị lên LCD thi thấy toàn ký tự lạ! mong các bác giúp đỡ! thanks! Code:
//pic 24fj128ga010 |
Hàm itoa() chuyển đổi số nguyên thành chuỗi ký tự ASCII biểu diễn số nguyên đó. Một số module LCD ký tự có thể dùng các bảng mã khác với ASCII, bạn nên kiểm tra lại điều này.
Thân, |
vấn đề của bạn trên là sử dùng sai cấu trức hàm itoa
char * itoa ( int value, char * str, int base ); có 1 điều mình cần hỏi về hàm này là mình có gủi dữ liệu từ PIC 16f887 lên máy tính bằng cổng COM viết bằn Hitech. Nếu dùng hàm printf ("%i",xung); thì gửi được // xung kiểu int Nếu dùng : itoa(xung,str_xung,2); // str kiểu char str[16]; puts(str); thì chương trình gần như k chạy nổi. không lẽ hàm itoa cần khả năng tính toán lớn nằm ngoài khả năng của pic 16f887 |
itoa() thuộc thư viện stdlib.h
char * itoa ( int value, char * str, int base ); cách sử dụng nó : /* itoa example */ #include <stdio.h> #include <stdlib.h> int main () { int i; char buffer [33]; printf ("Enter a number: "); scanf ("%d",&i); itoa (i,buffer,10); printf ("decimal: %s\n",buffer); itoa (i,buffer,16); printf ("hexadecimal: %s\n",buffer); itoa (i,buffer,2); printf ("binary: %s\n",buffer); return 0; } Output: Enter a number: 1750 decimal: 1750 hexadecimal: 6d6 binary: 11011010110 |
Trích:
bạn tiến hành chuyển int (tức là xung) sang nhị phân (string) với int16 mà chuyển qua nhị phân tức là có 16 số (0 hoặc 1) từ 0 đến 15 chiếm mất 16 ô nhớ Giả sử như chiếm 16 ô nhớ cộng với kí tự NULL ở cuối chuổi nữa thì str[16] đâu có đủ. ít nhất cũng phải str[17]. thôi thì cứ khai báo cho nó lớn lên 1 chút thân . |
Múi giờ GMT. Hiện tại là 05:29 AM. |
Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam