Почему INDF не передает присвоенное значение FSR - PullRequest
1 голос
/ 06 мая 2020

Я пытаюсь узнать, как работает косвенная адресация. В таблице данных на PIC16F877A говорится: «При адресации этого места используется содержимое FSR для адресации памяти данных (не физического регистра)» при обращении к INDF. Итак, я попробовал пример super basi c:

movlw   D'26' 
movwf   FSR 
movf    INDF, W 

Тем не менее, когда я отлаживаю, значение, передаваемое в FSR, равно 26, как и ожидалось, но значение из INDF, передаваемое в W, равно 0 вместо 26 . Почему это?

1 Ответ

3 голосов
/ 06 мая 2020

INDF читает адрес, предоставленный FSR. Таким образом, ваш код читает регистр RCREG по адресу 0x1A (D'26 '):

movlw   D'26' 
movwf   FSR 
movf    INDF, W   ;read the value in the physical address D'26'

Вам нужно было выбрать банк, из которого вы хотите читать, с помощью RP0 и RP1 биты, посмотрите таблицу, это зависит от контроллера.

...