Vâng, đúng là trong luồng đó em dùng con 16f877A, nó vẫn bị lỗi đấy, lần này em dùng con 16f887, vẫn bị lỗi đấy (thực ra là 2 con này cũng tương tự nhau thôi ạ).
Em đã thử cái hàm ngắt rồi, em lần lượt thêm vào từng dòng lệnh, mới đầu thì không sao, nhưng khi nhiều dòng lệnh được thêm vào hàm ngắt thì nó báo lỗi này ngay.
Em cũng đã xem 1 số tài liệu hướng dẫn cách lập trình, người ta có nói là chương trình cho ngắt không nên quá dài. Em nghĩ cũng có thể là chương trình ngắt của em dài quá (em có sử dụng kiểu biến int32 trong đó) nên nó bị lỗi này.
Em muốn hỏi các bác xem có cách nào khắc phục lỗi này được không, em có ý tưởng là sau 1 lệnh, mình có thể xóa ngay dữ liệu trong stack đi, rồi tiếp tục thực hiện lệnh tiếp theo, như vậy sẽ ko bị tràn stack nữa.
Cái khó là em không biết thao tác thế nào với ý tưởng này. Bác nào biết thì hướng dẫn em với ạ, làm trên C càng tốt, nếu không thì các bác cứ hướng dẫn trên asm cũng được, em có thể chèn đoạn mã asm vào trong C.
Cám ơn các bác nhiều !!!
|