PIC Vietnam

PIC Vietnam (http://www.picvietnam.com/forum/index.php)
-   Cơ bản về vi điều khiển và PIC (http://www.picvietnam.com/forum/forumdisplay.php?f=8)
-   -   cho mình hỏi về vượt quá lệnh CALL / Return ?? (http://www.picvietnam.com/forum/showthread.php?t=7282)

unisa 31-10-2010 10:51 AM

cho mình hỏi về vượt quá lệnh CALL / Return ??
 
Chả là mình đang làm đồ án có giao tiếp với LCD, mình dùng các câu lệnh sau để giao tiếp LCD cho dễ quản lý
Code:

TXT_REPASS
    ADDWF        PCL,1
    DT"Retype PASSWORD:",0

TXT_PASS
    ADDWF        PCL,1
    DT"Type PASSWORD:  ",0

TXT_WRONGPASS
    ADDWF        PCL,1
    DT"Login failed !  ",0

TXT_TIMES
    ADDWF        PCL,1
    DT"You have 4 times",0

TXT_RIGHTPASS
    ADDWF        PCL,1
    DT"Login successful",0

TXT_1UNCLOCK
    ADDWF        PCL,1
    DT"[1] Unlock      ",0

TXT_2CHANGEPASS
    ADDWF        PCL,1
    DT"[2] Change Pass ",0

TXT_Unlocking
    ADDWF        PCL,1
    DT"  Unlocking !  ",0

TXT_LOCKED
    ADDWF        PCL,1
    DT"System Locked ! ",0

TXT_DONTMATH
    ADDWF        PCL,1
    DT"Pass donnot math",0

Tuy nhiên, khi mình sử dụng thì call những dòng đầu tốt (VD call TXT_PASS ...) nhưng khi call những dòng cuối TXT_LOCKED ... thì dịch tốt nhưng khi chạy mô phỏng, Proteus báo lỗi:
Code:

Stack overflow executing CALL instuction
Stack underflow executing RETURN instruction

mình nghĩ là do lệnh CALL những dòng dưới vượt quá giới hạn, theo datasheet
CALL k với 0< k < 2047
Mình đang vướng ở đây chưa biết giải quyết làm sao, mình làm rất nhiều câu thông báo hiển thị trên LCD nhưng mới được mấy cau đã báo lỗi thế này. Mong các bạn hướng dẫn cách giải quyết giúp mình với.
Thanks mọi người nhiều nha :o

unisa 31-10-2010 12:07 PM

Sau khi ngâm kíu mình biết lỗi trên do 1 trong những nguyên nhân:
dùng lệnh CALL mà không có RETURN, lệnh call lồng lệnh call quá 8 lận sẽ vượt quá Stack của PIC16. Tuy nhiên ở đây mình dùng kỹ thuật tra bảng và lệnh trả về là RETLW, luôn có lệnh trả về Return sau lệnh call thì làm sao mà lỗi. Mà lỗi tại sao lại mỗi phần dưới trong khi phần trên không bị.


Múi giờ GMT. Hiện tại là 12:57 PM.

Tên diễn đàn: vBulletin Version 3.8.11
Được sáng lập bởi Đoàn Hiệp.
Copyright © PIC Vietnam