Trích:
Nguyên văn bởi tinhgiac_vp
...
Cho em hỏi thêm là hàm ngắt RDA hình như ngắt liên tục không dừng. Em disable_interrupts(int_rda) thì nó không chạy được hàm lcd_putc(), hình như nó tắt timer gì đó. Các cao thủ giải thích vấn đề này giúp em với, và khắc phục nó như thế nào?
|
Câu hỏi giống như thế này đã được tôi trả lời ở một luồng khác, nhưng tôi sẽ nói lại. Với PIC 8-bit, khi có ngắt nhận dữ liệu từ USART, bạn cần đọc thanh ghi RCREG để giải phóng nó và xóa cờ ngắt RCIF (đây là cách duy nhất để xóa cờ ngắt này). Nếu bạn không thực hiện việc đọc RCREG (đọc vào một biến tạm nào đó nếu không cần dùng giá trị thanh ghi) thì cờ ngắt RCIF sẽ không được xóa, dẫn đến ngắt nhận dữ liệu từ USART liên tục như bạn đã thấy.
Thân,