đây là code nhận data ở vdk, ko hiểu sao nó chỉ nhận ký tự cuối cùng thôi, a em nào biết vụ này thì chỉ cho t với.
Thông báo
Collapse
No announcement yet.
mình có cái giao tiếp PC mãi mà ko chạy
Collapse
X
-
Theo tui, biến "_data_receive_" dùng để đọc dữ liệu vào không được xử lý trước khi dữ liệu mới nhập vào gây ra tình trạng bị đè mất dữ liệu thôi. Cho nên ký tự cuối cùng k bị đè nên còn lại ấy mà. Ngoài ra cũng cần lưu ý khi truyền ký tự từ PC xuống với kiểu mã ASCII có thể truyền tới 2,3 byte cho 1 ký tự cũng có thể gây ra tình trạng trên.
Comment
-
Cũng đã đọc qua và thấy chỗ này:
PHP Code:
void nhan_data(void) interrupt 4
{
while(RI==1)
{
RI=0;
_data_receive_=SBUF;
}
}
Lẽ ra sau khi nhận data mới xóa cờ RI chứ !
Làm như bạn có thể data sẽ bị mất trước khi được sao lưu vào bộ nhớ hoặc thanh ghi nào đó.
Thử làm lại xem có được không nhé !
- Chương trình xử lý ngắt cổng nối tiếp này cũng chưa ổn. Do cổng nối tiếp của 8051 chỉ có 1 vector ngắt mà có đến 2 nguyên nhân gây ra ngắt cho nên khi vào ngắt cần phải kiểm tra xem ngắt xảy ra là do nguyên nhân nào. Bạn hoasua_2005 có thể tham khảo đoạn chương trình sau:
void SIO_Interrupt(void) interrupt SIO_VECTOR
{
if (RI)
{
RI = 0;//Nếu ngắt xảy ra do nhận dữ liệu thì xóa RI cho lần
//nhận tiếp theo
//Làm gì thì làm ở đây
}
else
{
TI = 0;//Nếu ngắt do truyền thì xóa TI cho lần sau
}
}
Thân.
Toản.lvFor a better world
Comment
-
- Chương trình do bạn viết chỉ nhận được byte cuối là đúng rồi.
- Như các bạn khác nói ở trên, chương trình bạn viết do lỗi ở cái biến i
- Bạn dùng biến i để quy định cho số phần tử trong cái mảng có 30 phần tử của bạn, bạn quy định ban đầu i = 0, ở chương trình chính, khi có byte đầu tiên chuyển xuống VXL thực hiện nhận byte đó bằng chương trình ngắt, sau đó bạn đưa dữ liệu byte đầu tiên đã nhận đc vào mảng vị trí i=0 của mảng, tức là vị trí đầu mảng "mang[i]=_data_receive_". hết byte đầu tiên.
- Đến byte tiếp theo vi xử tiếp tục nhận dữ liệu, sau đó nó lại đưa dữ liệu vào vị trí mang[0], do biến i của bạn lúc này vẫn bằng 0, như vậy byte đầu tiên đã không còn. bạn muốn dữ lại byte đầu tiên trong mảng thì bạn phải tăng biến i lên chứ.
- Theo mình bạn nên viết thế này:
void nhan_data(void) interrupt 4
{
while(RI==1)
{
RI=0;
_data_receive_=SBUF; //bỏ cái nì đi
mang[i] = SBUF;
i++;
if i>30 //mảng có tối đa 30 phần tử
{
i = 0; //xóa biến i về 0 khi nào lưu đầy mảng
}
}
}
- Như vậy bạn sẽ lưu đc tối đa 30byte truyền xuống cho VXL
- Trong chương trình chính bạn chỉ cần thực hiện đọc từ mảng ra, vậy là ok.
- Bạn thử xem nhé
Comment
-
Phần chỉnh sửa hay quá.nếu không bạn có thể tham khảo thêm ở đây
http://dientuvietnam.net/forums/showthread.php?t=28595NBHVDNTG_C5!no trace
Comment
-
Xong rồi thì vẽ thêm hoa lá cành tí nhỉ ?
Khi nhận được tin nhắn thì dưới LCD hiện màn hình thông báo:
hàng 1: " Have new sms "
hàng 2: hiển thị 1 chữ OK và Cancel cho phép xem tin nhắn hoặc hủy bỏ không xem trở về màn hình Desktop.
Nếu bấm OK thì vào xem nội dun tin nhắn, sử dụng phím Up và Down nếu màn hình không đủ hiển thị nội dung tin nhắn.
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho Năm mới dientuvietnam.netbởi mèomướpDạ năm mới cháu xin kính chúc ông, bà, cô, dì, chú, bác, anh, chị, em, các bạn, các cháu... trong diễn đàn sức khỏe dồi dào, gặp nhìu may mắn và thành công...
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 05:42 -
-
Trả lời cho Năm mới dientuvietnam.netbởi nhathung1101Chúc cả nhà ăn no mặc ấm, quần lúc có lúc không.
-
Channel: Tâm tình dân kỹ thuật
Hôm qua, 00:02 -
-
Trả lời cho Năm mới dientuvietnam.netbởi vandong1111Năm mới 2025 cháu chúc các chú, các bác mạnh khỏe, vui vẻ, gặp nhiều may mắn.
-
Channel: Tâm tình dân kỹ thuật
29-01-2025, 20:59 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi bqvietNói một cách xây dựng thì kiểu đồng hồ kiêm kẹp dòng NJTY3266 mà bạn Mèo đề cập là đúng nhu cầu người hỏi rồi. Một số cửa hàng bán trên 200ng, vài sàn thương mại điện tử bán dưới - thế là đúng nhu cầu về giá. Nếu khéo săn...
-
Channel: Điện tử dành cho người mới bắt đầu
27-01-2025, 20:02 -
-
Trả lời cho tìm mua đồng hồ vạn năngbởi nhathung1101Đa năng còn chưa dùng hết, nếu không biết cách dùng.
200k thì hơi khó mua, nhưng 50k chắc là có. Cứ bảo bán cho tôi cái đồng hồ hỏng.-
Channel: Điện tử dành cho người mới bắt đầu
26-01-2025, 23:21 -
-
Trả lời cho Sửa bộ nguồn DC 60V 45Abởi nhathung1101Lão Đinh Vặn học giải phương trình hồi đi trẻ mà. Mẫu giáo học lập trình AI rồi. Lớp lão ấy gần lớp em nên em biết....
-
Channel: Điện tử công suất
26-01-2025, 23:11 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nhathung1101Vậy chú đã hỏi hãng SIEMEN chưa? Tại sao cái PLC S7-200 cổ lỗ mà họ vẫn thiết kế riêng cho thị trường TQ với chữ SMART? Thậm chí phần mềm riêng để đọc file ngu.smart?
Vấn đề không còn là công nghệ "cốt lõi" nữa, mà là giá thành quyết định. Ham rẻ là trả giá mà....-
Channel: Điện tử công suất
26-01-2025, 23:01 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi vi van phamĐồng ý với Bqv.
50 năm làm nghề, tôi đã chứng kiến 3 lần máy x quang mới nhập từ nước ngoài về bị lỗi.
- Lần thứ 1 máy xq của Pháp được ks Pháp lằp đặt bị lỗi 1 con didode, đưa cho ks Pháp con didode khác cùng mã số, ông...-
Channel: Điện tử công suất
26-01-2025, 08:09 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi mèomướpDạ chú dinh... muốn sửa lỗi cho hãng thì chú cứ gửi những hình ảnh, video cho họ đi ạ, chú có thể tìm thông tin của những lãnh đạo bên ấy để gửi thì sẽ hiệu quả hơn ạ. Về tổng quan thì họ sẽ ko phản hồi rõ ràng đâu ạ, vì nhận...
-
Channel: Điện tử công suất
26-01-2025, 06:19 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi bqvietCuối năm bàn thêm chuyện to hơn chút, đấy là 2 vụ rơi đám 737 đời mới và trục trặc ở cả tá chiếc khác. Ngay cả những thứ tưởng như cao siêu sang xịn thật thì vẫn có thể gặp trường hợp oái oăm như thường. Từ hồi đó bqv đã thấy khó hiểu làm sao lại đẻ ra đám MCAS quái thai đến thế được. Rồi...
-
Channel: Điện tử công suất
24-01-2025, 19:40 -
Comment