Trích:
Nguyên văn bởi Jerry
Theo mình biết thì còn có 1 cách để kiểm tra 1 chương trình có vượt quá 1 page hay không, bạn vào trang www.microchip.com, search dòng chữ "Crossing Page Boundary Detection", trong đó nói rất rõ.
MPLAB không báo lỗi cho bạn biết là không nhảy được tới chương trình con khác Page đâu. Bình thường mỗi khi viết chương trình, mình luôn để chương trình chính và chương trình xử lý ngắt ở Page0, các loại chương trình con khác thì để ở Page 1 hoặc 2 hoặc 3. Để nhảy tới chương trình con khác Page mình hay dùng lệnh LCALL hoặc LGOTO. Dùng PAGESEL cũng được, nhưng như vậy lại phải viết thêm 1 lệnh nên mình thường không dùng
(PAGESEL Subroutine
Call Subroutine)
Tuy nhiên khi dùng Lcall và Lgoto phải chú ý đến bit 4 và bit 3 trong thanh ghi PCLATH. Nếu đang ở Page0, bạn muốn gọi Subroutine ở Page1 thì trong Subroutine đó bạn phải dùng lệnh CLRF PCLATH để sau khi gọi Subroutine, chương trình có thể xử lý được lệnh tiếp theo ở Page0.
Cụ thể :
; Page 0
....
lcall Subroutine
......
; Page 1
Subroutine:
; thực hiện các công việc cần thiết ở đây
clrf PCLATH
return
|
ừ, mình mới post bài xong thì gặp bài của bạn ở đây. Thú vị đó!