Hỏi về ưu tiên ngắt trong 16F887

  • Thread starter bloodelf
  • Start date
B

bloodelf

Guest
Kính gửi mọi người,
Mình có một vài thứ thắc mắc về Timer0 và Timer1 Module như sau :
1/ 2 module này khi kích hoạt trong cùng 1 chương trình thì nó sẽ chạy song song với nhau có phải không ? Nếu phải thì hàm "void interrupt isr()" sẽ bị kích hoạt bởi cờ báo ngắt nào ?
2/ <Chờ câu 1 được ai đó giúp >:cool:
 

tungbk

Cố Vấn CLB
Staff member
Trong PÍC6f887 không có chế độ ưu tiên ngắt(Interrupt Priority) như 8051 vì vậy một khi có bất kì ngắt nào xuất hiện thì con trỏ sẽ nhảy vào 1 chương trình phục vụ ngắt duy nhất đồng thời bit GIE(ngắt toàn cục )sẽ bị xóa bởi phần mềm (và được set lại sau khi thoát khỏi ctrinh phục vụ ngắt) để đảm bảo không nhận thêm bất kì ngắt nào khi ctrinh phục vụ ngắt đang thực hiện.
DO đó để ưu tiên hay kiểm tra ngắt (PIc16f887) từ nguồn nào là yêu cầu đối với mỗi người lập trình tự sắp xếp thứ tự code trong trình phục vụ ngắt.
Vài ý kiến mong các bạn đóng góp thêm.:)
 
B

bloodelf

Guest
?????

Mình vẫn chưa hiểu ý bạn lắm. Mình vẫn chưa học 8501 :) đại loại là mình chỉ biết khi cờ báo ngắt của Timer0 hay 1 phất lên, thì PIC sẽ chạy chương trình trong hàm "void interrupt isr()" . Vậy nếu mình khai báo cả 2 module và cả 2 cờ báo ngắt,. Vậy thì cơ chết hoạt động trong hàm interrupt isr() như thế nào ?_?
 

tungbk

Cố Vấn CLB
Staff member
Khi bất kì cờ ngắt nào được set lên chương trình sẽ nhảy vào interrupt ỉsr() để thực hiện .Xong rồi nó nhảy ra hàm main chổ đang thực hiện dở dang làm tiếp.
(lúc nãy gửi rồi mà sao chưa thấy type lại lần nữa cho chắc)
 
Top