Ðề tài: RS232 và PIC16f877a
View Single Post
Old 26-05-2011, 11:56 PM   #10
stupid11
Đệ tử 6 túi
 
stupid11's Avatar
 
Tham gia ngày: Dec 2009
Nơi Cư Ngụ: TP.Hồ Chí Minh
Bài gửi: 133
:
Send a message via Yahoo to stupid11
Bạn nhấn phím F1 xem cách sử dụng lệnh Atoi() nhé !!!

Code:
#int_RDA
void ngat_RDA()
{
if (0 != kbhit())
{
data = fgetc();
if (data==':')
dem=0;
else 
dem++; 
luukytu[dem]=data;
putc(data);
}
}
Bạn chỉ putc(data) khi đã nhận được ký tự kết thúc thôi nhé.. trên máy tính bạn gửi 1 chuỗi liên tục xuống mà PIC cũng đồng thời gửi ngược lại...=>xung đột đấy nhé..

Mình góp ý bạn viết như thế này :
Code:
#INT_RDA
void ngat_RDA()
{
char data;
if(kbhit())
{
data=getc();
if(data=='#') // Neu da nhan duoc byte ket thuc thi tien hanh set co Flag //
{
mangdata[index]=data;
index=0;
flag=1;       // co bao nhan duoc byte ket thuc //
putc(data); //bao da nhan duoc chuoi thanh cong //
}
else  // Neu chua nhan duoc byte ket thuc thi dua gia tri data vao mangdata[index] //
{
mangdata[index]=data;
index++;
}
}
}

Trong main() bạn viết
Code:
....
while(flag==1)
{
flag=0;
...cho hiển thị chuỗi nhận được ở đây...
mangdata=0;
}
....

thay đổi nội dung bởi: stupid11, 27-05-2011 lúc 12:10 AM.
stupid11 vẫn chưa có mặt trong diễn đàn   Trả Lời Với Trích Dẫn