![]() |
|
Tài trợ cho PIC Vietnam |
PIC - Thiết kế và Ứng dụng Ý tưởng cho các sản phẩm sử dụng PIC/dsPIC và các sản phẩm của Microchip |
![]() |
|
Ðiều Chỉnh | Xếp Bài |
|
![]() |
#1 |
Trưởng lão PIC bang
|
Bạn không cần phải tự xây dựng hàm chuyển chuỗi ASCII thành số đâu, các hàm atoi(), atol(), và atof() trong thư viện của CCS C có thể thực hiện công việc đó. Hãy đọc tài liệu hướng dẫn của trình biên dịch trước khi viết code, để xem có cần phải "sáng chế lại cái bánh xe" hay không.
Thân,
__________________
Biển học mênh mông, sức người có hạn. Đang gặp vấn đề cần được giúp đỡ? Hãy dành ra vài phút đọc luồng sau: http://www.picvietnam.com/forum/showthread.php?t=1263 |
![]() |
![]() |
![]() |
#2 |
Đệ tử 2 túi
Tham gia ngày: Jan 2009
Bài gửi: 29
: |
anh ơi ! em đã thử mấy cái hàm đó và thấy nó hiện đúng ! khi chưa gửi kí tự từ trên visual . ví dụ em khai báo :
char str[]="12"; int16 y; y=atol(str); hien(y); thì nó hiện đúng . Nhưng khi em gửi từ trên máy tính xuống thì nó lại hiện sai . chương trình của em như sau : Code:
#include <16f877a.h> #include <def_877a.h> #include <ctype.h> #fuses HS,NOLVP,NOWDT,PUT #use delay (clock=4000000) // defind crystal = 4MHz #use rs232(baud=9600,parity=N,xmit=PIN_C6,rcv=PIN_C7,bits=8) #include <string.h> #include <stdlib.h> int16 MAP[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; int16 t[2]={0x01,0x02}; void hien(int16 x) { int8 i; int8 a[2]={0}; a[0]=x%10; a[1]=x/10; for(i=0;i<2;i++) { porta=t[i]; portd=MAP[(a[i])]; delay_ms(2); } } void main() { char k[]="12"; int16 y; trisd=0x00; trisa=0x00; porta=0x00; portd=0x00; while(true) { if(kbhit()) { gets(k); puts(k); y=atol(k); } hien(y); } } thay đổi nội dung bởi: namqn, 19-03-2009 lúc 03:42 PM. Lý do: định dạng code |
![]() |
![]() |
![]() |
|
|