Trích:
Nguyên văn bởi phandinh
mình đang làm giao tiếp pc <--> pic dùng vb6
đoạn code sau đơn giản chỉ khi nào nhận được data thì đảo trang thái portB.
việc nhận có xảy ra , nhưng nó lai ko thoát ngắt được (cứ đảo portB). mong mọi người giúp
///////////////////////////////////////////////////////////////
...
#INT_rda
void ngat_rs232()
{
portb = ~ portb; /// neu xay ra ngat rs_232 thi dao portb
}
...
|
Tôi cho là vấn đề nằm ở phần code xử lý ngắt của bạn. Về nguyên tắc, trong code xử lý ngắt nhận của module USART, bạn phải đọc thanh ghi đệm RCREG để xóa cờ ngắt RCIF (đây là cách duy nhất để xóa cờ này). Code của bạn chưa thực hiện việc đọc dữ liệu từ thanh ghi RCREG, do đó cờ ngắt RCIF không được xóa sau khi bạn thoát khỏi chương trình xử lý ngắt, dẫn đến ngắt xuất hiện một cách liên tục.
Thân,