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
-
bởi nhathung1101Muốn đặt gì thì cũng phải có thông tin cơ bản. Việc nhỏ thế này mà phải dấu giếm thì người lớn không thèm làm đâu.
Cho bạn 3 ngày, không là sẽ xóa.-
Channel: Đặt hàng
Hôm qua, 22:02 -
-
Trả lời cho Hỏi cách điều chế xungbởi nhathung1101Schmit Trigger là chuẩn với điều kiện rise > 0,8V.
Bí thì dùng vi với tích gì đó, miễn đừng nói phân kẻo chó ở đây lại sủa nhặng.-
Channel: Kỹ thuật điện tử tương tự
Hôm qua, 21:57 -
-
bởi trungautMình cần đặt hàng thiết kế chế tạo mạch nghịch lưu 3 pha để cài đặt các thuật toán điều khiển động cơ FOC, DTC, ... Xin liên hệ trungaut@gmail.com để bàn chi tiết. Xin cảm ơn diễn dàn đăng tin!
-
Channel: Đặt hàng
Hôm qua, 14:27 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi tuyennhanCách ly dây điện vào , bộ nguồn và đèn khỏi khung xe thì có rò thật cũng không lo bị giật .
-
Channel: Điện tử dành cho người mới bắt đầu
21-12-2024, 08:56 -
-
Trả lời cho Hỏi cách điều chế xungbởi thetungBạn cho qua cái Tờ ri gơ Sờ mít ấy ......
-
Channel: Kỹ thuật điện tử tương tự
16-12-2024, 11:26 -
-
Trả lời cho Hỏi cách điều chế xungbởi nguyendinhvanCó gì mà khó ?
Răn cưa vuông đây
...-
Channel: Kỹ thuật điện tử tương tự
15-12-2024, 23:36 -
-
Trả lời cho hỏi về tụ điệnbởi ndp62Chữ " VENT" không phải là tên hãng sx tụ đâu ,vó thế là 1 ký hiệu liên quan tụ lowesr ?
-
Channel: Điện thanh
15-12-2024, 18:24 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi bqvietTrừ trường hợp công suất (rất) thấp, hầu như tất cả các loại nguồn xung thông thường đều có tụ nhỏ 1 - 10nF nối giữa sơ cấp và thứ cấp, để thoát nhiễu và để chống hiện tượng tương tự tĩnh điện. Vụ này đã thảo luận vài...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 22:02 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi namlangnhoE thử 3 cái nguồn nó đều giống nhau. Nên e làm tiếp địa luôn.
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 19:58 -
-
Trả lời cho Thắc mắc về nguồn tổ ong 12vbởi mèomướpDạ chú sắm con át chống giật và thay nguồn tổ ong khác cho an toàn ạ. Đa phần nguồn xung đều xả nhiễu của bên thứ cấp về điện lưới qua 1 con tụ nên cảm giác tê sẽ khó xác định rõ ràng là do rò điện hay là nó vốn vậy...
-
Channel: Điện tử dành cho người mới bắt đầu
14-12-2024, 18:51 -
Comment