View Single Post
Old 25-08-2007, 10:03 AM   #212
Jerry
Đệ tử 5 túi
 
Jerry's Avatar
 
Tham gia ngày: Sep 2006
Bài gửi: 100
:
Trích:
Nguyên văn bởi hieulongan039 View Post
cho minh hỏi tí, khi mình sử dụng các lệnh CALL hoặc GOTO mà nó vượt quá bank thanh ghi mình đang làm việc thì mình xử lí thế nào. còn nữa cho mình hòi thêm trong thanh ghi status co bit IRP và 2 bit RP1: RP2 để chon bank thank ghi, bit IRP = 1, chọn bank 2,3; =0 chọn bank 0,1, vậy nếu mình chi sử dụng IRP ko để chọn 1 lượt 2 bank thì co phải tiện hơn ko, lúc đó đỡ mất công chọn mỗi lần 1 bank khi sử dụng RP1, RP0 (ko bit đúng ko?). Mình đã đọc ở diển đàn rùi về call và goto và đọc trong datasheet nữa nhung chưa hiểu mình nhờ các cao thủ PIC chỉ giúp.
thanks
Bạn phải hỏi là "Khi sử dụng các lệnh CALL và GOTO mà nó vượt quá page mà mình đang làm việc thì phải xử lý thế nào" mới đúng.

Mình trả lời luôn: Bạn dùng lệnh LCALL và LGOTO. Tuy nhiên sau khi gọi như vậy, đến khi return thì nó sẽ quay về không đúng vị trí đã gọi nó. Vì vậy sẽ phải làm như sau:

[code
lcall {Label1} ; gọi đến nhãn Label 1 đặt ở page khác (page nào cũng được)
pagesel $ ; trở về đúng page đang làm việc

lgoto {label2} ; vì là goto nên không cần pagesel nữa
Jerry vẫn chưa có mặt trong diễn đàn