🌱 Bài 15. Tìm hiểu về UART trên Vi điều khiển 8051 (Phần 2)
Bài viết này sẽ giới thiệu về các thanh ghi quan trọng khi lập trình UART với vi điều khiển 8051.
➤ Lý thuyết cơ bản về UART và cách UART hoạt động trong vi điều khiển 8051 đã được trình bày trong bài viết trước!
Thanh ghi SBUF - Dữ liệu truyền nhận
Thanh ghi SBUF là thanh ghi 8 bit, sử dụng để chứa dữ liệu trong quá trình truyền và nhận thông qua UART.
Thanh ghi SCON - Cài đặt chế độ UART
Thanh ghi SCON dùng để cài đặt các chế độ truyền nhận và điều khiển hoạt động của UART trong vi điều khiển 8051.
- Bit 7-6: SM0:SM1 - Cài đặt chế độ truyền nhận. Vi điều khiển 8051 hỗ trợ 4 chế độ truyền nhận UART, trong đó chế độ 1 (SM0=0, SM1=1) được sử dụng phổ biến với 8 bit dữ liệu, 1 bit bắt đầu và 1 bit dừng.
- Bit 5: SM2 - Giao tiếp đa bộ xử lý trong chế độ 2 và 3.
- Bit 4: REN - Cho phép nhận dữ liệu.
- Bit 3: TB8 - Truyền bit thứ 9 trong chế độ 2 và 3.
- Bit 2: RB8 - Nhận bit thứ 9 trong chế độ 2 và 3.
- Bit 1-0: TI:RI - Cờ báo ngắt khi truyền hoặc nhận hoàn tất.
Thanh ghi TMOD - Cấu hình Timer cho Baudrate
Thanh ghi TMOD thường được sử dụng cho cấu hình Timer, nhưng trong UART, nó được dùng để cấu hình tốc độ Baudrate.
Tốc độ Baudrate được xác định bởi tần số chu kỳ máy (cấu hình qua Timer). Để biết thêm chi tiết về Timer, bạn có thể tham khảo Bài viết về Timer.
Tính toán Baudrate cho UART
Dưới đây là cách tính Baudrate trong UART dựa trên tần số thạch anh ngoài của vi điều khiển 8051.
Ví dụ tính toán Baudrate
Giả sử tần số thạch anh ngoài là 11.0592 MHz. Qua bộ chia 12, tần số chu kỳ máy sẽ là 921.6 kHz.
Tần số này qua bộ chia 32 (chia 2 + chia16) để UART sử dụng. Tần số còn lại là 921.6 kHz / 32 = 28800 Hz.
Để đạt Baud = 9600 thì cần 28800 chia cho 3. Sử dụng Timer 1, mode 2 (auto reload), Ta nạp TH1 = 253 (Timer tràn sau mỗi 3 chu kỳ, 28800 sẽ được chia 3).
Có thể đặt Baud khác nhau bằng cách thay đổi TH1.
Kết luận
Trong bài này, chúng ta đã tìm hiểu về các thanh ghi cài đặt, cấu hình UART và tính toán Baudrate khi lập trình UART trên 8051. Các bạn có thể thử nghiệm những tính toán và cài đặt này trong các dự án của mình.
Đừng quên theo dõi các bài viết tiếp theo về giao tiếp UART cũng như các chủ đề thú vị khác về vi điều khiển 8051!
>>>>>> Follow ngay <<<<<<<
Để nhận được những bài học miễn phí mới nhất nhé 😊
Chúc các bạn học tập tốt 😊