PDA

View Full Version : Hỏi về thanh ghi PCLATH


DIEP
08-07-2010, 10:40 AM
Tôi có thắc mắc về thanh ghi PCLATH : Tôi viết 1 chương trình có địa chỉ vượt FF như vậy thanh ghi PCL không thể trỏ tới nhưng khi mô phỏng bằng MPLAPsim vẫn thấy nó trỏ tới trong lúc đó nhìn cửa sổ WATCH lại không thấy thanh ghi PCLATH thay đổi, vậy khi chạy trên mạch thực không biết có chạy đúng không ? Có cần thiết phải set thêm các bit của thanh ghi PCLATH cho phù hợp ngay lúc code vượt FF không ? Xin cám ơn các bạn

namqn
08-07-2010, 07:27 PM
Tôi có thắc mắc về thanh ghi PCLATH : Tôi viết 1 chương trình có địa chỉ vượt FF như vậy thanh ghi PCL không thể trỏ tới nhưng khi mô phỏng bằng MPLAPsim vẫn thấy nó trỏ tới trong lúc đó nhìn cửa sổ WATCH lại không thấy thanh ghi PCLATH thay đổi, vậy khi chạy trên mạch thực không biết có chạy đúng không ? Có cần thiết phải set thêm các bit của thanh ghi PCLATH cho phù hợp ngay lúc code vượt FF không ? Xin cám ơn các bạn
Bạn chỉ cần xử lý PCLATH khi đoạn code của bạn nằm giữa hai trang, hoặc bạn cần gọi một đoạn chương trình nằm khác trang với đoạn code đang được thực thi. Ranh giới giữa các trang là bội số của 2 kword, do đó trường hợp mà bạn đang mô tả chưa cần phải xử lý PCLATH.

Thân,

DIEP
13-07-2010, 06:19 PM
Cám ơn thầy Nam về nhiều lần đã giải đáp cho tôi . Tôi vẫn còn thắc mắc về thanh ghi PCL
theo tôi hiểu thanh ghi PCL chỉ có 8 bit do vậy chỉ có khả năng trỏ tới địa chỉ FF như vậy khi viết code vượt quá địa chỉ FF dù vẫn nằm trong page 0 thì bằng cách nào MCU có thể trỏ tới được nếu không chủ động thay đổi giá tri thanh ghi PCLATH . Tôi còn thấy mù mờ xin thầy nói chi tiết hơn . Thành thật cám ơn .

namqn
13-07-2010, 11:23 PM
Cám ơn thầy Nam về nhiều lần đã giải đáp cho tôi . Tôi vẫn còn thắc mắc về thanh ghi PCL
theo tôi hiểu thanh ghi PCL chỉ có 8 bit do vậy chỉ có khả năng trỏ tới địa chỉ FF như vậy khi viết code vượt quá địa chỉ FF dù vẫn nằm trong page 0 thì bằng cách nào MCU có thể trỏ tới được nếu không chủ động thay đổi giá tri thanh ghi PCLATH . Tôi còn thấy mù mờ xin thầy nói chi tiết hơn . Thành thật cám ơn .
Thực ra có đến 11-bit thấp của địa chỉ lệnh sẽ được nhúng trong mã lệnh, dẫn đến khả năng định vị (tương đối) tối đa trong phạm vi 2 kword (và do đó dẫn đến biên của các trang bộ nhớ chương trình là bội số của 2 kword). Khi nào mà bạn cần chuyển điều khiển xa hơn phạm vi có thể định vị đó thì các bit 3 và 4 của PCLATH mới cần được cập nhật => xử lý PCLATH. Bạn đọc thêm các trang 10 - 15 của tài liệu được gửi kèm (trình bày trên diễn đàn hơi dài dòng mà không hiệu quả).

Thân,