- Cú pháp mở rộng:
3.4.11.3 Bộ nhận USART bất đồng bộ
Khối nhận được trình bày như hình dưới. Dữ liệu nhận trên chân RC7/RX/DT và dồn vào khối khôi phục dữ liệu. Khối khôi phục dữ liệu thật ra là dịch dữ liệu tốc độ cao, hoạt động nhanh gấp 16 lần tốc độ baud. Một khi chế độ bất đồng bộ được chọn thì việc tiếp nhận được phép bằng cách đặt bit CREN (RCSTA<4>).
Trung tâm của bộ nhận là thanh ghi dịch nhận RSR. Sau khi lấy mẫu bit Stop dữ liệu nhận trong RSR được truyền đến thanh ghi RCREG. Nếu việc truyền hoàn tất thì bit cờ RCIF lên một. Ngắt thật sự cho phép hoặc không cho phép bằng cách đặt hoặc xóa bit RCIE. Cờ RCIF chỉ là 1 bit chỉ đọc và được xó bởi phần cứng. Nó được xóa khi thanh ghi RCREG được đọc và hoàn toàn không có dữ liệu. RCREG là 1 thanh ghi bộ đệm đôi (bởi vì nó cho 2 byte dữ liệu có thể truyền và nhận đồng thời đến RCREG FIFO và byte thứ 3 bắt đầu được dịch chuyển đến thanh ghi RSR). Khi phát hiện ra bit Stop của byte thứ 3 này, nếu thanh ghi RCREG vẫn còn đầy thì bit báo lỗi tràn OERR(RCSTA<1>), sẽ lên 1. Những dữ liệu trong RSR sẽ mất đi. Và thanh ghi RCREG có thể được đọc 2 lần để lấy lại 2 byte trong FIFO. Bit báo tràn OERR phải được xóa trong phần mềm.
Hình 3.30: Sơ đồ bộ nhận dữ liệu USART.
Để truyền dữ liệu ta cần làm những bước sau:
1. Khởi tạo thanh ghi SPBRG cho việc chọn sai số tốc độ baud.
2. Cho phép truyền qua port nối tiếp bất đồng bộ bằng cách xóa bit SYNC và cho bit SPEN lên 1.
3. Nếu sử dụng ngắt thì đặt bit RCIE lên 1. 4. Nếu nhận 9-bit thì đặt bit RX9 lên 1.
5. Cho phép nhận bằng cách đặt bit CREN lên 1.
6. Bit Cờ RCIF sẽ được đặt khi bộ nhận hoàn tất và 1 ngắt sẽ được phát đi nếu bit RCIE lên 1.
7. Đọc thanh ghi RCSTA để lấy bit thứ 9.
8. Đọc dữ liệu nhận bằng cách đọc thanh ghi RCREG.
9. Nếu xuất hiện lỗi thì xóa lỗi bằng cách đặt bit CREN lên 1.
10. Nếu sử dụng ngắt thì đặt bit GIE và PEIE của thanh ghi INTCON lên 1.
Bảng 3.23: Thanh ghi hỗ trợ nhận dữ liệu.
CHƯƠNG 4: