chào các anh chị em có 1 vấn đề đang bí là em làm truyền nối tiếp từ PC xuống 8051 bằng RS232 nhưng truyền số xuống thì 8051 nó nhận là chuỗi vì vậy làm sao để đổi nó lại thành số ví dụ em muốn truyền số 123 xuống và lưu vào ô nhớ 32H thì fải làm sao, xin chỉ giáo vì mỗi lần nó chỉ truyền từng kí tự, thank các anh chị nhiều
Thông báo
Collapse
No announcement yet.
Đổi chuỗi số thành số trong 8051
Collapse
X
-
chào các anh chị em có 1 vấn đề đang bí là em làm truyền nối tiếp từ PC xuống 8051 bằng RS232 nhưng truyền số xuống thì 8051 nó nhận là chuỗi vì vậy làm sao để đổi nó lại thành số ví dụ em muốn truyền số 123 xuống và lưu vào ô nhớ 32H thì fải làm sao, xin chỉ giáo vì mỗi lần nó chỉ truyền từng kí tự, thank các anh chị nhiều
Đúng là cổng COM của 8051 mỗi lần truyền được 1 byte (thường chọn chế độ này) nhưng mà nó không có biến đổi dữ liệu đâu. Bạn đưa cho nó một byte có nội dung là bao nhiêu thì nó truyền đi đúng như thế.
Lấy ví dụ: Bạn truyền từ PC xuống vi điều khiển số 123 (một trăm hai mươi 3 = 7BH) thì ở dưới VDK bạn sẽ nhận được một byte có nội dung là 123 (hay 7BH).
Vấn đề của bạn có lẽ nằm ở việc hiển thị dữ liệu ra:
- Ở dưới vi điều khiển giả sử bạn muốn hiển thị nội dung của byte này (123) lên LCD hoặc lên LED7 thanh thì bạn không thể để nguyên như thế mà hiển thị được. Bạn phải tách chúng ra thành từng chữ số rồi hiển thị từng chữ số đó lên các vị trí tương ứng.
- Ở trên máy tính cũng thế (tôi không kể các chương trình do các bạn tự viết): Ví dụ chương trình Hyper Terminal của window khi bạn truyền lên một byte (ví dụ 123) thì nó hiển thị ra là ký tự có mã ACSII trùng với byte mà bạn nhận được.
- Theo tôi vấn đề ở đây không phải là nhận dữ liệu sai mà là dữ liệu hiển thị ra không phải là cái mà mình nhận được.
Thân mến!For a better world
-
Nguyên văn bởi Toan.Lv Xem bài viếtBạn mankichi0688 thân mến!
Đúng là cổng COM của 8051 mỗi lần truyền được 1 byte (thường chọn chế độ này) nhưng mà nó không có biến đổi dữ liệu đâu. Bạn đưa cho nó một byte có nội dung là bao nhiêu thì nó truyền đi đúng như thế.
Lấy ví dụ: Bạn truyền từ PC xuống vi điều khiển số 123 (một trăm hai mươi 3 = 7BH) thì ở dưới VDK bạn sẽ nhận được một byte có nội dung là 123 (hay 7BH).
Vấn đề của bạn có lẽ nằm ở việc hiển thị dữ liệu ra:
- Ở dưới vi điều khiển giả sử bạn muốn hiển thị nội dung của byte này (123) lên LCD hoặc lên LED7 thanh thì bạn không thể để nguyên như thế mà hiển thị được. Bạn phải tách chúng ra thành từng chữ số rồi hiển thị từng chữ số đó lên các vị trí tương ứng.
- Ở trên máy tính cũng thế (tôi không kể các chương trình do các bạn tự viết): Ví dụ chương trình Hyper Terminal của window khi bạn truyền lên một byte (ví dụ 123) thì nó hiển thị ra là ký tự có mã ACSII trùng với byte mà bạn nhận được.
- Theo tôi vấn đề ở đây không phải là nhận dữ liệu sai mà là dữ liệu hiển thị ra không phải là cái mà mình nhận được.
Thân mến!
Comment
-
Nguyên văn bởi mankichi0688 Xem bài viếtko là có phải như bạn nói không nhưng lệnh truyền mscomm1.output = "chuỗi cần truyền " trong VB6.0 phải có dấu nháy đôi mới truyền đc mà như vậy thì nó đã là chuỗi rồi mình chỉ muốn truyền xuống số 123 và cất vào 1 ô nhớ nào đó ( vd 32H) là đc, mong bạn chỉ giáo thêm
Cách tổng quát sẽ là chuyển 2 nửa byte thấp và cao thành chuỗi kí tự hexa tương ứng rồi truyền.
Ví dụ như giá trị 23H sẽ thành chuỗi gồm 2 ký tự '2' (mã ASCII 32H) và '3' (mã ASCII 33H) và truyền, bên dưới sau khi nhận được 2 byte sẽ ghép 2 nửa lại bằng lệnh kiểu như sau
Code:HIGH = HIGH - 30H; // '2' mã ASCII 32H - 30H = 2 LOW = LOW - 30H; // '3' mã ASCII 33H - 30H = 3 HIGH = HIGH << 4; // HIGH = 20H HIGH = HIGH OR LOW; // HIGH = 20H OR 03H = 23H;
Comment
Bài viết mới nhất
Collapse
-
Trả lời cho tìm mua đồng hồ vạn năngbởi minh_tri_bk
-
Channel: Điện tử dành cho người mới bắt đầu
hôm nay, 09:30 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi nguyendinhvanHỏi chỗ anh này là biết cách xử lý ngay thôi.
https://www.google.com/search?sca_es...AQtKgLegQIDxAB
Một là cái mach quá bẩn, nên mọi số liệu, giá trị đo, hiện tượng, triệu chứng ... chỉ có giá trị chém gió, tám gẫu và tham khảo.
Hai là...-
Channel: Điện tử công suất
hôm nay, 01:07 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanBác tìm coi mấy cái clip về tai nạn hàng không sẻ sáng tỏ nhiều điều ......
-
Channel: Điện tử công suất
Hôm qua, 11:02 -
-
Trả lời cho Giúp em về mạch MPPT và Solar Panel với!?bởi tuyennhanChính xác mua tại hãng và mua qua đại lý khác nhau rất nhiều về giá và chất lượng ....
-
Channel: Điện tử công suất
Hôm qua, 10:51 -
-
Trả lời cho Xin giúp đỡ mạch chuông trò chơi ạ !!bởi DessrtTôi đồng ý, điều này thực sự thú vị....
-
Channel: Hỗ trợ học tập
31-01-2025, 22:08 -
-
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
30-01-2025, 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
30-01-2025, 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 -
Comment